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还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以

最近更新

遥感影像处理与分析-第2篇-全面剖析 31页

大数据驱动下的需求预测-全面剖析 36页

互联网平台垄断问题研究-全面剖析 31页

《统计学参数估计》 70页

催化精馏技术在烷基化硫转移中的应用研究 2页

信息安全体系下的东营智慧城市建设研究 2页

侏罗纪煤系富含水性地层冻结凿井的研究 2页

低碳经济下上市公司碳会计信息披露研究 2页

《高效能人士的七个习惯》读后感 15页

优化我国住房保障体系的财税政策探讨 2页

焊接工程师技术服务合同 6页

演艺圈演员聘用合同改革方案 6页

港口集装箱装卸合同 7页

从联邦德国设计方法学到中国现代设计法 2页

从整定图像谈中间品种的方案探索 2页

从价值分析观点谈谈如何经济合理选购普通车床.. 2页

介绍一种核定专用备件储备定额的方法 2页

海洋工程建设项目合作合同 6页

法律新规:五种合同无效的情形及应对策略 7页

沈阳市养殖场饲料供应合同 6页

汽车融资租赁合同书 6页

汽车消费贷款合同范本 7页

二元机翼非定常压强分布测量初步研究 2页

九龙牦牛产肉性能的研究(二报) 2页

水利工程合同协议模板doc 6页

中高频条件下三种铁耗计算方法的对比分析 2页

毕业生就业三方合同协议书 6页

中小企业货币资金管理存在的问题及对策 2页

正式商品房销售合同模板 6页

中国石油新一代三次采油技术获突破 2页