加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

京东618:一个中心五个原则,谈谈物流系统的大促优化实践

发布时间:2021-02-24 11:25:05 所属栏目:电商 来源:网络整理
导读:《京东618:一个中心五个原则,谈谈物流系统的大促优化实践》要点: 本文介绍了京东618:一个中心五个原则,谈谈物流系统的大促优化实践,希望对您有用。如果有疑问,可以联系我们。 作者:者文明 编辑:木环、郭蕾 在京东的订单流链路中,可以简单的划分为订单

生产 / 监控分离指的是生产报表和监控报表必须分离开来,所谓生产报表就是业务生产过程中强依赖的报表,比如仓储系统中的积压类报表(拣货、复核、打包等各环节积压数量),配送系统中的分拣差异报表、配送差异报表等等.

这两类报表业务优先级不一样,生产报表是要优先保障的,所以在系统中需要将这两类报表进行隔离,避免监控类报表影响到生产类报表.监控报表是一个独立系统,数据来源有两种路径,一种是从生产库通过 binlog 复制过来(我们用的是自研的 Decomb 总线),另一种是从生产库通过消息方式先进入 kafka,再从 kafka 消费到监控系统.因为监控报表业务场景的多样性和复杂性,监控系统的数据库会采用多种技术,比如 MySQL、ElasticSearch、HBase、Cassandra 等等.

在线 / 离线分离指的是在线报表和离线报表分离,在线报表是实时或准实时报表,查看的是 24 小时之内的业务数据,离线报表多为分析类报表,查看的是 24 小时之前的业务数据.因为二者的业务优先级和技术方案都不尽相同,所以必须要进行分离,避免相互影响.

分离技术

图 5 分离技术

DB+ 技术

经历过多次大促备战之后,给我们最大的感触就是业务规模的增长速度总是快于我们系统的迭代速度,业务规模总是在驱动着系统的迭代升级.面对亿级单量,单纯的引入前面提到的技术已经无法让系统容量发生质的变化,系统容量容易受制于数据库,所以,除了通过分库分表来实现数据库写的分布式,还需要引入一些 NoSQL 技术,所谓的 DB+,也就是 DB+NoSQL+ 分布式,主要包括如下几个方面的改进:

  1. 引入 KV 引擎,将一些数据从关系型数据库(MySQL)迁移到 KV 引擎中来存储和处理,这样不仅可以大大降低关系型数据库(MySQL)的负担,还能提升数据的读写性能.京东的物流系统中,引入的 KV 引擎主要包括 Redis、HBase、ElasticSearch 和 Cassandra,Redis 用于缓存相对静态的热点数据,HBase 是存储,主要存储海量的业务数据和历史数据,ElasticSearch 主要存储查询条件相对复杂的数据,Cassandra 主要存储一些日志、流水类数据.
  2. 引入数据库分库分表中间件,实现数据库写的分布式,做到数据库读写的水平可扩展,真正实现从 Scale up 到 Scale out 的转变.
  3. 追求 BASE 模型,容忍分区失败,弱化事务,大事务化小事务,甚至是无事务,舍强一致性取最终一致性.

图 6 能简单说明 DB+ 的基本思路,系统的存储分两部分,一部分是传统的关系型数据库(MySQL),用来存储结构化,强事务数据,数据库做了 Sharding,读写均为分布式,支持弹性扩展.另一个是 KV 引擎,KV 引擎主要包括 Redis、HBase、ElasticSearch 和 Cassandra,Redis 主要用来做热点缓存,HBase 用来存储数据量级大而且 rowkey 又比较固定的数据,ElasticSearch 用来存储查询条件比较复杂的报表、查询类数据,Cassandra 主要用来存储日志、流水类数据,这类数据量级大,读写性能要求也比较高,但是大多都是按 key 查询.

DB技术

图 6 DB+ 技术

思考总结

在经历过多次大促备战之后,最大的感触是每次大促的业务规模总是在驱动着系统的技术不断的升级.不同的业务量级所需要使用的技术也大不一样,前面介绍的都是每次大促备战的一些技术实践.简而言之,对于 OLTP 类系统来说,面对大促的优化可以总结为 一个中心和五个基本原则.

一个中心就是要以数据库为中心,优化数据库性能为先,从数据库端出发来提升系统容量.五个基本原则就是大系统小做原则、大事务化小原则、分离原则、分布式原则和数据库弱依赖原则.下面分别介绍下:

  • 大系统小做讲的就是合理的垂直拆分,将一个业务系统按照合理的领域模型拆分成多个可以独立部署的子系统,一方面解耦,一方面提升系统的容量和可扩展能力.
  • 大事务化小指的是在业务允许的前提下尽可能将大事务拆成小事务,大事务会严重影响数据库的性能而且容易造成死锁;
  • 分离原则就是要根据业务的不通场景和要求和数据的冷热程度等进行数据的分离,避免不同优先级的业务相互影响;
  • 分布式原则主要说的是要将数据库的写进行分布式,并且真正做到写库可动态扩展;
  • 数据库弱依赖原则简单说就是要尽可能减少对关系型数据库的依赖,能用 NoSQL 解决的就不用关系型数据库,能异步写库的就不同步写,能最终一致性的就不追求强一致性等等.

现阶段正处于电商高速发展的黄金时期,业务规模还将持续保持快速增长,京东的物流系统也还将持续迭代和演进.

作者介绍

者文明,京东商城运营研发部首席架构师,中科院硕士,清华大学学士,15 年电子商务 / 企业应用领域研发、架构经验,涉及电子商务、互联网、大数据、人工智能等领域,专注电商物流系统架构、实时大数据、智慧物流等解决方案.2012 年初加入京东,主要负责京东物流系统架构.

原文来自微信公众号:聊聊架构

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读