seckill
cdn(内容分发网络)
理解CDN的关键概念就是,用户在cdn获取到的数据,不用再访问我们的数据库
一些js依赖直接用公网(互联网)的CDN,自己开发的一些页面也做静态化处理推送到CDN。用户在CDN获取到的数据不需要再访问我们的服务器,动静态分离可以降低服务器请求量
Nginx
Nginx:作为http服务器,响应客户请求,为后端的servlet容器做反向代理,以达到负载均衡的效果。
Redis
用来做我们服务端的缓存 来达到热点数据的快速存取 1秒钟可以承受10万个qps,(qps,是query per second)每次查询次。多个redis组成集群,可以到100w个qps. 所以后端缓存可以用业务系统控制。
Redis一致性的维护 1,超时穿透 2,主动更新。缓存半小时,超时就直接穿透到mysql。mysql更新时主动更新下redis
Mysql
MySQL:保证秒杀过程的数据一致性与完整性
Tddl 做分库分表
常见分表策略:分库分表的策略相对于前边两种复杂一些,一种常见的路由策略如下:
1、中间变量 = user_id
2、库序号 = 取整(中间变量/每个库的表数量);
3、表序号 = 中间变量%每个库的表数量;
例如:数据库有256 个,每一个库中有1024个数据表,用户的user_id=262145,按照上述的路由策略,可得:
1、中间变量 = 262145
2、库序号 = 取整(1/1024)= 0;
3、表序号 = 1%1024 = 1;
![这里写图片描述](https://img-blog.csdn.net/20170709212709200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVmZW5nbGlubGlu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)