2009年11月11日,淘宝商城“光棍节”开启了网购促销全新规模的序幕,随后各大电商的促销浪潮此起彼伏且规模越来越大。在用户畅享购物狂欢的背后,电商系统承受着严峻的考验。电商大战已不仅是价格之争,更是后台和技术的较量。大型促销活动带来的是流量暴涨,在高访问量的冲击下,电商系统会受到以下挑战:瞬间访问量可能是平时的几十倍;网络带宽被占满,用户响应很慢;机器负载高甚至宕机;数据库压力过大导致服务不可用。
时间就是金钱,效率就是生命。如何设计电商峰值系统来更好地满足用户蜂拥而至的访问,如何在海量数据处理中实时发现有效信息并转化为商机,成为众多电商架构师都在认真思考的问题。针对峰值现象,各家电商陆续推出了自己的解决方案。设计良好的系统架构犹如电商平台的发动引擎,需要拥有非凡的动力系统以满足极致的用户体验和强劲的峰值承载力。
本期《程序员》杂志在基于海尔电商技术沙龙第九期研讨内容的基础上,组织了京东、当当、小米、一号店、海尔商城、唯品会、蘑菇街、麦包包等国内知名电商企业,以及商派、听云等相关服务公司,进行了电商峰值系统架构设计的最佳技术实践专题分享。
纵观上述各家电商峰值系统的架构设计,由于电商规模、商业模式以及技术选型的不同,其技术方案多彩多样、百花齐放,着实令人兴奋,全面展现了互联网技术开放和创新的特征。下面从这些架构设计方案中,抽象和总结出其共性相通的核心思路,进行一些概述。核心思路集中表现为:采用分而治之的思想,大系统小做,小系统大做。浓缩一下就是三个字:快、稳、炫。
快的目标是确保用户端快速流畅的体验。概括来说,可以通过以下技术手段实现快的目标。
稳的目标是确保系统端稳定可靠的服务。无论在任何情况下,都要做到尽可能不宕机、不出错。要做到这一点,可以在以下几个方面做文章。
拆分业务模块和功能模块,使得每个模块都做到高度内聚,然后用SOA,通过严格定义模块之间的服务接口,做到模块间的松散耦合。在一个模块发生问题时尽可能不影响其他模块的执行,尤其不能影响关键业务的执行。同时,可以对单个模块进行横向扩展,尤其是对关键的业务模块,以确保关键业务一定不能受影响。需要注意的是,模块划分的粒度应进行权衡,过细的粒度虽然可以带来更多的灵活性,但也会带来编程的复杂性。
根据CAP(Consistency一致性,Availability可用性,Partition Tolerance分区容忍性)理论,三者不可得兼。对于电商平台,其中多数应用并不需要很强的一致性,因此合理的方式是用牺牲部分一致性来换取较高的可用性。有损服务(服务降级)就是一种提高系统稳定性和可用性的有效实践。在电商系统中,要优先保证类目浏览、产品单页和订单流程能够执行。
我们知道数据库是所有节点中最不容易扩展的,复杂的SQL查询条件会导致数据库负担过重,此时可用增加应用计算中间服务器的方式,通过高效简洁的SQL查询,应用计算中间服务器一次性地从数据库中取出最小全集的数据行,然后在内存中利用算法剔除冗余数据,以应用算法的复杂度换数据库负担的方式。
炫的目标是确保业务端实时高效的调度。从日志收集和实时计算入手,通过对用户行为数据的可视化(图1),及时发现问题和洞察商机,调度应用系统,对用户多样化和个性化的需求进行智能引导。
图1 用户行为数据可视化
审视当下畅想未来,随着云计算的兴起和成熟以及智能移动设备的普及,电子商务与这两者深度结合,必将引起一场激动人心的变革。各种设备上的在线商城将是主流的商业模式,目前分类式的购物体验平台将演变成一个高度集成以用户为中心的全流程价值交互体验云平台。该云平台有四大核心组成部分,环环相扣形成一个闭环(图2)。
图2 全流程价值交互体验云平台
通过云屏(TouchApp),打造流连忘返的体验;通过云网(DataLink),提供随时随地的服务;通过云芯(FansTree),进行细致入微的洞察;通过云播(Broadcast),推送引人入胜的营销。
最后,请你放下手中的所有工作,找个阳光明媚安静的地方,泡杯香浓的咖啡,细细品味本期各大电商为你带来的最佳技术实践。
作者盛国军,花名毛尖,海尔电商CTO。有十多年电商从业经历,历任8848系统架构师、麦考林首席架构师、麦包包首席架构师。用技术驱动以用户为中心的全流程价值。
本文为《程序员》原创文章,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
阅读和此文章类似的: 程序员专区