Elasticsearch分布式原理

复杂分布式机制的透明隐藏特性

Elasticsearch 对复杂的分布式机制,比如分片,副本,负载均衡等等,全部隐藏起来了。Elasticsearch 是一套分布式的系统,分布式是为了应对大数据量隐藏了复杂的分布式机制。

分片机制(我们之前随随便便就将一些 document 插入到 es 集群中去了,我们没有 care 过数据怎么进行分片的,数据到哪个 shard 中去)

cluster discovery(集群发现机制,如果我们新启动了一个 es 进程,那个进程作为一个 node 自动就发现了集群,并且加入了进去,还接受了部分数据,replica shard)

shard 负载均衡(举例,假设现在有 3 个节点,总共有 25 个 shard 要分配到 3 个节点上去,es 会自动进行均匀分配,以保持每个节点的均衡的读写负载请求)

shard 副本,请求路由,集群扩容,shard 重分配。

垂直扩容与水平扩容

垂直扩容

采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是 10T,但是当你的总数据量达到 5000T 的时候,你要采购多少台最强大的服务器啊。

水平扩容

业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力

扩容对应用程序的透明性

扩容对应用程序来说完全是透明的。

举例

  1. 6 台服务器,每台容纳 1T 数据,马上数据量要增长到 8T 数据,这时候有两个方案:
  2. 垂直扩容:重新购置两台服务器,每台服务器的容量是 2T,替换到老的两台服务器。那么现在 6 台服务的容量就是 8T。
  3. 水平扩容:新购置两台服务器,每台服务器的容量都是 1T,直接加入到集群中去,那么现在服务器的容量也是 8T。
  4. 一般采用水平扩容方案。

增减或减少节点时的数据rebalance

  1. 保持负载均衡
  2. 增加一个节点,可以自动为数据进行负载均衡

master节点

  1. master 节点不承载所有的请求,所以不会是一个单点瓶颈。
  2. master 节点的作用
    1. 创建或删除索引。
    2. 管理 es 的元数据,比如说索引的创建和删除,维护索引元数据。
    3. 增加或删除节点。
  3. 默认情况下,会自动选出一台节点作为 master 节点。

节点对等的分布式架构

  1. 节点对等,每个节点都能接收所有的请求。
  2. 自动请求路由
  3. 响应收集。
  4. 举例:客户端请求一条数据,发送的请求落在了 shared1 上,但数据却在 shared2 上,这时候,shared1 会把数据转发到 shared2 上,shared2 会将数据再次返回给 shared1,再由 shared1 将数据返回给客户端。