Elasticsearch 是一套分布式的系统,分布式是为了应对大数据量
Elasticsearch 对复杂分布式机智的透明隐藏特性
- 分片机制
- cluster discovery(集群发现机制)
- shard 负载均衡
- shard 副本
Elasticsearch 垂直扩容和水平扩容
假设共有6台服务器,每台服务器1T容量。现在数据即将增加到8T,此时有下面量方案:
- 垂直扩容:重新购置两台服务器,每台服务器的容量是2T,将老的两台服务器进行替换,那么现在的6台服务器的总容量为:4 * 1T + 2 * 2T = 8T。采购更强大的服务器,成本非常高昂,而且会有瓶颈
- 水平扩容【推荐】:新购置两台服务器,每台服务器的容量是1T,直接加入到集群中,那么现在的服务器总容量为:8 * 1T = 8T。
增加或减少节点时数据会rebalance
es 会自动分配 shard,让服务器承受的压力和请求尽可能的均匀
master 节点
- 管理es集群的元数据
- 索引的创建和删除,维护索引的元数据
- 节点的增加和移除,管理集群的元数据
- 默认情况下,会自动选取一台节点,作为master节点
节点平等的分布式架构
- 节点对等:每个节点都能接收所有的请求
- 自动请求路由
- 相应收集
shard&replica机制总结
index
包含多个shard
- 每个
shard
都是一个最小工作单元,承载部分数据,每个shard
底层都是一个lucene
实例,有完整的建立索引和处理请求的能力 - 增减节点时,
shard
会自动在nodes
中负载均衡 primary shard
和replica shard
,每个document
肯定只存在于某一个primary shard
以及其对应的replica shard
中,不可能存在于多个primary shard
replica shard
是primary shard
的副本,负责容错以及承担读请求负载primary shard
的数量在创建索引的时候就固定了,replica shard
的数量可以随时修改primary shard
的默认数量是5,replica
的默认数量是1,默认有10个shard
,其中5个primary shard
,5个replica shard
primary shard
不能和自己的replica shard
放在同一个节点上(否则节点宕机,primary shard
和replica shard
数据都丢失了,起不到容错的作用),但是可以和其他primary shard
的replica shard
放在同一个节点上