您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
快稳炫:电商峰值系统架构三字诀
 
作者 盛国军 火龙果软件 发布于 2014-11-07
   次浏览      
 

随着电商促销规模越来越大,竞争点已不仅是价格,而延生到背后的技术:如何设计峰值系统来应对爆发流量,如何实时发现有效信息转化为商机,成为关键点。本文结合快稳炫三字诀,讲述电商峰值系统架构设计的最佳实践。

2009年11月11日,淘宝商城“光棍节”开启了网购促销全新规模的序幕,随后各大电商的促销浪潮此起彼伏且规模越来越大。在用户畅享购物狂欢的背后,电商系统承受着严峻的考验。电商大战已不仅是价格之争,更是后台和技术的较量。大型促销活动带来的是流量暴涨,在高访问量的冲击下,电商系统会受到以下挑战:瞬间访问量可能是平时的几十倍;网络带宽被占满,用户响应很慢;机器负载高甚至宕机;数据库压力过大导致服务不可用。

时间就是金钱,效率就是生命。如何设计电商峰值系统来更好地满足用户蜂拥而至的访问,如何在海量数据处理中实时发现有效信息并转化为商机,成为众多电商架构师都在认真思考的问题。针对峰值现象,各家电商陆续推出了自己的解决方案。设计良好的系统架构犹如电商平台的发动引擎,需要拥有非凡的动力系统以满足极致的用户体验和强劲的峰值承载力。

本期《程序员》杂志在基于海尔电商技术沙龙第九期研讨内容的基础上,组织了京东、当当、小米、一号店、海尔商城、唯品会、蘑菇街、麦包包等国内知名电商企业,以及商派、基调网络等相关服务公司,进行了电商峰值系统架构设计的最佳技术实践专题分享。

纵观上述各家电商峰值系统的架构设计,由于电商规模、商业模式以及技术选型的不同,其技术方案多彩多样、百花齐放,着实令人兴奋,全面展现了互联网技术开放和创新的特征。下面从这些架构设计方案中,抽象和总结出其共性相通的核心思路,进行一些概述。核心思路集中表现为:采用分而治之的思想,大系统小做,小系统大做。浓缩一下就是三个字:快、稳、炫。

快——天下武功,唯快不破

快的目标是确保用户端快速流畅的体验。概括来说,可以通过以下技术手段实现快的目标。

对前端页面的处理

  • 将有效期较长的静态页面通过CDN(Content Delivery Network,内容分发网络)缓存到离用户最近的服务节点上。
  • 将有效期较短或者需要对失效时间做最大限度控制的静态页面,通过类似于Memcache的高速缓存系统或类似于Squid的反向代理系统缓存在服务端。
  • 将混合型页面(如商品单页)进行动静分离,静态数据(如商品介绍等)缓存在本地,动态数据(如可用库存和促销价格等)异步进行加载。

对后端数据的处理

  • 数据库SQL慢查询优化。例如,重构相关索引,对where子句进行优化等。
  • 数据库读写分离。例如,MySQL的Master/Slave结构。
  • 数据库分库分表。这是减轻单个数据库服务器压力的有效手段,不过同时也会带来系统的复杂性,是鱼和熊掌之间的关系。

对网络传输的处理

  • 执行负载均衡,第四层交换按实现分类,分为硬件实现和软件实现。通过硬件实现一般都由专业的硬件厂商作为商业解决方案提供,如F5等,这些产品非常昂贵,但能够提供非常优秀的性能和很灵活的管理能力。通过软件实现,如LVS等,虽然性能比专业硬件稍差,但软件实现配置起来更灵活。

稳——不管风吹浪打,胜似闲庭信步

稳的目标是确保系统端稳定可靠的服务。无论在任何情况下,都要做到尽可能不宕机、不出错。要做到这一点,可以在以下几个方面做文章。

系统解耦

拆分业务模块和功能模块,使得每个模块都做到高度内聚,然后用SOA,通过严格定义模块之间的服务接口,做到模块间的松散耦合。在一个模块发生问题时尽可能不影响其他模块的执行,尤其不能影响关键业务的执行。同时,可以对单个模块进行横向扩展,尤其是对关键的业务模块,以确保关键业务一定不能受影响。需要注意的是,模块划分的粒度应进行权衡,过细的粒度虽然可以带来更多的灵活性,但也会带来编程的复杂性。

有损服务

根据CAP(Consistency一致性,Availability可用性,Partition Tolerance分区容忍性)理论,三者不可得兼。对于电商平台,其中多数应用并不需要很强的一致性,因此合理的方式是用牺牲部分一致性来换取较高的可用性。有损服务(服务降级)就是一种提高系统稳定性和可用性的有效实践。在电商系统中,要优先保证类目浏览、产品单页和订单流程能够执行。

数据库减负

我们知道数据库是所有节点中最不容易扩展的,复杂的SQL查询条件会导致数据库负担过重,此时可用增加应用计算中间服务器的方式,通过高效简洁的SQL查询,应用计算中间服务器一次性地从数据库中取出最小全集的数据行,然后在内存中利用算法剔除冗余数据,以应用算法的复杂度换数据库负担的方式。

炫——运筹于帷幄之中,决胜于千里之外

炫的目标是确保业务端实时高效的调度。从日志收集和实时计算入手,通过对用户行为数据的可视化(图1),及时发现问题和洞察商机,调度应用系统,对用户多样化和个性化的需求进行智能引导。

图1  用户行为数据可视化

审视当下畅想未来,随着云计算的兴起和成熟以及智能移动设备的普及,电子商务与这两者深度结合,必将引起一场激动人心的变革。各种设备上的在线商城将是主流的商业模式,目前分类式的购物体验平台将演变成一个高度集成以用户为中心的全流程价值交互体验云平台。该云平台有四大核心组成部分,环环相扣形成一个闭环(图2)。

图2  全流程价值交互体验云平台

通过云屏(TouchApp),打造流连忘返的体验;通过云网(DataLink),提供随时随地的服务;通过云芯(FansTree),进行细致入微的洞察;通过云播(Broadcast),推送引人入胜的营销。

最后,请你放下手中的所有工作,找个阳光明媚安静的地方,泡杯香浓的咖啡,细细品味本期各大电商为你带来的最佳技术实践。

   
次浏览       
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践


锐安科技 软件架构设计方法
成都 嵌入式软件架构设计
上海汽车 嵌入式软件架构设计
北京 软件架构设计
上海 软件架构设计案例与实践
北京 架构设计方法案例与实践
深圳 架构设计方法案例与实践
嵌入式软件架构设计—高级实践
更多...