对复杂分布式机制的透明隐藏特性
Elasticsearch 是一套分布式系统,分布式是为了应对大数据量,Elasticsearch 为我们隐藏了复杂的分布式机制,符合开箱即用的特点
分片机制(之前我们随随便便就将一些
document
插入到 Elasticsearch 集群中了,我们并不关心数据是怎么进行分片的,数据到哪个shard
中去了,这些都是 Elasticsearch 内部帮我们做好的,隐藏了复杂的实现,我们直接用就好了)cluster discovery(集群发现机制,之前在做集群
status
从 "yellow" 转 "green" 的实验中,直接启动第二个 Elasticsearch 进程,进程作为一个node
自动就发现了集群,并且加入了进去,还接受了部分数据(replica shard
))shard 负载均衡(假设现在有 25 个 shard 要分配到 3 个节点上去,Elasticsearch 会自动进行均匀分配,以保证每个节点均衡的读写负载请求)
垂直扩容与水平扩容
垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈。
水平扩容:业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力。
假设:6 台服务器,每台容纳 1 T数据,数据量马上要增长到 8 T,这时候两个扩容方案:
(1)垂直扩容:重新购置两台服务器,每台服务器的容量是 2 T,替换掉老的两台服务器,那么现在是 6 台服务器,总容量就是 4 * 1T + 2 * 2T = 8T
(2)水平扩容:重新购置两台服务器,每台服务器的容量是 1 T,直接加入到集群中去,那么现在是 8 台服务器,总容量就是 8 * 1T = 8T(业界几乎都采用这种方式)
数据 rebalance
总有某些节点的负载会重一些,承载的数据量和请求量会大一些。当增加或者减少节点时数据 rebalance,以保持负载均衡。
master 节点
管理 Elasticsearch 集群中的元数据:比如索引的创建和索引的删除,维护索引元数据;节点的增加和移除,维护集群元数据。
默认情况下,会自动选择一台节点作为
master
节点。
注意:master
节点不承载所有的请求,所以不会是一个单点瓶颈。(这句话的意思是说并不是因为它是 master
节点,所以所有请求都由他来转发,而是每个节点都有可能被请求到)
节点对等的分布式架构
- 节点对等,每个节点都能接收所有请求
- 自动请求路由
- 相应收集数据