es的分布式架构原理是什么?

es的分布式架构原理是什么?

1、首先说一些分片(shard)是什么?

ES中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性

每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。整个ES集群的核心就是对所有shard的分布、索引、负载、路由等达到惊人的速度,增减节点时,shard会自动在nodes中负载均衡

 

2、primary shard 和replica shard是什么?

primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard

replica shard是primary shard的副本,负责容错,以及承担读请求负载

primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改

primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都 丢失, 起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上

3、分布式架构原理

es是基于lucene封装的的一个分布式搜索引擎,核心思想就是在多个机器上启动了多个es进程,es的基本单位是索引,然后每个索引被拆分成多个shard分布在不同的机器上,每个shard都会存储部分数据,简单的说就是每个shard都有一个primary shard,负责写入数据,然后每个shard都会有多个的replica shard(备份),我们写入数据的时候只能往primary shard上写,读取可从primary 和replica shard 上读取。写入数据之后,就会往replica上同步数据,这样每个数据都有多个备份,就算其中某个宕机了,还有其他shard继续工作,es有多个节点,会自动选举出一个节点作为master节点,主要负责管理维护元数据,扶着切换primary shard和replica shard的身份,当master节点挂了之后,就会自动选举新的节点为master节点,如果是非master节点宕机了,master节点就会让那台机器上的primary shard的身份转移到其他机器上的replica shard 上,待修复了机器重启之后,master会让缺失的replica shard 分配过去 ,这就是es分布式架构的原理。

 

 

 

posted @ 2020-02-27 16:44  一勺兔子  阅读(1594)  评论(1编辑  收藏  举报
Live2D