幸运飞艇_幸运飞艇官网|幸运飞艇群_首页-安全稳定的信誉平台
公司邮箱      客服热线
京东618:一个中心五个原则谈谈物流系统的大促

京东618:一个中心五个原则谈谈物流系统的大促

作者:幸运飞艇    来源:未知    发布时间:2018-01-11 14:21    浏览量:

  京东618:一个中心五个原则谈谈物流系统的大促优化实幸运飞艇群:践跟传统的企业应用系统一样,京东的仓储系统也经历过C/S和B/S时代,V3.0之前用的是SQLServer和台,而且整个仓储管理是一个系统,包括基础资料、库存、入库、出库、在库等,随着京东业务规模的迅速增长,每次大促的单量峰值也由早期的万级增长到了现在的亿级,这中间仓储系统进行了垂直拆分,将基础资料、库存、入库、出库、在库等拆分为独立系统独立部署(如图3) 。垂直拆分之后仓储系统一分为多,系统的容量也就成倍上升。

  在京东的订单流链路中,可以简单的划分为订单前和订单后两部分,我们在京东主站上搜索商品、浏览商品详情、把商品加入购物车、提交并支付订单等环节属于订单前,订单提交之后,订单信息流就进入订单后的物流系统部分。每逢618大促期间,大家可能会更多的聚焦到网站PV、秒杀系统、交易数据、广告收入等等。其实对于京东来说,其很核心的优势来源于精准的时效承诺、极速的送货体验和极致的售后服务,在大促期间,其物流系统的表现对客户体验至关重要。

  在数据库优化方面,慢SQL优化是最重要且效果最好的一项工作,如果要用一个比喻去形容慢SQL,打不死的小强是再贴切不过的了,慢SQL在我们的系统中是灭了一茬又一茬,似乎永远消灭不完。通常情况下,慢SQL的出现可能是因为过滤条件中没有索引、SQL语句写的过于复杂、表中数据量过大,做了全表扫描等等,因此我们在进行慢SQL优化时,优先会通过添加索引解决,索引解决不了的才会去优化语法,拆解SQL语句,将大事务化小,通过适当冗余来减少关联,优化数据模型,通过历史数据结转减少数据量等等。总之优化慢SQL的方法很多,各系统要根据各自的特性和场景选择最优且成本最低的方案。

  大数据在物流系统中有着很多的应用,首先是数据的展示,京东物流系统可以让我们看到京东整个包裹运行的情况,什么时间在分拣中心处理的单号,和核心节点之间的差错差异到底是多少,差异到底什么样子,可以做到实时监控,这样对整个集团的管理,包括对我们分拣中心管理者来讲,能够很好的看到运营情况。其次大数据能帮我们做出比较好的评估体系,包括我们实效评估,通过系统可以看到我们机构实效的一些情况,并且能够下钻到具体的分拣中心,包括具体的片区甚至批货站,能够具体的了解PPM是什么。另外通过数据和建模,能够做到通过一个模型来判断这个机构和这个片区,这个分拣中心这个站点,是不是健康的,或者它的健康度是多少,这样管理者能够实时做好监控,执行者也知道自己的差距,并且KPI相对的数据都是非常可靠的,这样对我们整体的运营有非常大的好处。

  引入KV引擎,将一些数据从关系型数据库(MySQL)迁移到KV引擎中来存储和处理,这样不仅可以大大降低关系型数据库(MySQL)的负担,还能提升数据的读写性能。京东的物流系统中,引入的KV引擎主要包括Redis、HBase、Elasticsearch和Cassandra,Redis用于缓存相对静态的热点数据,HBase是存储,主要存储海量的业务数据和历史数据,幸运飞艇官网Elasticsearch主要存储查询条件相对复杂的数据,Cassandra主要存储一些日志、流水类数据。

  京东的配送系统流量比仓储系统还要大,垂直拆分之后的系统容量不足以支撑大促期间的单量冲击,于是在垂直拆分的基础上又做了水平拆分,水平拆分除了常用的分库分表之外,还有部分复杂业务表的模型水平拆分,比如运单表,拆分成基础数据、扩展数据和状态管理三个表,有的表也会按读写比例进行拆分,比如将读多写少的列放一张表,读少写多的列放另一张表。图4是配送系统进行水平拆分的一个示意图。水平拆分之后,目前系统可以轻松应对大促期间的亿级单量,流量还远远未到系统的容量上限。

  我们大部分系统读写比例大约10:1,对于关系型数据库来说,主要消耗来源于查询,尤其是复杂查询,所以为了提升数据库端的总体容量,必须尽可能的将查询SQL分离到从库上,主库只提供写服务和一些必要的读服务,图5中B为备份库,R为从库,所有从库均可提供读服务,一个主库下可能会挂多个从库,多个从库根据业务场景需求可以做成负载均衡,也可以按业务优先级进行隔离并支持灵活切换。这样主库就只负责生产,避免了那些比较消耗性能的复杂查询影响到生产,同时系统的总体容量也会得到大大提升。

  记得刚加入京东第一次负责618的时候,在618当天就遇到了两次业务反馈系统卡顿的现象,紧急排查发现DB中大量连接堆积,再通过查看当前线程发现是一个慢SQL(耗时10多秒)导致了连接堆积,后来把慢SQL紧急优化上线后系统恢复正常。从那天以后,我深深感受到了慢SQL对我们系统的影响,同时也明白了一点,一个慢SQL对我们的系统总是致命的,我们不能放过任何一个慢SQL。为了说明一个慢SQL对系统的影响,截取了两张数据库CPU使用率在一个慢SQL优化前后的对比图(如图2),从图中也可以看出,前后对比是非常明显的。

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

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

相关新闻推荐

友情链接:

在线客服 :   服务热线:     电子邮箱:

公司地址:

三亚云之砚智能安装工程有限公司是一家专业从事酒店智能工程、程控电话、监控远程控制、WIFI网络覆盖、电子门锁、发电机、太阳能利用、小区门禁、电动道闸、电动大门、电动窗帘、智能家居、保安智能巡检、电梯3-5方对讲、...

power by vuvoyage.com