京东峰值系统设计

京东峰值系统设计

京东618和双11等大规模的促销活动中,促销活动造成的用户抢购和恶意攻击的次数都会较平常高出好几倍的数量,促销、抢购、攻击这三者就是影响电商流量峰值的主要因素,因此电商企业研发团队首先要思考的问题就是如何在高流量、高并发情况下保证整个系统的可靠性和稳定性

首先看一下京东电商的业务流程图图

 

京东电商系统围绕系统稳定性、可靠性、高并发和可扩展性为核心开展架构设计,京东的业务种类繁多且数量很多,外接供应商、消费者和第三方商家三大板块。内部包括了包括交易、后台、仓配、客服等商品供应链的几乎所有环节,造就了一个个的极其复杂庞大的体系。除此之外,京东系统各个功能模块之间关联性强,牵一发而动全身,做任何修改都需要慎之又慎。因此,保持系统稳定是一切优化方案的前提

京东峰值系统的设计主要从性能提升、流量控制、灾备降级、压测预案四个角度来进行。在性能提升上通过切分系统将整个业务体系拆分为几个相对独立的子系统,每个子系统又可细分为若干部分,逐级简化,直至可操作可优化的层级,针对每个功能模块的关键部分进行切分,有针对性地做性能优化

分布式系统解决两大难题:提高用户体验和增强容错能力,分布式系统设计时就会留有相当的流量增长空间,所以当一处数据中心饱和时,可以将其余的流量切入其他相对宽松的数据中心去,从而达到互为备份、互相支持的目的。与此同时,由于为提供用户就近服务,所以减少了网络延时,页面反应速度加快了,因此现在大多数的电商平台都采取分布式系统

在各个系统中,总是有很多相同的组件。前端的负载均衡自不必说,中间件的处理就是非常典型的例子。如何高效统一地管理这些组件,API服务化是我们的答案。最好由一个训练有素的团队集中管理这些组件并对外提供接口服务,将软件的使用复杂性隐藏起来,调用的是简单利索的API。让专业人员去处理复杂逻辑,确保系统的可用性和扩展性,既能大大降低出错概率,又能实现规模效益。Redis是我们常用的缓存组件。 过去都是由各个业务实现团队进行分别维护,专业性不强,使用多有不当之处。后来我们进行了集中管理,统一定制开发新功能和升级,并通过API服务化提供给各级用户。这样不仅丰富了应用场景,还提升了性能和可靠性

选取适合自身发展的框架,既能充分发挥其效能,又可节约资源。代码优化也能提高效能,例如对于SQL语句的优化,能更好地利用索引;Java/C++逻辑的优化,减少了不必要的循环和复杂的操作;算法优化,使之更高效;功能实现逻辑的优化,变得更简洁和清晰;等等。但代码优化终究不能冲破极限, 难以追求极致,适可为止为宜。

原文地址:https://www.cnblogs.com/wj1998/p/11053225.html