携程旅行网ES跨集群搜索解决方案
需积分: 9 92 浏览量
更新于2024-07-17
收藏 461KB PDF 举报
"携程在使用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/)获取更多相关信息。
2024-11-22 上传
2024-11-22 上传
2024-11-22 上传
2024-11-22 上传
2024-11-22 上传
2024-11-22 上传
weixin_38744435
- 粉丝: 373
- 资源: 2万+
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程