Java性能优化打造亿级流量秒杀系统:0.项目目标
一、背景:
在抢购等场景下,服务会收到很大的流量请求。此时如果这些流量完全交由业务服务从数据库查询再去响应,具有两大弊端:
- 数据库连接过多导致崩溃
- 响应迟缓,影响用户体验
因此打算采用缓存的思路来应对大流量场景。
缓存之处有两个,
- 一个是对页面的静态资源进行缓存,这样可以减轻主服务的压力。动态信息可以通过Ajax获取。
- 另一个是对数据库中部分数据进行缓存,减轻数据库压力,并且可以提高操作数据库的速度。
二、初步具体方案为:
- 使用Nginx进行反向代理与缓存静态资源
- 在数据库侧添加Redis,用于支持动态数据的获取
架构图如下:
考虑 Redis 的主从或者一致性Hash 算法做分片的 Redis 集群;使用缓存这种架构要求应用对数据的一致性要求不是很高;比如像下订单这种要落地的数据不适合用 Redis 存储,但是订单的读取可以使用缓存。
https://wiki.jikexueyuan.com/project/nginx-lua/http.html
三、高级方案:
将单DB架构升级为Twemproxy组织Redis集群,Atlas组织Mysql集群。
===>>>
Ref: https://wiki.jikexueyuan.com/project/nginx-lua/http.html
四、学习抓手:
学习课程:《聚焦Java性能优化 打造亿级流量秒杀系统》
https://coding.imooc.com/class/338.html