1 / 13
文档名称:

java高并发的解决方案.docx

格式:docx   大小:21KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java高并发的解决方案.docx

上传人:kang19821012 2019/2/1 文件大小:21 KB

下载得到文件列表

java高并发的解决方案.docx

相关文档

文档介绍

文档介绍:java高并发的解决方案对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题!下面是小编分享的,欢迎大家阅读! 【java高并发的解决方案】一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的服务器上进行操作。我推荐的是M-M-Slaves方式,2个主Mysql,多个Slaves,需要注意的是,虽然有2个Master,但是同时只有1个是Active,我们可以在一定时候切换。之所以用2个M,是保证M不会又成为系统的SPOF。 Slaves可以进一步负载均衡,可以结合LVS,从而将select操作适当的平衡到不同的slaves上。以上架构可以抗衡到一定量的负载,但是随着用户进一步增加,你的用户表数据超过1千万,这时那个M变成了SPOF。你不能任意扩充Slaves,否则复制同步的开销将直线上升,怎么办?我的方法是表分区,从业务层面上进行分区。最简单的,以用户数据为例。根据一定的切分方式,比如id,切分到不同的数据库集群去。全局数据库用于meta数据的查询。缺点是每次查询,会增加一次,比如你要查一个用户nightsailer,你首先要到全局数据库群找到nightsailer对应的clusterid,然后再到指定的cluster找到nightsailer的实际数据。每个cluster可以用m-m方式,或者m-m-slaves方式。这是一个可以扩展的结构,随着负载的增加,你可以简单的增加新的mysqlcluster进去。网站HTML静态化解决方案当一个Servlet资源请求到达WEB服务器之后我们会填充指定的JSP页面来响应请求: HTTP请求---Web服务器---Servlet--业务逻辑处理--访问数据--填充JSP--响应请求 HTML静态化之后: HTTP请求---Web服务器---Servlet--HTML--响应请求缓存、负载均衡、存储、队列 ,我一般用memcached来做缓存集群,一般来说部署10台左右就差不多(10g内存池)。需要注意一点,千万不能用使用 swap,最好关闭linux的swap。 。可能上面说缓存的时候,有人第一想的是页面静态化,所谓的静态html,我认为这是常识,不属于要点了。页面的静态化随之带来的是静态服务的负载均衡和加速。我认为Lighttped+Squid是最好的方式了。 LVSlighttped====>squid(s)====lighttpd 上面是我经常用的。注意,我没有用apache,除非特定的需求,否则我不部署apache,因为我一般用php-fastcgi配合lighttpd,性能比apache+mod_php要强很多。 squid的使用可以解决文件的同步等等问题,但是需要注意,你要很好的监控缓存的命中率,尽可能的提高的90%以上。 squid和lighttped也有很多的话题要讨论,这里不赘述。 。也是一个大问题,一种是小文件的存储,比如图片这类。另一种是大文件的存储,比如搜索引擎的索引,一般单文件都超过2g以上。小文件的存储最简单的方法是结合lighttpd来进行分布。或者干脆使用Redhat的GFS,优点是应用透明,缺点是费用较高。我是指你购买盘阵的问题。我的项目中,存储量是2-10Tb,我采用了分布式存储。这里要解决文件的复制和冗余。这样每个文件有不同的冗余,这方面可以参考google的gfs的论文。大文件的存储,可以参考nutch的方案,现在已经独立为hadoop子项目。(你可以googleit) 。将并发线程转换为单线程,如果用java的concurrentCollection类去做,原理就是启动一个线程,跑一个Queue,并发的时候,任务压入Queue,线程轮训读取这个Queue,然后一个个顺序执行。一旦并发转成单线程,那么其中一个线程一旦出现性能问题,必然整个处理都会放慢。所以在单线程中的任何操作绝对不能涉及到IO处理。那数据库操作怎么办? 增加缓存。这个思路很简单,直接从内存读取,必然会快。至于写、更新操作,采用类似的思路,把操作提交给一个Queue,然后单独跑一个Thread去一个个获取插库。这样保证了“大循环”中不涉及到IO操作。大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以

最近更新

异构网络文本聚类-全面剖析 36页

一建港航施工组织设计 68页

一年级上册数学期中复习课件 38页

使接地电阻表达到额定转速的一种方法 2页

低温半导体器件模拟中若干问题与对策 2页

传感器在中国各省市的研究生产分布状况 2页

企业间“代持股”的法律与财税问题思考 2页

企业内部审计信息化建设现状与对策研究 2页

以粉末为原料制备NiTi薄膜涂层的研究进展 2页

从资金运动规律论记帐方法——与张以宽同志商.. 2页

深圳市工业厂房租赁合同文本 6页

介绍一种开放式拦污栅的设计与应用 2页

人文地理学学术讨论会在杭州召开 2页

派遣人员劳务合同范本官方版 6页

汽车配件采购与供应合同协议 5页

云南保山河坝子金矿矿床成因探讨 2页

《现代物流学》说课 21页

水利工程建设项目施工合同 7页

民营医院招聘劳动合同模板合同 6页

毕业生实习与就业合同延期模板 5页

正规南京市房屋租赁合同模板 5页

中国船舶工业总公司计算机应用工作的回顾与展.. 2页

中国海相沉积土微结构研究和工程性质 2页

中国利用外商直接投资存在的问题及对策 2页

两西农业基本建设的战略、规划和发展道路初探.. 2页

东北地区啤酒产销情况的预测和对策 2页

不用CO 2的锅炉效率计算方法 2页

上海综合保税区向自由贸易区转型模式研究 2页

2025年幼儿园教师自我介绍面试 11页

三网融合背景下的微电影式广告发展探究 2页