ES分布式架构的原理

面试题

ES分布式架构的原理可以讲一下吗(es是如何实现分布式的)?

分析

现在的分布式搜索已经成为一些互联网行业java系统的标配了,其中尤其流行es,前几年es没火的时候大部分人用solr。但是这几年大部分项目和企业都开始转向了es。

所以互联网面试如何问起来分布式搜索引擎的话,ES是不可能绕过的一座大山。第一个相关的问题大概率都会问你es的分布式架构设计,看看你对分布式搜索引擎基本原理的了解程度。

回答

es,全称elasticsearch的设计理念就是分布式搜索引擎,底层原理其实还是基于lucene的。

核心思想就是在多台机器上启动多个es进程实例,组成一个集群。es存储数据的基本单位就是索引, 接着建立一个索引,这个索引可以拆分成多个shard分片节点,每个shard存储部分数据。

然后重点来了,每个shard都要一个primary shard负责写入数据,还有一个或着多个replica shard作为数据的副本,primary shard会不停的把数据同步给replica shard。而且,replica shard是不会和primary shard在同一台机器上的,所以就不怕某一台宕机。并且这些机器中,es会选举出一个master主机,用来做数据管理,或者负责切换primary shard和replica shard的身份之类的工作。如图:
ES分布式架构的原理_第1张图片
如果master宕机,那么会自动再选举出一个新的master,并且会检测到primary shard 02不在了,所以会将进程03中的replica shard变为primary shard,保证程序的正常。

还有一点比较重要,就是写数据的时候客户端是往primary shard中写数据,读数据的时候primary shard和replica shard都是可以读取数据的

你可能感兴趣的:(面试,java,elasticsearch,分布式搜索,搜索引擎,java,面试)