《当当网系统分级与海量信息动态发布实践》读后感
当当网根据业务发展速度和业务运营规律,结合多年的经验,制定的系统伸缩性的设计原则和硬件常备策略使各流程能够直接应对日常5倍业务量的上涨。通过增加服务器的方式,能够应对10倍业务量上涨。而如果要应对10倍以上的上涨,则需要提前做有针对性的系统优化。但无论当前承受的业务量是否超过了设计范围,都不能影响设计范围内业务量的正常处理。
设计和部署大流量、高并发系统的技术方案选择比较多,业内有很多成功经验和案例。但根据我们的经验,设计高峰值的网上零售业电商应用系统通常要面对以下几大难点。
1、应用架构复杂,业务发展快,迭代速度快,各系统之间盘根错节,历史包袱重。不仅有牵一发而动全身的风险,更有边缘case出错影响主流程处理、耗尽过多资源的隐患。
2、从前台到后台的业务流程长,用例多。在能承受的最大峰值上,存在短板效应。设计实现时要面面俱到。
3、通常促销活动的持续时间短而集中,前期推广活动已经启动,在活动期间,短暂的系统不可用,也会带来惨重的销售损失与负面影响,没有亡羊补牢的机会。要确保系统的稳定性,平时的工作就要做足。
针对这几大难点,有以下几大应对策略。
1、基于SOA架构理念,降低系统耦合性,接口定义清晰明确,保证独立子系统的健壮性高,降低故障跨系统扩散风险,从而将伸缩性的困难逐步分解到各个系统。
2、对系统进行分级,集中力量,突出重点系统。当当网从卖场到交易流程均属于一级系统,这部分系统直接关乎用户体验和订单量。在系统稳定性和可靠性等指标上,设计标准高于后台系统。
3、优先考虑用异步处理代替同步处理,做好系统异常的降级方案,保证有限的合格服务。
在描述电商平台峰值系统的设计之前,通过图1可简单了解当当网电商平台的几大组成系统:卖场系统,促销、会员系统,商品管理系统,交易系统,订单管理系统,仓储与调拨系统,物流与配送系统,客服与退换货系统等。
系统分级
对于电商网站,用户体验是第一位的,系统稳定运行是保证用户良好体验的基础。在资源有限的条件下,采取对系统进行级别划分的方式,对高级别系统保持重点关注,在设计、部署、监控等方面确保高级别系统具备良好的伸缩性、健壮性和敏感度,能够应对电商业务中不确定的极限峰值冲击。
依此标准,当当网的一级系统主要包括卖场系统、商品详情、价格系统、库存系统、促销系统、购物车、交易系统、支付系统、会员系统等。二级系统则包括商品信息系统、订单系统、ERP、仓储系统、物流与干线运输系统等。三级系统主要是结算系统、报表系统,以及运营、活动管理类系统。
解耦与SOA实践
经过多年实践,当当网逐步完成系统架构的SOA化改造,并通过SOA化,实现了服务解耦与高内聚,简化了架构复杂度,这是主流零售型电商平台通常选择的道路。基于分布式的服务使系统具备更强的伸缩性和扩展性,系统瓶颈更易定位和优化,满足业务快速增长的需要。
海量动态信息流的快速发布
即便已经对不同类型的商品信息数据流进行了差异化处理,仍然不能排除短时间内会发生大量数据造成系统同步阻塞,影响正常业务运营操作的及时发布。极端情况下,超出系统处理能力还可能导致系统崩溃。为解决此类问题,采用批量、异步、分流、限流等手段进行处理。