一、瓶颈分析
用户高并发场景下(几万级别的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+ tomcat Redis/NoSQL MySQL

五、人员安排
开发:前后端(前端工程师、后端工程师)
测试:Jmeter等压力测试(测试工程师)
DBA:分表分库、数据库优化(数据库工程师)
运维:服务器日志、服务器运行情况、服务器维护(运维工程师)