新闻 | 滚动 | 上海 | 政务 | 评论 | 国内 | 社会 | 政法 | 国际 | 军事 | 财经 | 体育 | 娱乐 | 历史 | 汽车 | 图片 | 视频 | 曝光 | 微博 | 专题 | 旅游 | 彩票 | 藏品 | 健康 | 百货 | 导购
奥迪A3三厢
19.40-25.80万
(参考成交价)
车市行情
车型 优惠
赛欧 2
POLO 1.7
DS 4s 4
晶锐 1.3
熊猫 0.4
骊威 1.1
MINI CLUBMAN 5.78
瑞纳 0.7
车型 优惠
福睿斯 1.8
传祺GA3S 1
名图 2.5
速锐 0.3
昕动 0.8
花冠 1.6
6.15
英朗 3.3
车型 优惠
传祺GA6 1
君越 3.4
标致508 4.5
凯迪拉克ATS-L 3
雅阁 3
君威 3.9
帕萨特 3.1
迈锐宝 4.01
车型 优惠
奥迪A8 39.3
捷豹XJ 38.3
宝马6系 3
凯迪拉克XTS 4
林肯MKS 3
Panamera 96
玛莎拉蒂Ghibli 16
捷豹XF 21.5
车型 优惠
奔驰GLE 6
极光 13
Tiguan 5.2
TRAX创酷 1.3
荣威W5 1.4
标致3008 1
揽胜运动版 3.8
兰德酷路泽 8.6
车型 优惠
上汽V80 0.5
埃尔法 0.8
普瑞维亚 1.7
马自达8 2.5
别克GL8 3.1
夏朗 4.7
奥德赛 3.5
艾力绅 2.51

京东到家订单中心 Elasticsearch 演进历程

2018-12-19 12:22 来源: 开涛的博客

张sir,京东到家研发工程师,主要负责订单中心、商家中心、计费等系统。

背景

京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。京东到家的订单数据存储在Mysql中,但显然只通过DB来支撑大量的查询是不可取的,同时对于一些复杂的查询,Mysql支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。

京东到家订单中心 Elasticsearch 演进历程

Elasticsearch 做为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家订单系统中发挥着巨大作用,目前订单中心ES集群存储数据量达到10亿个文档,日均查询量达到5亿。随着京东到家近几年业务的快速发展,订单中心ES架设方案也不断演进,发展至今ES集群架设是一套实时互备方案,很好的保障了ES集群读写的稳定性,下面就给大家介绍一下这个历程以及遇到的一些坑。

ES集群架设演进历程

1、初始阶段

订单中心ES初始阶段好如一张白纸,架设方案基本没有,很多配置都是保持集群默认配置。整个集群部署在集团的弹性云上,ES集群的节点以及机器部署都比较混乱。同时按照集群维度来看,一个ES集群会有单点问题,显然对于订单中心业务来说也是不被允许的。

2、集群隔离阶段

和很多业务一样,ES集群采用的混布的方式。但由于订单中心ES存储的是线上订单数据,偶尔会发生混布集群抢占系统大量资源,导致整个订单中心ES服务异常的情况。

显然任何影响到订单查询稳定性都是无法容忍的,所以针对于这个情况,先是对订单中心ES所在的弹性云,迁出那些系统资源抢占很高的集群节点,ES集群状况稍有好转。但随着集群数据不断增加,弹性云配置已经不太能满足ES集群,且为了完全的物理隔离,最终干脆将订单中心ES集群部署到高配置的物理机上,ES集群性能又得到提升。

3、节点副本调优阶段

ES的性能跟硬件资源有很大关系,当ES集群单独部署到物理机器上时,集群内部的节点并不是独占整台物理机资源,在集群运行的时候同一物理机上的节点仍会出现资源抢占的问题。所以在这种情况下,为了让ES单个节点能够使用最大程度的机器资源,采用每个ES节点部署在单独一台物理机上方式。

但紧接着,问题又来了,如果单个节点出现瓶颈了呢?我们应该怎么再优化呢?ES查询的原理,当请求打到某号分片的时候,如果没有指定分片类型(preference参数)查询,请求会负载到对应分片号的各个节点上。而集群默认副本配置是一主一副,针对于此,我们想到了扩容副本的方式,由默认的一主一副变为一主二副,同时增加相应物理机。

京东到家订单中心 Elasticsearch 演进历程

如上图,订单中心ES集群架设示意图。整个架设方式通过VIP来负载均衡外部请求,第一层gateway节点实质为ES中client node,相当于一个智能负载均衡器,充当着分发请求的角色。第二层为data node,负责存储数据以及执行数据的相关操作。整个集群有一套主分片,二套副分片(一主二副),从网关节点转发过来的请求,会在打到数据节点之前通过轮询的方式进行均衡。集群增加一套副本并扩容机器的方式,增加了集群吞吐量,从而提升了整个集群查询性能。下图为订单中心ES集群各阶段性能示意图,直观的展示了各阶段优化后ES集群性能的显著提升。

京东到家订单中心 Elasticsearch 演进历程

当然分片数量和分片副本数量并不是越多越好,在此阶段中,对选择适当的分片数量做了近一步探索。分片数可以理解为Mysql中的分库分表,而当前订单中心ES查询主要分为两类:单ID查询以及分页查询。分片数越大,集群横向扩容规模也更大,根据分片路由的单ID查询吞吐量也能大大提升,但对于聚合的分页查询性能则将降低。分片数越小,集群横向扩容规模更小,单ID的查询性能也将下降,但对于分页查询,性能将会得到提升。所以如何均衡分片数量和现有查询业务,我们做了很多次调整压测,最终选择了集群性能较好的分片数。

1 2 3 下一页
热门推荐
查看更多精彩