# 基础分布式架构剖析
- Elasticsearch 对复杂分布式机制的透明隐藏特性
- Elasticsearch 的垂直扩容与水平扩容
- 增减或减少节点时的数据 rebalance
- master 节点
- 节点对等的分布式架构
# 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 节点;
- 创建或删除索引
- 增加或删除节点
master 节点不承载所有的请求,所以不存在单节点瓶颈,那么这就涉及到一个概念:节点对等
# 节点对等的分布式架构
- 节点对等,每个节点都能接收所有的请求
- 自动请求路由
- 响应收集