秒杀系统设计
2024-06-12 16:12:49 0 举报
秒杀系统架构
作者其他创作
大纲/内容
4要1不要
数据库交互
链接要短
并发量大
夫妇依赖
依赖要少
应用、数据库压力大
不要单点
难控制超卖
缩短链路
服务无状态化
请求要少
数据要少
必须的系统和服务,可以给系统进行分级
秒杀系统
设计要点:1.将请求尽量拦截在系统上游,html尽量静态化,部署到cdn上面。按钮及时设置为不可用,禁止用户重复提交请求。2.设置页面缓存,针对同一个页面和uid一段时间内返回缓存页面。3.数据用缓存抗,不直接落到数据库。4.读数据的时候不做强一致性教研,写数据的时候再做。5.在每台物理机上也缓存商品信息等等变动不大的相关的数据6.像商品中的标题和描述这些本身不变的会在秒杀开始之前全量推送到秒杀机器上并一直缓存直到秒杀结束。7.像库存这种动态数据会采用被动失效的方式缓存一定时间(一般是数秒),失效后再去Tair缓存拉取最新的数据。8.如果允许的话,用异步的模式,等缓存都落库之后再返回结果。9.如果允许的话,增加答题教研等验证措施。其他业务和技术保障措施:1.业务隔离。把秒杀做成一种营销活动,卖家要参加秒杀这种营销活动需要单独报名,从技术上来说,卖家报名后对我们来说就是已知热点,当真正开始时我们可以提前做好预热。2.系统隔离。系统隔离更多是运行时的隔离,可以通过分组部署的方式和另外 99% 分开。秒杀还申请了单独的域名,目的也是让请求落到不同的集群中。3.数据隔离。秒杀所调用的数据大部分都是热数据,比如会启用单独 cache 集群或 MySQL 数据库来放热点数据,目前也是不想0.01%的数据影响另外99.99%。另外需要复习缓存穿透、雪崩等等问题,主要的流量都落在了缓存数据库上,需要针对缓存数据库的高可用作保障。短链接生成这个应该是比较公认的方案了:分布式ID生成器产生IDID转62进制字符串记录数据库,根据业务要求确定过期时间,可以保留部分永久链接主要难点在于分布式ID生成。鉴于短链一般没有严格递增的需求,可以使用预先分发一个号段,然后生成的方式。
页面简单化
额外请求要少(CSS\\JS\\图片)
0 条评论
下一页