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

最近更新

2025年开学典礼精彩发言稿最新篇 25页

2025年开学典礼作文范文 6页

物业装修合同范本 6页

2025年度精密仪器进出口买卖合同规范 9页

2025年建议书保护树木最新五篇精选范文 8页

2025年度科技研发用地租赁服务协议 9页

物业合同解析:前期服务协议关键条款 7页

2025年度离婚协议附带环境保护责任与生态补偿.. 8页

2025年常见运动伤害预防与急救攻略 20页

2025年居家血压监测攻略 43页

2025年度皮革制品出口合同样本 9页

版施工维修合同安全管理规定 7页

版房屋修缮工程合同 6页

版建筑包工不包料合同模板 6页

2025年度生物科技出资与合作研发合同书 8页

2025年度生物制药企业员工劳务合同电子版 8页

2025年度生态建筑刮腻子材料研发与应用协议 9页

2025年度珠宝首饰店铺商品及品牌代理权转让合.. 9页

2025年度现代中式家装纯设计合作协议 9页

2025年度环保设备故障诊断与维修服务合同 8页

2025年度环保监测机构协议单位员工住宿保障协.. 8页

2025年七线数据总线故障诊断接口解析 32页

2025年度特种钢材供货及加工服务协议 9页

2025年度物流运输合同管理考核细则与物流效率.. 9页

2025年度物业管理公司钥匙托管与门禁系统升级.. 9页

2025年度海洋能源开发租赁合同 8页

2025年度法律服务外包合同终止协议书 7页

2025年度汽车配件租赁合同分期付款约定书 9页

2025年度汽车售后服务合同纠纷处理协议 7页

工程质量控制中试验检测的重要性 24页