后端工程师的高阶面经
邓明
前 Shopee 高级工程师,Beego PMC
6888 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
后端工程师的高阶面经
15
15
1.0x
00:00/00:00
登录|注册

39|Elasticsearch高可用:怎么保证Elasticsearch的高可用?

你好,我是大明。今天开始我们要学习一个新的主题——NoSQL。在这个主题里面,我们先从 Elasticsearch 开始学起。
Elasticsearch 从面试的热度上来说,肯定是比不过数据库、缓存和消息队列。但是 Elasticsearch 在中大型公司里面又非常常用,这意味着如果你希望跳槽到一些比较大型的公司,那么 Elasticsearch 还是有比较大的概率考到的。
就像我之前说的,目前互联网行业面试中间件的话,就是高可用和高性能。而具体到每一个点,又可以拆成两个方向。
中间件是如何做到高可用 / 高性能的?
你在实践中怎么做到高可用 / 高性能?
那么这一节课我们就先来看高可用这一个点,并给出几个有亮点的提高可用性的方案,让你在面试的时候赢得竞争优势。在这里我就不严格区分 Elasticsearch 还是 Lucene,统一使用 Elasticsearch。我们先来看看 Elasticsearch 中的节点角色。

Elasticsearch 节点角色

Elasticsearch 的节点可以分成很多种角色,并且一个节点可以扮演多种角色。这里我列举几种主要的。
候选主节点(Master-eligible Node):可以被选举为主节点的节点。主节点主要负责集群本身的管理,比如说创建索引。类似的还有仅投票节点(Voting-only Node),这类节点只参与主从选举,但是自身并不会被选举为主节点。
协调节点(Coordinating Node):协调节点负责协调请求的处理过程。一个查询请求会被发送到协调节点上,协调节点确定数据节点,然后让数据节点执行查询,最后协调节点合并数据节点返回的结果集。大多数节点都会兼任这个角色。
数据节点(Data Node):存储数据的节点。当协调节点发来查询请求的时候,也会执行查询并且把结果返回给协调节点。类似的还有热数据节点(Hot Data Node)、暖数据节点(Warm Data Node)、冷数据节点(Cold Data Node),你从名字就可以看出来,它们只是用于存储不同热度的数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Elasticsearch高可用性技术总结 本文深入介绍了Elasticsearch的高可用性技术,重点围绕节点角色、数据写入过程和索引与分片结构展开。首先,文章强调了Elasticsearch节点角色的重要性,包括候选主节点、协调节点和数据节点。其次,详细描述了数据写入过程,包括文档写入到Buffer、刷新到Page Cache和磁盘中的过程,以及Translog的作用。此外,还讨论了Elasticsearch的索引与分片结构,以及面试准备中需要了解的相关问题。在高可用方案方面,文章提出了限流保护节点、利用消息队列削峰和保护协调节点等实践方案,以提高Elasticsearch的可用性。这些方案包括限流插件设计、消息队列削峰、降级策略和协调节点隔离等,为读者提供了丰富的实践经验和技术思路。总的来说,本文通过深入剖析Elasticsearch的高可用性技术,为读者呈现了丰富的技术特点和实践方案,对于理解和应用Elasticsearch的高可用性具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端工程师的高阶面经》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 头号玩家
    系统刚刚启动的时候,选取id最小的备选master为master节点。 系统运行起来之后,master和非master节点间是存在一个类似心跳检测的ping机制的,当master ping不到其他节点,或者其他节点ping不到master的时候,他们之间就会互相判断,是否大多数都连不到主节点上了,如果大多数都连不上,那么就开始重新进行master选举。

    作者回复: 赞!这里你还可以进一步补充 master 选举,选谁,以及具体的投票过程——面试偶尔用得上。

    2023-09-20归属地:北京
    2
  • Geek_035c60
    请问一下:但是没有被合并的段,就相当于告知了查询使用新的段。这是什么意思呀?

    作者回复: 里面有合并后的段,但是没有被合并的段。就相当于告知了.... 就是只有合并好了的,没有等待合并的。

    2023-11-10归属地:北京
  • ZhiguoXue_IT
    Es的高可用,在实际使用中,我们比较关注的一个点是refresh_interval的大小,这个值太小对es会造成压力,太大会搜索延时比较高

    作者回复: 嘿嘿,如果面试问到怎么确定这个值,反正就是答压测。 我之前就是不断调整这个值,调大调小,然后确定一个比较合适的值,都是经验主义。

    2023-09-24归属地:北京
  • peter
    请教老师几个问题: Q1:投票节点只用来投票岂不是极大的浪费? Q2:ES角色的划分,是逻辑划分吗?还是操作层面上的划分?比如在ES上进行某个设置就可以确定角色。 Q3:“分片”是指对数据的分片,不是针对节点(机器),对吗? Q4:ES能够控制Page Cache吗? 文中提到ES将数据写到Page Cache,数据写到Page Cache,这个是可以控制的吗?如果Linux下可以控制,Windows下是否也可以控制?

    作者回复: 1. 不浪费,你可以部署到一些很弱的机器上。也可以和别的服务一起部署 2. 是逻辑划分,就是你给每个节点配置角色,接近你说的在 ES 进行某个设置。 3. 对。 4. Windows 下不叫 Page Cache,但是也有类似的机制。实际上,这是系统调用的问题,正常我们调用 Write 的系统调用,就是写到了 Page Cache。而后你可以考虑再调用 fsync 之类的调用,刷新到磁盘上,

    2023-09-20归属地:北京
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部