老k所在的沪,知名电商公司,前几年被京东收购,所以对京东的整个技术架构体系比较熟悉,做了深入的研究。本文ppt来源于商城, 京东,技术团队内部分享资料,部分涉及太多技术细节的ppt没有发布,但在文中有提及。
京东b2b2c商城系统3集成了自营模式、商城模式、三方平台等多种模式。与淘宝和天猫,的电子商务网站发展相比,商业模式要丰富得多,包括许多WMS、TMS和OMS。国内中小型电商如果想学习,最好学习京东,的商业结构,因为商业模式差不多。
一、超大型电子商务系统的架构目标
1.搭建超大型电商交易平台,兼顾效率和性能,实现高效率、高时效、低成本的目标。
2.成本低,增加服务复用性,提高开发效率,降低人工成本;使用成熟的开源技术降低软硬件成本;使用虚拟化技术降低服务器成本。
3.可扩展性高,系统架构简单清晰,应用系统间耦合度低,易于横向扩展,业务功能的添加和修改方便快捷。
4.高可用性和自动化操作和维护。整体系统可用性为99.99%,单系统可用性为99.999%。整个系统年故障时间不超过50分钟,单个系统故障不超过5分钟。
二.京东商城商业建筑设计原则
1.业务平台化
业务平台,相互独立。如交易平台、仓储平台、物流平台、支付平台、广告平台等。基本服务可以被吸收和重用。比如用户、商品、类别、促销、时效性等。
2.核心业务与非核心业务分离
电商核心业务与非核心业务分离,核心业务简化(有利于稳定),非核心业务多元化。比如主交易服务和一般交易服务。
3.区分主流程和辅助流程,区分哪些是电子商务的主要流程
运行时优先考虑主进程成功完成,辅助进程可以采用后台异步方式。避免辅助进程失败导致主进程回滚。例如,下单时同步调用快照,异步通知账户和发票。
4.隔离不同类型的服务
交易业务是买卖双方签订交易合同,需要优先保证高可用性,让用户快速下单。性能业务不需要高可用性,但可以优先保证一致性。闪购业务要求高并发,应与普通业务隔离。
三,建筑设计原则的应用
1.稳定性原则
一切以稳定为中心;结构尽可能简单明了;不要过度设计。
2.耦合/分裂
稳定部分与挥发性部分分离;核心业务与非核心业务分离;电子商务的主流程与辅助流程分离;应用和数据分离;服务和实现细节的分离。
3.抽象
应用抽象:应用只依赖服务抽象,不依赖服务实现细节和位置;
数据库抽象:应用只依赖逻辑数据库,不需要关心物理数据库的位置和碎片;
服务器抽象:应用虚拟化部署,不关心物理机配置,动态分配资源。
4.松耦合
跨域调用是异步的,不同的业务域尽可能异步耦合。非核心服务应该尽可能异步,核心和非核心服务应该尽可能异步耦合。
5.容错设计
服务自治:服务可以独立修改、部署、发布和管理。避免引发连锁反应。
集群容错:应用系统集群,避免单点。
多机房容灾
治理方面,包括服务质量层、数据架构层和治理层。
五、京东商城应用架构拆分原则
1.水平扩展。即复制能力,应用系统实现多机集群,提高并发性,将数据库读写分离,如商品读写。
2.垂直分裂。指商品系统、交易系统等不同业务系统的拆分;数据库也分为商品库和订单库。
3.业务细分。与业务割裂,如扣球制和常规接单制,应分开;比如在数据库方面,订单表以ID为模,再分为数据库和表格。
4.水平分割。在服务层面,功能与非功能分离,稳定服务与易变服务分离;数据库方面,冷热数据分开,历史数据分开。
不及物动词京东商城,服务设计的依赖原则
1、依靠稳定的部分。稳定部分不依赖挥发部分,挥发部分可以依赖稳定部分,坚决避免循环依赖。
2.跨域弱依赖。跨业务域调用时,尽量异步且弱依赖。
3.基于服务依赖。基于服务的服务不能依赖于流程服务;复合服务和流程服务可以向下依赖基本服务。条件是基本服务要稳定。
4.非功能性服务依赖。非功能性服务不能依赖功能性服务;功能服务可以依赖于非功能服务。条件:非功能性服务稳定。
5.平台服务依赖。平台服务不依赖于上层应用;上层应用可以依赖平台服务;条件:平台服务稳定。
6.核心服务依赖。核心服务不依赖非核心服务;非核心服务可以依赖核心服务;条件:稳定的核心服务。
七、京东商城服务设计基本原则
1、无状态。尽量不要将状态数据保存在本地,接口调用幂等。
2.可重复使用。重用粒度是具有业务逻辑的抽象服务,而不是服务实现细节。服务引用只依赖于服务抽象。
3.松耦合。跨业务调用,尽可能异步解耦。当调用必须同步时,设置超时和队列大小。相对稳定的基础服务和可变的过程服务的分层。
4.治理。建立服务契约,服务可以降级,服务可以限流,服务可以切换,服务可以监控,白名单机制。
八、京东商城数据架构设计原则
1.统一数据视图。确保数据的及时性、一致性、准确性和完整性。
2.数据和应用分离。应用系统只依赖逻辑数据库;应用系统不直接访问其他主机数据库,而仅通过服务访问。
3.异构数据。当源数据和目标数据的内容相同时,做索引异构,比如不同维度的商品库。当内容不同时,使数据库异构,如订单买方库和卖方库。
4.数据读写分离。对访问量大的数据库进行读写分离,对数据量大的数据库进行子数据库,对不同业务领域的数据库进行分区和隔离,对重要数据进行备份。
5.使用Mysql等主流数据库。除了成本因素,Mysql数据库还有很强的可扩展性,积累了大量丰富的运维经验。
6.合理使用缓存。当数据库能够支持时,尽量不要引入缓存。灾难恢复中缓存的合理利用。
九、京东b2b2c商城系统3运行维护原则
1.它可以被监控。服务的TPS和RT是否满足SLA,是否有意外流量。
2.应用程序可以回滚,功能可以降级。当应用程序出现问题时,需要回滚到以前的版本或执行功能降级。
3.在线扩展。当超出预期流量时,应用系统可以选择在线横向扩展。
4.安全保证。确保系统的保密性和完整性。有足够的抗攻击能力。
5.容错。核心应用程序需要多种活动,避免单点设计
1.基础平台。数据访问的技术部分包括:JFS/吉姆斯多、JSS、JDW、搜索和数据库系统。
2.集成层。服务流程引擎PAF、服务中间件SAF、MQ服务JDMQ、数据库中间件JDAL、调度服务JDWorker、业务规则服务JDRules、配置服务JDCenter和推送服务JMP。
3.质量层。UMP、Loghub、JDriskM、应用管理jdcenter。
其他包括治理层、虚拟平台、运营管理等。
我和大家分享了京东商城的业务架构、技术架构、数据架构、架构原则和运维原则
随商信息技术(上海)有限公司 b2b2c多用户商城系统是基于PHP技术的企业级电子商务平台系统,系统支持平台自营、招商加盟和多商家入驻、集成微信商城、移动端APP商城、微信小程序于一体。公司主营业务包含商城系统定制开发、新零售系统解决方案、电商平台系统定制开发、商城网站建设服务等等,ShopSuite为大、中、小企业提供一个安全、高效、强大的电子商务解决方案,协助企业快速构建、部署和管理其电子商务平台,拓展企业销售渠道,致力于推动PHP技术和电子商务行业的发展而不断努力。