一、背景
有别于社交网络、搜索和游戏等网站,电商网站的用户流量具有操作性强、随时令变化等特点。
在欧美国家,Black Friday和Cyber Monday标志着节假日消费的高峰。影响电商流量峰值的主要因素是抢购、促销和恶意攻击,尤其是京东618店庆和双11等大规模的促销活动。高流量、高并发情况下,如何保证整个系统的可靠性和稳定性,是众多电商企业研发团队都在思考的问题。
京东的业务种类繁多,涉及SKU几千万种,这使得系统庞大,外部需要对接供应商、消费者和第三方商家三大板块。内部系统包括了商品供应链中除商品设计和生产外的几乎所有环节,包括登录、交易、后台、供应链、仓配、客服等。所有这些涉及大小系统几千个,造就了一个极其复杂庞大的体系。
除此之外,京东系统交互强,各个功能模块之间关联性强,牵一发而动全身,做任何修改都需要慎之又慎。
因此,一切优化方案都以保持系统稳定为前提。
二、京东峰值系统的设计角度
1、性能提升
2、流量控制
3、灾备降级
4、压测预案
三、性能提升
1、切分业务系统:
将京东的整个业务体系拆分为几个相对独立的子系统SSO、交易平台、POP平台、订单下传系统、WMS和仓储配送。每个子系统又可细分为若干部分,逐级简化,直至可操作可优化的层级。
2、分布式:
分布式的交易系统是电商的未来。
分布式系统解决两大难题:
(1)、提高用户体验
(2)、增强容错能力
由于分布式系统设计时就会留有相当的流量增长空间,所以当一处数据中心饱和时,可以将其余的流量切入其他相对宽松的数据中心去,从而达到互为备份、互相支持的目的。
与此同时,由于为提供用户就近服务,所以减少了网络延时,页面反应速度加快了。
3、API服务:
API服务化可以高效统一的管理组件,最好由一个训练有素的团队集中管理这些组件并对外提供接口服务,将软件的使用复杂性隐藏起来,调用的是简单利索的API。
让专业人员去处理复杂逻辑,确保系统的可用性和扩展性,既能大大降低出错概率,又能实现规模效益。
4、架构代码优化:
一个合理的电商系统架构是与一家公司的研发水平和技术管理水平密不可分的,这直接决定了可支撑峰值流量的多少和未来能达到的高度。
选取适合自身发展的框架,既能充分发挥其效能,又可节约资源。代码优化也能提高效能,例如对于SQL语句的优化,能更好地利用索引;Java/C++逻辑的优化,减少了不必要的循环和复杂的操作;算法优化,使之更高效;功能实现逻辑的优化,变得更简洁和清晰。
但代码优化终究不能冲破极限, 难以追求极致,适可为止为宜。
5、系统虚拟弹性化:
当磁盘I/O不是瓶颈时,解决系统水平扩展就会变得容易许多。
可以通过ZooKeeper或类ZooKeeper将软件栈有机地串联起来,并配以有效的性能监管。
当事务处理成为瓶颈时,利用当今流行的虚拟化技术可以在没有人为干预的状况下自动进行弹性扩展。
原文链接: