elasticsearch面试八股文

文章目录

es的存储和更新机制

Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,其存储架构和更新机制如下:

存储架构:

索引(Index) :ES的数据组织单元是索引,每个索引可以包含多个类型(Types),类似于数据库中的表。索引是由一个或多个分片(Shard)组成的,用于将数据水平分割和分布在集群中的多个节点上。
分片(Shard) :每个索引可以被分为多个分片,每个分片是一个独立的工作单元,包含部分数据。分片允许数据分布在集群的多个节点上,提高了性能和可伸缩性。
副本(Replica) :每个分片可以有零个或多个副本。副本是分片的完全复制,用于提供冗余和故障恢复。副本也可以用于负载均衡查询。

更新机制:

Near Real-Time(NRT) :ES采用了近实时的更新机制,即文档的索引和搜索操作不会立即生效,而是需要经过一小段时间的延迟。默认情况下,ES的刷新间隔是1秒钟,因此写入的数据在1秒后才能被搜索到。这种机制可以提高吞吐量和性能。
索引操作(Indexing) :当需要更新一个文档时,ES会先检查该文档是否已经存在于索引中。如果文档不存在,则会创建新的文档并将其添加到合适的分片上。如果文档已经存在,则会进行更新操作,即先标记旧文档为删除,然后再创建一个新的文档版本。这样做是为了保留历史版本,并支持版本控制和文档回滚。
分布式协调 :当有多个副本时,ES使用Raft一致性算法来协调各个副本之间的写入操作,确保数据的一致性和可靠性。

总结起来,Elasticsearch的存储架构是由索引、分片和副本组成的,利用分布式的方式将数据分散在多个节点上。更新机制采用近实时的方式,通过索引操作和分布式协调来处理文档的更新和写入操作。这使得ES具备高性能、可伸缩和容错能力。


说一下raft算法

Raft是一种分布式一致性算法,用于解决分布式系统中的复制日志问题。它旨在提供容错性和易理解性,并通过选举机制来确保系统的可用性。

以下是Raft一致性算法的基本原理:

领导者选举:在一个Raft集群中,每个节点可能处于三种状态:领导者(leader)、追随者(follower)和候选人(candidate)。初始时,所有节点都是追随者。当追随者未能接收到领导者的心跳消息时,会发起选举变成候选人,并请求其他节点投票支持。如果候选人赢得了大多数节点的选票,就成为新的领导者。

日志复制:领导者负责接收客户端的请求并将其转化为日志条目。每个节点都维护一个日志,其中包含按顺序编号的日志条目。领导者将新的日志条目复制到它的追随者节点上,一旦大多数节点确认接收并复制该日志条目,就认为该操作提交成功。

容错性:Raft通过日志复制和选举机制实现容错性。如果一个领导者失效,集群中的其他节点会进行选举以选择一个新的领导者。只有在大多数节点都正常工作的情况下,才能进行日志条目的提交。

安全性:Raft通过在选举过程中使用随机超时时间和限制选举过程中票数的增长速率来防止选举过程中的活锁(例如,若干个候选人无法取得胜利)。此外,任何一个节点只能接受最新的日志条目,确保了数据的一致性。

总体而言,Raft算法提供了一种可靠的方式来实现分布式系统中的一致性。它通过领导者选举、日志复制和容错机制来确保数据的一致性和集群的可用性。由于其易理解的特点,Raft在分布式系统领域广泛应用,并成为了Paxos算法的有效替代方案。


相关推荐
SRY122404192 小时前
javaSE面试题
java·开发语言·面试
Natural_yz4 小时前
大数据学习09之Hive基础
大数据·hive·学习
Natural_yz4 小时前
大数据学习10之Hive高级
大数据·hive·学习
AI服务老曹4 小时前
建立更及时、更有效的安全生产优化提升策略的智慧油站开源了
大数据·人工智能·物联网·开源·音视频
Mephisto.java5 小时前
【大数据学习 | HBASE高级】storeFile文件的合并
大数据·sql·oracle·json·hbase·database
这样の我5 小时前
hbase集成phoenix
大数据·数据库·hbase
思通数据5 小时前
AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
大数据·人工智能·目标检测·计算机视觉·自然语言处理·数据挖掘·ocr
不二人生5 小时前
SQL面试题——连续出现次数
hive·sql·面试
CoderJia程序员甲5 小时前
重学SpringBoot3-整合 Elasticsearch 8.x (三)使用Repository
java·大数据·spring boot·elasticsearch
东方巴黎~Sunsiny5 小时前
如何优化Elasticsearch的查询性能?
大数据·elasticsearch·搜索引擎