鏖战双11,电商架构大起底

更新时间:2014-11-11 09:54:35点击次数:1134次

摘要:2014年双11异常火爆,不管是销售数字,还是用户体验,这次全民购物狂潮再次刷新了过去的所有记录。而在这一切背后,需要稳定高效的系统架构设计来提供有力支持。本文揭示了国内各大知名电商架构设计的最佳技术实践。

【导读】自2009年11月11日,淘宝商城(现名天猫)拉开网购狂欢节的序幕,各大电商的促销浪潮此起彼伏。此时的电商大战不仅是价格之争,更是技术的较量。如何设计电商峰值系统来更好地满足用户蜂拥而至的访问,如何在海量数据处理中实时发现有效信息并转化为商机,成为众多电商企业密切关注的问题。


2014年双11异常火爆。天猫、京东、当当、小米、1号店、海尔商城、唯品会、蘑菇街、麦包包等国内各大电商企业,展开了更为激烈的竞争,而稳定高效的系统架构设计是保障这一系列竞争顺利进行的关键。本专题收集了各大知名电商的架构设计实践。让大家一起来切身感受,这场购物狂欢背后的技术狂欢。


目录


快稳炫:电商峰值系统架构三字诀。 双11这样的大型促销活动带来的是流量暴涨,在高访问量的冲击下,电商系统会受到以下挑战:瞬间访问量可能是平时的几十倍;网络带宽被占满,用户响应很慢;机器负载高甚至宕机;数据库压力过大导致服务不可用。此时,如何设计电商峰值系统来更好地满足用户蜂拥而至的访问,如何在海量数据处理中实时发现有效信息并转化为商机,成为众多电商架构师都在认真思考的问题。解决这一问题的核心思路:采用分而治之的思想,大系统小做,小系统大做。浓缩一下就是三个字:快、稳、炫。


当当网系统分级与海量信息动态发布实践。摸清业务模式和活动特点,是设计和运维高峰值电商系统,即高伸缩性系统的重中之重。但从另一个角度来说,在没有动态弹性部署的前提下,过度的设计和服务器部署是一种浪费,特别是硬件非常有限的寿命会带来每年巨大的成本摊销。当当网根据业务发展速度和业务运营规律,结合多年的经验,制定的系统伸缩性的设计原则和硬件常备策略使各流程能够直接应对日常5倍业务量的上涨。通过增加服务器的方式,能够应对10倍业务量上涨。而如果要应对10倍以上的上涨,则需要提前做有针对性的系统优化。但无论当前承受的业务量是否超过了设计范围,都不能影响设计范围内业务量的正常处理。


“米粉节”背后的故事——小米网抢购系统开发实践。 今年4月的“米粉节”对小米网来说意义非凡,是其彻底重构后迎来的一次全面压力测试,涉及网站前端、后台系统、仓储物流、售后等各环节。此时,高并发的负载能力、稳定性、准确性等已不是问题,灵活性与可运营性成为关键。


京东峰值系统设计。京东是如何在双11大促时,保证用户有平滑流畅的体验,且系统不会出现异常的呢?京东的业务种类繁多,系统非常庞大,外部需要对接供应商、消费者和第三方商家三大板块。内部系统包括了商品供应链中除商品设计和生产外的几乎所有环节,包括登录、交易、后台、供应链、仓配、客服等。除此之外,京东系统交互强,各个功能模块之间关联性强,牵一发而动全身,做任何修改都需要慎之又慎。因此,京东电商系统的设计是围绕系统稳定性、可靠性、高并发和可扩展性为核心开展的。


海尔电商峰值系统架构设计最佳实践。多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模、全方位的系统检阅,例如双11、周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚至几十倍,产生的峰值对平台形成极其强烈的冲击,对电商平台的架构带来巨大的考验。 因此,对电商平台的规划和架构工作不仅要高瞻远瞩,而且要细致入微,否则将导致平台无法满足高速增长的业务发展,细微处的失误也可能造成严重后果,不仅影响业务指标的实现,还可能导致对系统进行重新架构,劳时费力又伤钱。


唯品会峰值系统的架构演变。唯品会每年最大力度的促销活动在4月19日,就是419(For One Night),意在告诉唯品会用户只有这一晚有这么大的折扣力度。唯品会是一个闪购网站,用户来得越早,越能买到又便宜又好的东西,所以在大促的一开始,会涌入大量用户,形成系统流量峰值。本文总结了唯品会419时日志平台遇到的问题和解决方案,同时根据实践经验,整理了在面对峰值前要做的准备。


1号店电商峰值与流式计算。京电商行业的很多业务,强调访问处理的实时性,包括电商搜索引擎、基于用户购买行为的实时商品推荐和针对网站流量的监控及反作弊等功能。这些业务要求处 理行为达到秒级甚至毫秒级的时延,从而促进了以Storm为代表的流式计算系统的推广和应用。1号店结合自己的业务需求,在力求降低成本的前提下,最终采纳Storm计算框架来实现自己的分布式流计算平台。本文中详细阐释了这一过程中的最佳技术实践。


