携程旅行网ES跨集群搜索解决方案
"携程在使用Elasticsearch进行大数据量搜索时遇到了挑战,如元数据管理压力、单节点过载及主节点切换问题。为解决这些问题,他们实施了ES Cross Cluster Search功能,并结合Nginx和自研的ESProxy实现了一个透明、高并发且不侵入ES的解决方案。此实践旨在不增加复杂度并降低运维成本,同时提供权限验证和请求转发。虽然引入了额外的架构复杂性,但有效解决了生产环境中的痛点。" 在《ES Cross Cluster Search生产实践》中,携程旅行网的技术保障部系统研发专家刘佳分享了他们在处理海量数据搜索时面临的困境以及如何利用Elasticsearch的Cross Cluster Search特性来优化解决方案。每天,携程需要处理2千亿条数据,70TB的数据量,创建300多个索引,分布在450个节点、230台服务器上,共计4万多个分片。然而,这样的大规模集群带来了几个主要问题: 1. 元数据管理:由于元数据信息过多,全量更新导致压力大,经常出现超时现象。 2. 单节点过载:一旦单个节点负载过高,将影响整个集群的状态更新。 3. 主节点切换:在主节点切换时,集群无法正常响应,影响服务稳定性。 为了解决这些问题,携程提出了以下需求: 1. 对用户透明:用户不应感知到背后的技术实现,保持使用体验一致。 2. 高并发支持:系统需要能够处理每天5千万次的并发搜索请求。 3. 不侵入ES:改动应最小化,保证未来版本升级不受影响。 4. 权限验证与请求转发:系统应具备这些基础安全和控制功能。 根据这些需求,携程选择了遵循“尽量不造轮子”的原则,采用现有的组件如Nginx和Elasticsearch的Cross Cluster Search功能,结合自研的ESProxy。这个架构旨在简化维护,仅负责权限验证和请求转发,而不涉及数据处理。Cross Cluster Search允许在不同的Elasticsearch集群之间进行搜索,从而有效缓解了上述痛点。 然而,任何解决方案都有其利弊。使用Cross Cluster Search虽解决了原有问题,但也引入了更复杂的架构,可能会带来新的隐患和更高的开发运维成本。架构设计包括Nginx作为反向代理,配置用于路由请求到适当的ESProxy,而ESProxy则处理权限验证和转发请求到相应的Elasticsearch集群。 项目不足之处在于,请求需要经过多次转发,增加了网络延迟,同时配置相对复杂。此外,如果其中一个集群出现问题,Cross Cluster Search可能无法正常使用。为此,建议使用`ignore_unavailable`选项以处理集群不可用的情况。 携程通过实施ES Cross Cluster Search和智能代理策略,成功地提升了大规模Elasticsearch集群的稳定性和可扩展性,同时也为类似场景提供了宝贵的实践经验。对于关注Elasticsearch开源技术的开发者,可以访问专业、垂直、纯粹的Elastic开源技术交流社区(https://elasticsearch.cn/)获取更多相关信息。
![](https://csdnimg.cn/release/download_crawler_static/11634437/bg3.jpg)
剩余14页未读,继续阅读
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 373
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)