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

最近更新

10kV城区配网故障分析及防范措施 2页

1000MW超超临界机组汽温多模型预测控制研究 2页

1,5-二羟基蒽醌及其稀土配合物的红外光谱研究.. 2页

00Cr13Ni6MoNb马氏体时效不锈钢研究 2页

建筑材料跨国运输协议3篇 54页

电工理论计考试选择题题库-合肥 166页

安全监管创新与责任担当 38页

财政概念与职能 33页

图神经网络在模糊测试生成中的应用分析-全面剖.. 25页

神经元再生机制-全面剖析 26页

高铁快运动车组关键技术需求研究 3页

医疗设备网络化安全-全面剖析 35页

高瓦斯煤矿通风技术要点的探讨 3页

在2025年第一季度经济季度经济运行调度会暨重.. 7页

高压电气设备“状态检修”浅析 3页

绿色技术在区域经济发展中的作用-全面剖析 26页

误差的基本概念 46页

林业可持续发展策略研究-全面剖析 26页

大数据在商业地产项目运营中的风险预测-全面剖.. 26页

语法填空专题1记叙文型语法填空 42页

智能家居系统与物联网的整合-全面剖析 26页

间隙对两轴液压振动试验系统动力学影响的研究.. 3页

语文版七年级语文上册《空城计》 24页

2.1 大气的组成和垂直分层 5页

铜锌锡硫薄膜材料及其器件应用研究进展 3页

铁炭微电解处理沼液的可行性研究 3页

钢管外防腐主机模头烟尘净化系统的设计与应用.. 3页

胆囊息肉的早期检测技术-全面剖析 27页

金桥煤矿矿渣型堆积边坡稳定性分析与评价 3页

车辆维修完过后的协议 5页