Elasticsearch之企业级高可用分布式集群-概念

概念

  • 集群(Cluster)
    一个Elasticsearch集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识

  • 节点(Node)
    一个Elasticsearch实例即一个Node,一台机器可以有多个实例,正常使用下每个实例都应该
    会部署在不同的机器上。Elasticsearch的配置文件中可以通过node.master、node.data来设
    置节点类型。
    node.master:表示节点是否具有成为主节点的资格
    true代表的是有资格竞选主节点
    false代表的是没有资格竞选主节点
    node.data:表示节点是否存储数据

  • Node节点组合
    主节点+数据节点(master+data) 默认
    节点既有成为主节点的资格,又存储数据
    node.master: true
    node.data: true

  • 数据节点(data)
    节点没有成为主节点的资格,不参与选举,只会存储数据
    node.master: false
    node.data: true

  • 客户端节点(client)
    不会成为主节点,也不会存储数据,主要是针对海量请求的时候可以进行负载均衡
    node.master: false
    node.data: false

  • 分片
    每个索引有1个或多个分片,每个分片存储不同的数据。分片可分为主分片(primary shard)和复制分片(replica shard),复制分片是主分片的拷贝。默认每个主分片有一个复制分片,每个索引的复制分片数量可以动态地调整,复制分片从不与它的主分片在同一个节点上

  • 副本
    这里指主分片的副本分片(主分片的拷贝)
    提高恢复能力:当主分片挂掉时,某个复制分片可以变成主分片;
    提高性能:get 和 search 请求既可以由主分片又可以由复制分片处理

Elasticsearch分布式架构

Elasticseasrch的架构遵循其基本概念:一个采用Restful API标准的高扩展性和高可用性的实时数据分
析的全文搜索引擎
特性:

  • 高扩展性:体现在Elasticsearch添加节点非常简单,新节点无需做复杂的配置,只要配置好集群信息将会被集群自动发现。
  • 高可用性:因为Elasticsearch是分布式的,每个节点都会有备份,所以宕机一两个节点也不会出现问题,集群会通过备份进行自动复盘。
  • 实时性:使用倒排索引来建立存储结构,搜索时常在百毫秒内就可完成

分层

Elasticsearch之企业级高可用分布式集群-概念

  • 第一层 —— Gateway:
    Elasticsearch支持的索引快照的存储格式,es默认是先把索引存放到内存中,当内存满了之后再持久化到本地磁盘。gateway对索引快照进行存储,当Elasticsearch关闭再启动的时候,它就会从这个gateway里面读取索引数据;支持的格式有:本地的Local FileSystem、分布式的Shared FileSystem、Hadoop的文件系统HDFS、Amazon(亚马逊)的S3。
  • 第二层 —— Lucene框架:
    Elasticsearch基于Lucene(基于Java开发)框架。
  • 第三层 —— Elasticsearch数据的加工处理方式:
    Index Module(创建Index模块)、Search Module(搜索模块)、Mapping(映射)、River 代表es的一个数据源(运行在Elasticsearch集群内部的一个插件,主要用来从外部获取获取异构数据,然后在Elasticsearch里创建索引;常见的插件有RabbitMQ River、Twitter River)。
  • 第四层 —— Elasticsearch发现机制、脚本:
    Discovery 是Elasticsearch自动发现节点的机制的模块,Zen Discovery和 EC2 discovery。EC2:亚马逊弹性计算云 EC2 discovery主要在亚马云平台中使用。Zen Discovery作用就相当于solrcloud中的zookeeper。zen Discovery 从功能上可以分为两部分,第一部分是集群刚启动时的选主,或者是新加入集群的节点发现当前集群的Master。第二部分是选主完成后,Master 和 Folower 的相互探活。Scripting 是脚本执行功能,有这个功能能很方便对查询出来的数据进行加工处理。3rd Plugins 表示Elasticsearch支持安装很多第三方的插件,例如elasticsearch-ik分词插件、elasticsearch-sql sql插件。
  • 第五层 —— Elasticsearch的交互方式:
    有Thrift、Memcached、Http三种协议,默认的是用Http协议传输
  • 第六层 —— Elasticsearch的API支持模式:
    RESTFul Style API风格的API接口标准是当下十分流行的。Elasticsearch作为分布式集群,客户端到服务端,节点与节点间通信有TCP和Http通信协议,底层实现为Netty框架

解析Elasticsearch的分布式架构

分布式架构的透明隐藏特性
Elasticsearch是一个分布式系统,隐藏了复杂的处理机制分片机制:将文本数据切割成n个小份存储在不同的节点上,减少大文件存储在单个节点上对设备带来的压力。
分片的副本:在集群中某个节点宕掉后,通过副本可以快速对缺失数据进行复盘

  • 集群发现机制(cluster discovery):在当前启动了一个Elasticsearch进程,在启动第二个Elasticsearch进程时,这个进程将作为一个node自动就发现了集群,并自动加入,前提是这些node都必须配置一套集群信息。

  • Shard负载均衡:例如现在由10个 shard (分片),集群中由三个节点,Elasticsearch会进行均衡的分配,以保持每个节点均衡的负载请求。

  • 扩容机制
    垂直扩容:用新机器替换已有的机器,服务器台数不变容量增加。
    水平扩容:直接增加新机器,服务器台数和容量都增加。

  • rebalance
    增加或减少节点时会自动负

  • 主节点
    主节点的主要职则是和集群操作的相关内容,如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康是非常重要的。

  • 节点对等
    每个节点都能接受请求,每个节点接受到请求后都能把该请求路由到有相关数据的其它节点上,接受原始请求的节点负责采集数据并返回给客户端

Elasticsearch之企业级高可用分布式集群-概念