Elasticsearch对复杂分布式机制的透明隐藏特性
Elasticsearch是一套分布式的系统,分布式是为了应对大数据量,但是其隐藏了复杂的分布式机制,对使用者来说无感知。
- 分片机制:我们随随便便将一些document插入到es集群中去,我们从没有care过数据怎么进行分片的,数据存到哪个shard中去,这些es统统帮我们完成了;
- cluster discovery:集群发现机制,当我们启动多个es进程时,各个进程作为一个node会自动寻找属于自己的集群,并且加入进去,并且接受数据的均衡负载。
- shard负载均衡:假设现在有3个节点,总共有25个shard要分配到3个节点上去,es会自动进行均匀分配,以保持每个节点的均衡的读写负载请求。
Elasticsearch的垂直扩容与水平扩容
- 垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是10T,但是当你的总数据量达到5000T的时候,你要采购多少台最强大的服务器;
- 水平扩容:业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力。
shard&replica机制梳理
- 每个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和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上。