# 基础分布式架构剖析

  1. Elasticsearch 对复杂分布式机制的透明隐藏特性
  2. Elasticsearch 的垂直扩容与水平扩容
  3. 增减或减少节点时的数据 rebalance
  4. master 节点
  5. 节点对等的分布式架构

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

Elasticsearch 是一套分布式的系统,分布式是为了应对大数据量 隐藏了复杂的分布式机制

  • 分片机制

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

  • cluster discovery(集群发现机制)

    我们之前在做那个集群 status 从 yellow 转 green 的实验里,直接启动了第二个 es 进程,那个进程作为一个 node 自动就发现了集群,并且加入了进去,还接受了部分数据 (replica shard)

  • shard 负载均衡

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

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

# Elasticsearch 的垂直扩容与水平扩容

  • 垂直扩容

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

  • 水平扩容

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

假设服务器的价格如下:

  • 普通服务器:1T,1万,100万

  • 强大服务器:10T,50万,500万

扩容对应用程序的透明性

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

目的:保持负载均衡

当有新节点加进来的时候,一些 shard 上承担数据量不平衡的时候,es 会自动做 rebalance 操作,将这些数据分担一部分到新机器上去

# master 节点

管理 es 集群的元数据,默认情况下回自动选举出一台节点,作为 master 节点;

  1. 创建或删除索引
  2. 增加或删除节点

master 节点不承载所有的请求,所以不存在单节点瓶颈,那么这就涉及到一个概念:节点对等

# 节点对等的分布式架构

  1. 节点对等,每个节点都能接收所有的请求
  2. 自动请求路由
  3. 响应收集