蘑菇街如何在双11中创造99.99%的可用性。 双11购物节来临前夕,蘑菇街积极备战,保障这种大型促销活动能正常有序地进行,确保99.99%以上的可用性。大致思路是:首先,清晰的架构划分可以大大减轻稳定性工作量;其次,功夫要尽量在平时做足,避免总是出临时解决方案;再次,普及稳定性思维,注意细节;最后,出现问题,先快速恢复再查找根源。


麦包包峰值架构实践:履单流程的弹性架构。 OMS(订单管理系统)是电商ERP系统中的核心模块,其中的订单履行流程(履单流程)是消费者购物过程中有直接感知的最后一段,关系到用户体验,其正确性和时效性必须得到保证。同时履单流程也是电商系统中直接面对销售高峰带来的短时间内剧增的数据量的子系统之一,如何在流量骤增10倍甚至更多的情况下保证OMS的正常服务,是每一家电商密切关注和不断改进的重点,也是本文分享的核心经验。



传统企业电商峰值系统应对实践(商派架构实践)。在一个典型的电商系统中,核心对象主要有三个: 会员、商品和订单。整个系统主要是为消费者服务,运营模型以流量与用户量为核心,流量以导入新客户为主,用户量代表着老客户的贡献。双11这样的场景要求我们对系统进行合理的峰值架构设计,以保证业务的顺利开展。那么一个能够应对短时间流量暴涨的电商系统,在同时考虑成本因素的情况下,具体会遇到哪些瓶颈,主要需要解决哪些层面的技术障碍呢?


电商峰值监控经验谈(基调网络实践)。在一年一度的“双11”购物狂欢节来临时,要确保用户享受“快、稳、炫”的抢购体验,技术工程师们需要解决瞬间高并发的诸多问题,如海量数据处理、网络传输产生的延迟和负载均衡,等等。那么,如何在第一时间了解出现的问题并及时解决问题呢?一套完整的应用性能管理解决方案在电商峰值架构中将发挥无比重要的作用,有了性能管理的保护伞,就可将“宕机”永远留在襁褓中。


节选


蘑菇街如何在双11中创造99.99%的可用性


双11购物节即将来临,蘑菇街积极备战各种大型 促销活动,为全国性的互联网购物节贡献自己的 一份力量。保障这种大型促销活动能正常有序地 进行,确保99.99%以上的可用性,是我们需要面 对的一个严峻考验。因此,我们的工作主要依据 以下几个思路开展。



该做什么的就做什么


保障整个系统的可用性和稳定性,第一步需要做 的就是,使整体架构清晰化、层次化。那么,对系统进行合理拆分,是最直观的选择。从业务和技术角度出发,遵循SRP(Single Responsibility Principle)原则,合理拆分系统中的各个模块,明确每个模块的职责。这样可以方便快速定位和排查问题,甚至可以有针对性地对每个模块进行优化。


拆分方式基本上分为两种,路由拆分和物理拆 分。所谓路由拆分,就是按照请求特征,将请求流量分摊到两个或多个同质的集群里面;而物理拆分,就是在路由拆分的基础上,按照业务和技术上的特征,将同质的集群进行彻底拆分,成为非同质集群。


下面以交易流程为例,来看一下如何操作拆分。交易流程主要包括购物车、下单、支付等几个环节,具体的拆分结果,如图1所示。


  

                                                                          图1  交易流程拆分结果 

经过分析,整个交易流程按照架构层次可以分解为展示层、业务层及外围应用三块内容,这三部分由于职责差异比较大,所以先按照物理拆分,让层次清晰。


再来看展示层,由于存在一些共享的东西,如页面元素等,做物理拆分,会引入额外的成本,所以路由拆分是不错的选择。


接着来看业务层。这一层是很容易按照角色和业务场景进行拆分的,例如,交易管理服务是给管理人员提供管理功能的,需要考虑权限、内控等问题;交易核心服务是给业务主流程提供主要业务功能,需要考虑可用性;交易查询服务是读取交易数据的主要途径,需要考虑易用性;交易网关服务主要是对接外部支付渠道,需要考虑连通性。很明显,这一层由于自身的差异性比较大,所以采用物理拆分是上上策。


最后来看外围应用,其中包括后台管理、日志查 询、业务监控及交易超时控制等,这些应用基本上都是在底层系统平台(管理平台、日志平台、监 控平台以及任务平台)进行二次开发而成的,所以天生就适合进行物理拆分。


从上面不难看出,拆分是一个细活,可以选择的 维度很多,拆分方式也比较讲究。良好的拆分方案,会让系统更加清晰明了,每个模块该做什么的就做什么。这样应对大型促销活动时,可以游刃有余地按照模块特征进行优化。


小结


本文讲述了蘑菇街在确保可用性和稳定性实践中的一些工作思路,但并不是说做好以上几点,就能够保证网站在大型促销活动中的99.99%可用性和稳定性,只能算是在实践过程中得到的一些经验。


总结一下在可用性和稳定性工作中的一些感悟。 首先,清晰的架构划分可以大大减轻稳定性工作量;其次,功夫要尽量在平时做足,避免总是出临 时解决方案;再次,普及稳定性思维,注意细节;最后,出现问题,先快速恢复再查找根源。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息