Day81 订单交易全链路优化

多级缓存

  1. CDN资源
  2. nginx lvs和shared dict模块,提前将缓存数据放到nginx的shared模块.
    上限大概几百m的样子
  3. nginx中的缓存会有失效时间,失效后从jvm本地缓存直接读取,
    本地也没有的时候才从redis中读取(少网络IO).

tps压力过大方案

  1. 加服务器
  2. 验证码错峰值
  3. 秒杀单独的做成一张表
  4. redis做预扣,扣完直接返回,不用有后续磁盘或者网络 IO的开销.
  5. 抢购完毕后
    zk通知nginx做标志位刷新,zk watch机制刷新jvm本地缓存标志。
    避免后续的无效请求.
  6. 下单后用RocketMQ削峰,订单系统再慢慢完成下单操作.
    支付超时则取消该订单.

总结

缓存离用户越近越好
顺序 cdn,nginx,redis lua,jvm层面

  1. 上游拦请求 nginx层面高效识别jwt令牌
  2. 多级缓存保护DB
  3. 中间件削峰
  4. websocket通知用户下单成功消息
  5. 冷热请求数据分离.
  6. ES Redis MySql 数据同步

你可能感兴趣的:(Day81 订单交易全链路优化)