分布式高可用系列
以电商大促为背景,讲解系统限流,降级熔断,负载均衡,稳定性指标,系统监控和日志系统等方面内容
讨论在面对电商大促,秒杀抢购等高并发的业务场景时,有哪些高可用的保障手段。
从双十一限制退款说起
你在双十一零点下单的过程中,有没有经历过排队等待,或者系统不可用的情况呢?
历年的双十一活动,当天往往都是不支持退款的
以限制退款为例
- 从业务角度考虑,活动期间流量巨大,需要节省平台和商家的人力资源,节省库存盘点等工作
- 退款处理不是核心业务,在服务治理中,这是典型的业务降级,保护系统,对非核心业务做降低处理
电商大促的高可用保障
电商大促高可用活动保障的核心是什么呢? 稳定性
服务可用性是对服务等级协议 SLA 的描述
假设一个核心链路依赖 10 个服务,这 10 个服务的可用性是 99.99%
那这个核心链路的可用性是 99.99% 的 10 次方,也就是 99.9%
在生产环境中还要考虑服务发布,部署等导致的停机情况,可用性还会降低
在电商大促时,如果要保证高可用性可以从哪些方面入手呢?
海量用户请求,万倍日常流量
应用 Docker 容器化编排,分布式需要快速扩展集群
容器化编排操作简单,可以快速扩展实例流量突增
典型的秒杀系统请求曲线,秒杀系统的流量是在瞬时达到一个峰值,流量曲线非常陡峭
通过独立热点集群部署,消息队列削峰,相关活动商品预热缓存等方案来解决
秒杀活动会提前给用户预告商品
可以提前把相关商品数据都加载到缓存中,通过缓存来支撑海量请求
秒杀活动中如何预热商品数据,可以更好地支持前端请求?
高并发,支撑海量用户请求
在系统设计时没有考虑过高并发的情况
在电商业务中,可以会出现用户订单丢失,库存扣减异常,超卖等问题
需要在前期系统设计时,考虑到并发系统容易出现等问题
比如高并发时的 ThreadLocal 数据异常,数据库高并发的锁冲突,死锁等问题
高可用常见的手段有缓存,消息队列避免服务雪崩问题,链路问题,故障传导
微服务调用通常是通过一个链路的形式进行,各个服务之间是一个调用链
某个服务提供者宕机,可能导致整个链路上的连续失败,最后可能导致业务系统停止服务
避免服务雪崩问题,可以从限流,降级,熔断,隔离入手
总结
本文以双十一电商大促作为背景
- 总结了电商大促的业务特点,业务开发中保证稳定性的关键
- 简单介绍了高可用技术保障的几个常见手段
包括消息队里技术,缓存技术,以及限流,降级,熔断,隔离,负载均衡等手动