■京东商城,超大型电商系统架构设计原则与实践( 二 )


文章图片

文章图片

京东应用架构分层 (来源于@京东技术部)
05
京东商城应用架构拆分原则
1、水平扩展 。也就是复制的能力 , 应用系统实现多机集群、提升并发能力 , 数据库进行读写分离 , 如商品读库、商品写库 。
2、垂直拆分 。指的是不同业务系统的拆分 , 如商品系统、交易系统;数据库方面也是相应拆成商品库、订单库 。
3、业务分片 。同业务进行分片 , 比如秒杀系统、常规下单系统 , 要分开;数据库方面 , 如把订单表按ID取模运算后分库分表 。
4、水平拆分 。服务层面 , 功能与非功能分开 , 稳定业务与易变业务分开;数据库方面 , 冷热数据分离、历史数据分离 。
06
京东商城服务设计的依赖原则
1、依赖稳定的部分 。稳定部分不依赖易变的部分、易变的部分可以依赖稳定的部分、坚决避免循环依赖 。
2、跨域弱依赖 。跨业务域调用的时候 , 尽可能异步弱依赖 。
3、基于服务依赖 。基于服务不能向上依赖流程服务;组合服务、流程服务可以向下依赖基本服务 。条件是基本服务要稳定 。
4、非功能性服务依赖 。非功能性服务不能依赖功能性服务;功能性服务可依赖非功能性服务 。条件:非功能性服务稳定 。
5、平台服务依赖 。平台服务不依赖上层应用;上层应用可依赖平台服务;条件:平台服务稳定 。
6、核心服务依赖 。核心服务不依赖非核心服务;非核心服务可依赖核心服务;条件:核心服务稳定 。
07
服务设计基本原则
1、无状态 。尽量不要把状态数据保存在本机 , 接口调用幂等性 。
2、可复用 。复用颗粒度是有业务逻辑的抽象服务 , 不是服务实现细节 。服务引用只依赖于服务抽象 。
3、松耦合 。跨业务调用 , 尽可能异步解耦 。必须同步调用时 , 设置超时和队列大小 。相对稳定的基本服务与易变流程服务分层 。
4、可治理 。制定服务契约、服务可降级、服务可限流、服务可开关、服务可监控、白名单机制 。
■京东商城,超大型电商系统架构设计原则与实践
文章图片

文章图片

京东商城应用架构实例图 (来源于@京东技术部)
08
京东商城数据架构设计原则
1、统一数据视图 。保证数据的及时性 , 一致性、准确性、完整性 。
2、数据、应用分离 。应用系统只依赖逻辑数据库;应用系统不直接访问其它宿主数据库 , 只能通过服务访问 。
3、数据异构 。源数据和目标数据内容相同时 , 做索引异构 , 如商品库不同维度 。内容不同时 , 做数据库异构 , 如订单买家库和卖家库 。
4、数据读写分离 。访问量大的数据库做读写分离 , 数据量大的数据库做分库 , 不同业务域数据库做分区隔离 , 重要数据配置备库 。
5、用Mysql等主流数据库 。除成本因素外 , Mysql数据库扩展能力强 , 运维积累了大量丰富经验 。
6、合理使用缓存 。数据库有能力支撑时 , 尽量不要引入缓存 。合理利用缓存做容灾 。
■京东商城,超大型电商系统架构设计原则与实践
文章图片

文章图片

(来源于@京东技术部)
■京东商城,超大型电商系统架构设计原则与实践
文章图片

文章图片

(来源于@京东技术部)
09
京东商城技术架构总览
1、基本平台 。数据存取方面的技术组件包括:缓存服务有JFS/Jimstore、图片服务JSS、即时服务JDW、索引服务Search、数据库服务DBS 。
2、集成层 。服务流程引擎PAF、服务中间件SAF、MQ服务JDMQ、数据库中间件JDAL、调度服务JDWorker、业务规则服务JDRules、配置服务JDCenter、推送服务JMP 。


推荐阅读