上文中写了Elasticsearch的聚合分析,下钻分析,嵌套聚合等, 本文主要是写Elasticsearch的分布式机制, 扩容策略等
Elasticsearch对分布式机制的透明隐藏特性
Elasticsearch是一套分布式的系统,分布式是为了应对大数据量
- 分片机制: 往ES插入数据的时候ES集群会自动分配到某一shard上,比如 之前用rest API插入数据时,我们并没有关心数据是怎么分配的,是分配到哪个shard上的
- cluster discovery:集群发现机制,就是新启动一个es节点时,集群会自动发现节点并加入集群.
- shard负载均衡:比如我们现在有3个es节点,总共要有25个shard要分配到3个节点上去,es会自动进行均匀分配,以保持每个节点均衡的读写负载请求
- shard副本
- 请求路由:将请求自动路由到对应处理的shard上
- 集群扩容
- shard重分配
我们在实际使用中并不需要关心这些,Elasticsearch会自动处理
Elasticsearch的垂直扩容与水平扩容
假设现在有6台服务器,每台服务器容量是1T,马上数据量要增长到8T,这个时候有两种方案:
- 垂直扩容:重新购置两台服务器,每台服务器的容量是2T,替换两台老的服务器,那么现在服务器总容量就是 4x1T + 2x2T =8T
- 水平扩容:新购置两台服务器,每台容量1T,直接加到集群中去,那么现在总容量就是8 x 1T = 8T
业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力
master节点
- 管理es集群的元数据,比如说索引的创建和删除,维护索引元数据,节点的增加和移除,维护集群的元数据
- 默认情况下,会自动选择出一台节点,作为master节点
节点对等的分布式架构
每个es节点都能接收请求,接收请求后自动路由到可以处理该请求的shard,并收集返回数据.