【整理】JavaWeb开发的高并发优化思路
2017-08-19 15:06
344 查看
一、瓶颈分析
用户高并发场景下(几万级别的QPS)
可能出现的瓶颈分析:
Java虚拟机访问内存:每秒大约1亿次内存读写(不是瓶颈)
MySQL数据库IO:每秒大约4万次读写(不是瓶颈)
网络延迟(毫秒级)+JVM的GC产生全局暂停(毫秒级)+MySQL行级锁(可能是瓶颈)
二、多用户对数据库中同一行数据抢占修改
原子计数器(放入Redis缓存:用户名----操作时间)
记录行为(读取Redis缓存,放入分布式MQ消息队列,从队列头部读取最先进入队列的数据:用户A-----操作时间A)
最终修改数据(在MySQL中修改一行数据)
三、优化流程(CDN,Redis,MySQL)
用户流量主要产生在:静态资源、动态资源(频繁变更的数据、不频繁变更的数据)
(1)对静态资源(JS页面,CSS等静态页面)优化:
放入CDN(内容分发网络)节点中,CDN部署在离用户最近的网络节点(用户----》城域网)
一旦命中CDN结点,获取资源后,不再从后端服务器获取。
(2)对不频繁变更的动态资源(定期更新,由服务器决定更新周期:彩票、天气预报)优化:
放入Redis(NoSQL)缓存服务器(集群)中,抵抗百万级的QPS
(3)对频繁变更的动态资源(用户点赞、评论、订单、访问量)
减少MySQL行级锁持有时间(update同一行数据的语句执行时间尽量短)
将Java虚拟机服务器的事务管理移植到MySQL服务器上运行(在MySQL上commit/rollback),减少GC、网络时延。
(4)MySQL优化:分表分库(TDDL框架),读写分离
四、集群化部署
服务端开发主流架构(非微服务)
CDN WebService:Nginx+Jetty/tomcat Redis/NoSQL MySQL
五、人员安排
开发:前后端(前端工程师、后端工程师)
测试:Jmeter等压力测试(测试工程师)
DBA:分表分库、数据库优化(数据库工程师)
运维:服务器日志、服务器运行情况、服务器维护(运维工程师)
4000
用户高并发场景下(几万级别的QPS)
可能出现的瓶颈分析:
Java虚拟机访问内存:每秒大约1亿次内存读写(不是瓶颈)
MySQL数据库IO:每秒大约4万次读写(不是瓶颈)
网络延迟(毫秒级)+JVM的GC产生全局暂停(毫秒级)+MySQL行级锁(可能是瓶颈)
二、多用户对数据库中同一行数据抢占修改
原子计数器(放入Redis缓存:用户名----操作时间)
记录行为(读取Redis缓存,放入分布式MQ消息队列,从队列头部读取最先进入队列的数据:用户A-----操作时间A)
最终修改数据(在MySQL中修改一行数据)
三、优化流程(CDN,Redis,MySQL)
用户流量主要产生在:静态资源、动态资源(频繁变更的数据、不频繁变更的数据)
(1)对静态资源(JS页面,CSS等静态页面)优化:
放入CDN(内容分发网络)节点中,CDN部署在离用户最近的网络节点(用户----》城域网)
一旦命中CDN结点,获取资源后,不再从后端服务器获取。
(2)对不频繁变更的动态资源(定期更新,由服务器决定更新周期:彩票、天气预报)优化:
放入Redis(NoSQL)缓存服务器(集群)中,抵抗百万级的QPS
(3)对频繁变更的动态资源(用户点赞、评论、订单、访问量)
减少MySQL行级锁持有时间(update同一行数据的语句执行时间尽量短)
将Java虚拟机服务器的事务管理移植到MySQL服务器上运行(在MySQL上commit/rollback),减少GC、网络时延。
(4)MySQL优化:分表分库(TDDL框架),读写分离
四、集群化部署
服务端开发主流架构(非微服务)
CDN WebService:Nginx+Jetty/tomcat Redis/NoSQL MySQL
五、人员安排
开发:前后端(前端工程师、后端工程师)
测试:Jmeter等压力测试(测试工程师)
DBA:分表分库、数据库优化(数据库工程师)
运维:服务器日志、服务器运行情况、服务器维护(运维工程师)
4000
相关文章推荐
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- javaweb开发最新整理实用可用的五大框架精简jar包(SSHID)
- java web开发 高并发处理
- Java Web开发 之HTTP状态码整理
- java web开发 高并发处理
- 校验类 {java web 本次开发代码整理}
- WEB开发系统异常设计思路整理
- java web开发 高并发处理
- Java Web开发 之JavaBean整理
- 关于java web开发中乱码问题的解决思路
- java web开发 高并发处理
- java Web开发必备资料整理
- Java Web 高性能开发,第 3 部分: 网站优化实战
- 学习整理-Java Web 第一天 配置Java Web 开发环境
- java web开发总结(二):linux + apache2.2(prefork模式) + jk1.2.26 + tomcat6负载均衡配置优化
- java web开发 处理高并发的方案
- java web开发 高并发处理
- java web开发从0开始学 知识 点整理集[主要来自书籍,上图]
- Java Web 开发 优化点之一