elasticsearch源码分析之集群服务(八)

本文详细分析了Elasticsearch集群的构建原因、模型、实现过程和错误检测机制。集群提供高性价比、高可用性和可伸缩性。Elasticsearch采用中心化集群模型,选举master节点负责元数据和集群状态管理,其他节点执行读写操作。加入集群涉及nodeid生成、寻找master和状态更新。错误检测包括MasterFaultDetection和NodeFaultDetection,确保集群稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么集群

集群是为一组互联的完整计算机,一起作为一个统一的计算资源而工作,给人以一台机器的感觉。
集群有三大优点,所以很多系统都以集群的形式出现:

  • 高性价比:使用普通的计算机来构建集群,能够以非常低的价格,获得比大型机更高的性能。
  • 高可用性:因为集群中的每个节点都是一台独立的计算机(或者部署在其上),集群服务都有容错能力,所以某一个节点的故障不意味着集群服务的失败。
  • 可伸缩性:可以通过横向调整集群节点的伸缩,实现集群的服务能力。

elasticsearch以集群的形式服务也是基于上面原因。

集群模型

分布式集群业界一般有两种模型,中心化集群和去中心化集群。

  • 中心化:中心化集群包含有主节点,用来对非主节点进行协调;非主节点负责任务执行。如hadoop。
  • 去中心化:去中心化化集群实现比较复杂,所有节点都对等的,如 Cassandra、Redis-cluster。

elasticsearch集群属于中心化集群。

  1. 在众多节点中选举一个节点作为mater,维护元数据信息(meta、routing等)。
  2. index\type等读写操作、集群state、reroute等操作通过master实现,参见TransportMasterNodeAction的子类。
  3. 数据的查询、写入等操作通过集群所有节点(scatter),存储节点(gather)完成,减轻了master节点的计算。

模型实现

涉及模块

主要包含了es的gateway模块(元数据读写)、cluster模块(集群状态处理)、discovery模块(集群发现服务)三大模块完成集群功能。

如何构建

Created with Raphaël 2.1.0 开始 构建节点id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值