京东商城架构峰值系统设计
高流量、高并发情况下,如何保证整个系统的可靠性和稳定性,是众多电商企业研发团队都在思考的问题。为了尽量缓解峰值带来的压力,京东峰值系统的设计主要从性能提升、流量控制、灾备降级、压测预案四个角度来进行。
有别于社交网络、搜索和游戏等网站,电商网站的用户流量具有操作性强、随时令变化等特点。在欧美国家,Black Friday和Cyber Monday标志着节假日消费的高峰。影响电商流量峰值的主要因素是抢购、促销和恶意攻击,尤其是京东618店庆和双11等大规模的促销活动。高流量、高并发情况下,如何保证整个系统的可靠性和稳定性,是众多电商企业研发团队都在思考的问题。
京东电商系统的设计是围绕系统稳定性、可靠性、高并发和可扩展性为核心开展的。如何在峰值来临时,保证用户有平滑流畅的体验,且系统不会出现异常呢?我们先来看看京东系统的一些特点(图1)。
图1 系统架构庞大复杂
京东的业务种类繁多,涉及SKU几千万种,这使得系统庞大,外部需要对接供应商、消费者和第三方商家三大板块。内部系统包括了商品供应链中除商品设计和生产外的几乎所有环节,包括登录、交易、后台、供应链、仓配、客服等。所有这些涉及大小系统几千个,造就了一个极其复杂庞大的体系。除此之外,京东系统交互强,各个功能模块之间关联性强,牵一发而动全身,做任何修改都需要慎之又慎。因此,一切优化方案都以保持系统稳定为前提。
为了在复杂的系统基础之上,尽量缓解峰值带来的压力,京东峰值系统的设计主要从性能提升、流量控制、灾备降级、压测预案四个角度来进行。
性能提升
1.切分业务系统
我们先将整个业务体系拆分为几个相对独立的子系统如SSO、交易平台、POP平台、订单下传系统、WMS和仓储配送(图2)。每个子系统又可细分为若干部分,逐级简化,直至可操作可优化的层级。例如,交易平台包括价格、购物车、结算、支付和订单中心等;网站系统包括首页、登录、列表频道、单品和搜索等。接下来,针对每个功能模块的关键部分进行切分,有针对性地做性能优化。
图2 业务切分方案
例如,交易的秒杀系统,原来是根植于普通交易系统之内的,缺点非常明显。当流量突然增大时,不仅会导致秒杀系统反应迟钝,而且会影响普通交易系统的正常运作。于是我们将其与其他业务系统物理分开,成为相对独立的子系统。并且针对秒杀的特性,减少对后台存储的依赖。同时优化中间层存储机制,使得相对热点分散部署。甚至支持单一SKU多点部署,从而大大提升了秒杀系统的吞吐量和可靠性。
2.分布式
分布式的交易系统是电商的未来。分布式系统解决两大难题:提高用户体验和增强容错能力。由于分布式系统设计时就会留有相当的流量增长空间,所以当一处数据中心饱和时,可以将其余的流量切入其他相对宽松的数据中心去,从而达到互为备份、互相支持的目的。与此同时,由于为提供用户就近服务,所以减少了网络延时,页面反应速度加快了。举一个例子,Google搜索是全球服务,欧亚美各地都有不同的IP提供服务。当其中的某一个IP出现故障时,Google能够从容地将其服务切换至最近的IP,继续搜索服务。对于电商来说,情况更复杂一些,需要同步的数据要求更精确,数据量较大,对延时的容忍度更低,建设周期也就更长。京东正在此方面着力改进,从只读的系统入手,一步一步实现系统的分布式。
3.API服务化
在各个系统中,总是有很多相同的组件。前端的负载均衡自不必说,中间件的处理就是非常典型的例子。如何高效统一地管理这些组件,API服务化是我们的答案。最好由一个训练有素的团队集中管理这些组件并对外提供接口服务,将软件的使用复杂性隐藏起来,调用的是简单利索的API。让专业人员去处理复杂逻辑,确保系统的可用性和扩展性,既能大大降低出错概率,又能实现规模效益。
Redis是我们常用的缓存组件。 过去都是由各个业务实现团队进行分别维护,专业性不强,使用多有不当之处。后来我们进行了集中管理,统一定制开发新功能和升级,并通过API服务化提供给各级用户。这样不仅丰富了应用场景,还提升了性能和可靠性。
4.架构,代码优化
一个合理的电商系统架构是与一家公司的研发水平和技术管理水平密不可分的,这直接决定了可支撑峰值流量的多少和未来能达到的高度。选取适合自身发展的框架,既能充分发挥其效能,又可节约资源。代码优化也能提高效能,例如对于SQL语句的优化,能更好地利用索引;Java/C++逻辑的优化,减少了不必要的循环和复杂的操作;算法优化,使之更高效;功能实现逻辑的优化,变得更简洁和清晰;等等。但代码优化终究不能冲破极限, 难以追求极致,适可为止为宜。
5.系统虚拟弹性化
当磁盘I/O不是瓶颈时,解决系统水平扩展就会变得容易许多。可以通过ZooKeeper或类ZooKeeper将软件栈有机地串联起来,并配以有效的性能监管。当事务处理成为瓶颈时,利用当今流行的虚拟化技术(如LXC或VM)可以在没有人为干预的状况下自动进行弹性扩展。
京东商城架构峰值系统设计相关推荐
- 大促系统全流量压测及稳定性保证——京东交易架构分享(含PPT)
导读:对于应对突发的峰值访问,每个技术团队都有自己的经验及方法,但是这些方法远没有得到体系化的讨论.高可用架构在 6 月 25 日举办了『高压下的架构演进』专题活动,进行了闭门私董会研讨及对外开放的四 ...
- 《京东峰值系统设计》读后感
<京东峰值系统设计>读后感 为了在复杂的系统基础之上,尽量缓解峰值带来的压力,京东峰值系统的设计主要从切分业务系统.分布式.API服务化.架构,代码优化.系统虚拟弹性化五个角度来提升性能. ...
- 京东商城总架构师、基础平台负责人刘海锋:京东双11创新技术实践
[CSDN现场报道]2016 年 11 月 18 日- 20 日,由 CSDN 重磅打造的年终技术盛会 -- "2016 中国软件开发者大会"(Software Developer ...
- 京东商城组织架构调整:划分为前中后台 强调实现有质量增长
雷帝网 乐天 12月21日报道 继腾讯.小米.阿里之后,又一家互联网公司进行了架构调整. 今日,京东集团旗下最核心业务京东商城宣布架构调整,称商城将以"实现有质量的增长"为目标,在 ...
- 大促系统全流量压测及稳定性保证——京东交易架构
https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653547431&idx=1&sn=744a42639e7c36 ...
- 京东商城ContainerLB实践
本文讲的是京东商城ContainerLB实践[编者的话]随着京东业务的高速增长,作为应用入口的负载均衡,大流量大并发带来的挑战越来越严峻.本文主要介绍了京东商城设计和实践的一套高可靠,高性能的负载均衡 ...
- 大促系统全流量压测及稳定性保证——京东交易架构分享
转:大促系统全流量压测及稳定性保证--京东交易架构分享(含PPT) 来源:http://blog.sina.com.cn/s/blog_12df1b9e60102wble.html 先介绍一下交易系统 ...
- 基于javaweb仿京东商城管理系统的设计与实现(含论文和程序源码及数据库文件)
网上购物商城系统以弥补传统购物方式的弊端.在目前的商城里,如果采用网上商城方式,用户购物时就不需要到店里面排队,这样不仅能实时地了解商品的特色,而且方便了顾客,同时也减轻了商城的服务压力.随着WLAN ...
- 京东技术架构(二)构建需求响应式亿级商品详情页
商品详情页是什么 商品详情页是展示商品详细信息的一个页面,承载在网站的大部分流量和订单的入口.京东商城目前有通用版.全球购.闪购.易车.惠买车.服装.拼购.今日抄底等许多套模板.各套模板的元数据是一样 ...
- 京东618:六年历程步步为营,京东商城的安全保卫战
电商网站在为广大用户提供网购便利的同时,在安全方面也不可以掉以轻心.那么作为一家高流量的电商,京东是怎样做安全防护的?在618备战期间又需要特别注意哪些事项?京东安全的现状和未来是怎样的?为此,Inf ...
最新文章
- Java环境及Eclipse(MyEclipse)安装
- 测试归测试,自动驾驶向个人全面开放依然长路漫漫
- 17秋 软件工程 第六次作业 Beta冲刺 总结博客
- 获取ip地址解析归属地
- 知识管理促进企业组织能力提升
- oracle批量把小写转换成大写,oracle数据库批量将表名小写转大写
- 50行代码的MVVM,感受闭包的艺术
- Java实验9 T5. 给当前的类文件添加行号拷贝到txt文件
- 不常见正则表达式总结
- conda pip 安装NumPy速度不佳解决方案
- 提取已有的内核配置文件
- txt简谱制作器上线(个人java程序)
- redmi_flash刷机之刷入第三方rec(recovery)TWRP_(2021.9.20实践)_以老旧机型redmi4x为例..待上传
- xvidcore.dll not found 的解决办法
- Elasticsearch海量搜索引擎
- 28、制作畅销书排行榜页面
- 广东电信最新DNS更新了
- DCC - Photoshop - Nvidia NormalMapFilter - 法线生成工具 - 顺便测试 Unity URP 12.1 中的 Decal System
- 西安公交车路线汇总(1)
- 由<高十>纪录片想到的
热门文章
- python绘制缓和曲线_曲线标
- jact变频器故障代码_高淳JACT变频器,艾克特变频器ERR20编码器故障维修烟台市...
- 面向对象设计与构造课程作业 _第三单元总结 _北京航空航天大学计算机学院 2019春季...
- Eucalyptus云平台搭建
- 数值分析的matlab实验总结,数值分析及其MATLAB实验(第2版)
- 摩尔斯电码对照表—Morse code
- java网络电话_基于Java的网络电话系统设计与实现.pdf
- 你的Android HTTPS真的安全吗?
- Tableau 连接mysql详细教程
- iOS测试和Android测试的区别