ES分布式架构知识点

1、ES 分布式的特性透明隐藏特性
ES是一套分布式的系统,里面隐藏了复杂的分布式机制,分片机制,集群发现机制,shard负载均衡,shard副本,请求路由,集群扩容,shard重分配

2、ES的扩容机制
垂直扩容:采用配置好的机器替换原来的机器
水平扩容:增加相同配置的机器

3、增加和减少节点时数据rebalance

4、Master节点
Master节点不承载所有的请求,所以不会是一个单点瓶颈
管理ES集群的元数据,比如说索引和创建和删除,维护索引元数据,节点的增加和一次,维护集群的元数据
默认情况下,会自动选择出一台节点作为Master节点

5、节点平等的分布式架构
节点对等,每个节点都能接收所有的请求
自动请求路由
相应收集

shard和replica机制梳理
1、一个index包含一个或者多个shard
2、每个shard都是一个最小工作单元,承载部分数据,Lucene实例,完整的建立索引和处理请求的能力
3、增减节点时,shard会自动在nodes中负载均衡
4、primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
5、replica shard是primary shard的副本,负责容错,以及承担读请求负载
6、primary shard的数量在创建索引的时候固定了,replica shard的数量可以随时修改
7、primary shard的默认数是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
8、primary shard不能和自己的replica shard放在同一台节点上,但是可以和其他的primary shard的replica shard放在同一个节点上

单个node环境下创建index是什么样子
1、单node环境下,创建 一个index,有3个primary shard ,3个replica shard
2、集群status是 yellow
3、这个时候,只会将3个primary shard分配到仅有的一个node上去,另外3个replica shard是无法分配的
4、集群可以正常使用,但是一旦出现节点宕机,数据全部丢失,集群不可用,

put /test_index
{
"settings" :{
"number_of_shards" :3,
"number_of_replicas":1
}
}

横向扩容过程,如何超出扩容极限,以及如何提示容错性
1、primary和replica自动负载,例如现在6个shard,3个primary和3个replica
2、每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好
3、扩容的极限,6个shard,最多扩容到6台机器,每个shard可以占用单台服务器的所有资源,性能最好
4、超出的扩容极限,动态修改replica的数量,9个shard (3 primary 6 replica),扩容到9台机器,比3台机器时,拥有3倍的读吞吐量
5、3台机器下 9个shard (3 primary,6 replica),资源更少,但是容错性更好,最多容纳2台机器宕机,6个shard只能容纳1台机器宕机

ES 的容错机制:Master选举,replica容错,数据恢复
ES分布式架构知识点_第1张图片
当node1宕机的情况,假如Node1是Master
P0,R1,R2三个shard丢失
集群为状态为red ,P0是primary shard就丢失,此时就不是active status,不是所有的primary shard都是active了
ES分布式架构知识点_第2张图片
容错第一步:Master选举,自动选举另外一个node作为新的Master,承担起Master的责任来
容错第二步:新Master,将丢失掉的primary shard的某个replica shard提升为primary shard,此时cluster status 是yellow,因为primary shard全部恢复了,但是少了replica shard
ES分布式架构知识点_第3张图片

容错第三步:重启故障node,Master会将缺失的副本都copy一份到该node上去,而且该node 会使用之前已有的shard数据,只是同步一下宕机之后发生过的修改,此时cluster status变成了green

元数据
_index 元数据
1、代表一个document存放在哪个index中
2、类似的数据放在一个索引,非类似的数据放不同索引
3、index中包含了很多类似的document
4、索引名称必须是小写的,不能用下划线开头,不能包含逗号

_type 元数据
1、代表document属于index中的哪个类别(type)
2、一个索引通常会划分为多个type,逻辑上对index中有些许不同的几类数据进行分类:因为一批相同的数据,可能有很多相同的fields,但是还是可能会有一些轻微的不同,可能会有少数fields是不一样的
3、type名称可以是大写或者小写,但是同时不能用下划线开头,不能包含逗号

_id 元数据
1、代表document的唯一标识,与index和type一起,可以唯一标识和定位一个document
2、我们可以手动指定document的id(put /index/type/id),也可以不指定,由es自动为我们创建一个id

你可能感兴趣的:(Elasticsearch)