电子商务是一种强运营类产品,平时就是各种各样促销活动,更是有着618、双11这种超大型促销活动,每年备战事情肯定是有重复的,但真正做好每一件事依然不是一件容易的事,再有就是大促意义估计是很多人很少思考的。
从第一次接触时的期待与期望,到来临时的流量洪峰,到系统稳定度过,或者系统存在瑕疵,是很多人第一次难忘的经历。其实大促是一种练兵让每个人都保持一种打仗状态,不懈怠,才能以后真正有事情时候能够胜任。
大促让很多人实现集中购物,对于后端程序就是带来巨大流量挑战以及数据存储量的挑战。对于这么多次的备战我们应该思考、深入思考的一个问题是备战的本质是什么?目的是什么?
个人对于备战本质理解是保证系统稳定,为用户提供优质流畅购物体验。二稳定不是一件简单的事,流量变大之后量变导致质变最终导致系统稳定变成一个巨大的挑战。
要保证系统稳定核心是两个方面,一个是存储、一个是计算,以前思考的更多是服务计算层面稳定。存储容量提前预计存储扩容等等也是很关键的一件事情。因为存储关系着系统稳定的根本,起着决定性因素。
存储选型存储选型中推荐的两本书,下面连接可以进行购买,两本质量极高的书。
豆瓣评分 7.9
豆瓣评分 9.7
存储备战更多需要提前规划容量,一个是压测存储能够支持流量。两个重要得点,容量需要根据业务按照大促去预估整体增加多少,这个是比较难的,因为实时程序是实时去写的数据,这一块从架构层面是比较难去预估的,离线hive数据是比较好去预估的。存储备战前边做的不够细,需要有一定的暂停避免实时程序写满存储。
大的流量对于整个体系,网络、负载均衡、服务、存储等等方方面面压力都很大。对于流量,流量相比于平时有十倍甚至更多增长,对于服务稳定挑战巨大,需要每个环节都是稳定的,需要从手机客户端到一层层服务上下游都是稳定整个业务才是稳定的。流量预估准确是后续工作很重要的一个前提。
摘机压测,通过多次不断拆除线上部分机器,并且观察cpu、内存、tp99等情况,当cpu或内存过高或者服务tp99达到400、500基本就可以确认当前机器吞吐量最大值,简单来看就是预估总量除以机器数量就是需要机器数量。
单机压测,单机压测压测到单机吞吐量最大值,但是实际大促时仅仅有单机压测是不够的。会有一个点就是流量变大以后,外部组建比如数据库、分布式缓存、网络、磁盘都会承受更大压力,而这是单机压测压测不出来的,这就需要 联合压测,联合压测对全链路进行整体压测从而找到系统可能出现瓶颈地方,最终确保系统稳定。
限流服务过载保护,是和单机压测结合的,需要对超出预期流量进行简化逻辑处理,避免导致机器负载过高,从而影响整个服务稳定。
业务降级梳理,降级是大促出现意外情况一种备案,一般不会使用,比如线上逻辑很复杂,那么我们就采取简单通用数据作为兜底,或者和客户端约定好已空值为兜底方案,避免出现意外情况导致服务不可用影响用户体验。
降级预案演练,降级预案需要进行实际提前操作一下,然后看一下app或者网站降级后的情况,避免实际去用的时候降级不可用,从而导致只能在大促时只能眼睁睁看着系统垮掉。
隔离,隔离是一种挺重要的技术。隔离多个线程池避免相互影响,隔离多个业务存储避免相互影响,隔离存储集群避免不同部门间相互影响。隔离是一种重要技术。
备战看似每年都重复,但需要我们去思考,怎么样去减少重复工作量,怎么样用新的方式去解决问题,以及大促本身是一次练兵机会,也是团队精神凝聚,避免懈怠的一个很好的手段与方式,而这个人认为是很重要的一个意义。
原文 https://mp.weixin.qq.com/s/V79JZyK4h_wKpGJr-PrVfA