当前位置: 首页 > article >正文

[每周一更]-(第125期):模拟面试|NoSQL面试思路解析

在这里插入图片描述

文章目录

    • 39|Elasticsearch 高可用:怎么保证 Elasticsearch 的高可用?
      • 1. Elasticsearch 的节点有什么角色?一个节点可以扮演多个角色吗?
      • 2. 在实践中,怎么合理安排不同节点扮演的角色?
      • 3. 什么是候选主节点和投票节点?投票节点可以被选为主节点吗?为什么要引入投票节点?
      • 4. 可以说一下你们公司的 Elasticsearch 是如何部署的吗?性能如何?
      • 5. 你用 Elasticsearch 解决过什么问题?为什么用 Elasticsearch?可以用别的框架吗?
      • 6. Elasticsearch 为什么引入分片?为了解决什么问题?
      • 7. 当一个写入请求发送到 Elasticsearch 之后,发生了什么?
      • 8. Elasticsearch 是实时的吗?
      • 9. Elasticsearch 的 Translog 是拿来干什么的?它可以保证数据一定不丢失吗?
      • 10. 什么是 Commit Point?用来干什么?
      • 11. Elasticsearch 在合并段的时候,会影响到已有的查询吗?一个查询怎么知道应该用合并前的段,还是应该用合并后的段?
      • 12. 如果我的写入数据流量很大,怎么保证我的 Elasticsearch 不会崩溃?
      • 13. 你知道什么是协调节点吗?它的作用是什么?怎么保证协调节点高可用?
    • 40|Elasticsearch查询:怎么优化 Elasticsearch 的查询性能?
      • 1. 你的业务写入和查询的性能如何?Elasticsearch 的性能瓶颈是多少?
      • 2. 如何设计 Elasticsearch 的索引?
      • 3. 你有没有优化过 Elasticsearch 的查询性能?怎么优化?为什么可以这么优化?
      • 4. 为什么 Elasticsearch 的分页查询也那么慢?可以怎么优化?
        • 优化方法:
      • 5. 你有没有优化过 Elasticsearch 的 JVM?怎么优化的?
      • 6. 如果 Elasticsearch 经常出现 Full GC,怎么排查和优化?
      • 7. 怎么为 Elasticsearch 选择适合垃圾回收算法?
      • 8. swap 对 Elasticsearch 有什么影响?应该怎么调整?
      • 9. 为什么 Elasticsearch 容易出现文件描述符耗尽的问题?可以怎么优化?
        • 优化措施:
    • 41|MongoDB:MongoDB 是怎么做到高可用的?
      • 1. 你们公司的 MongoDB 是如何部署的?可用性有多高?
      • 2. 你用 MongoDB 解决过什么问题?你为什么要用 MongoDB?用 MySQL 行不行?
      • 3. 和关系型数据库比起来,MongoDB 有哪些优势?
      • 4. MongoDB 是如何分片的?
      • 5. MongoDB 的块是什么?
      • 6. 什么情况下会触发块迁移?怎么迁移?
      • 7. MongoDB 的负载均衡(再平衡)是指什么?
      • 8. MongoDB 的配置服务器有什么作用?
      • 9. MongoDB 的复制机制是怎样的?
      • 10. 为什么 MongoDB 的 oplog 总是很多?
      • 11. 怎么控制 MongoDB 的写入语义?你用的是什么语义?为什么用这个语义?
      • 12. 有没有遇到过配置服务器崩溃的问题?怎么提高配置服务器的可用性?
      • 13. 当 MongoDB 的主节点崩溃之后,如何选出一个新的主节点?
      • 14. 怎么样可以让 MongoDB 在主从选举的时候优先选择同机房的从节点?
    • 42|MongoDB高性能:怎么优化 MongoDB 的查询性能?
      • 1. 你的业务里面使用 MongoDB 的性能如何?能撑住多大的读写流量?
      • 2. 你有没有遇到过 MongoDB 的性能问题?后面是如何解决的?
      • 3. 当我一个查询请求落到了 MongoDB 之上后,MongoDB 是怎么执行这个查询的?
      • 4. mongos 是什么?拿来干什么?怎么优化它的性能?
      • 5. 怎么设计 MongoDB 的索引?怎么判定一个索引是否合适?
      • 6. 什么是 ESR 规则?为何要遵守 ESR 规则?不遵守行不行?
      • 7. 大文档有什么问题?可以怎么解决大文档引发的问题?
      • 8. 什么时候要嵌入文档?有什么优势?
      • 9. 怎么优化 MongoDB 的排序(分页)查询?
      • 10. 为什么要尽可能只查询必要的字段?
      • 11. 怎么优化 MongoDB 所在的操作系统?这些优化为什么会有效果?

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

  1. Elasticsearch 的节点有什么角色?一个节点可以扮演多个角色吗?
  2. 在实践中,怎么合理安排不同节点扮演的角色?
  3. 什么是候选主节点和投票节点?投票节点可以被选为主节点吗?为什么要引入投票节点?
  4. 可以说一下你们公司的 Elasticsearch 是如何部署的吗?性能如何?
  5. 你用 Elasticsearch 解决过什么问题?为什么用 Elasticsearch?可以用别的框架吗?
  6. Elasticsearch 为什么引入分片?为了解决什么问题?
  7. 当一个写入请求发送到 Elasticsearch 之后,发生了什么?
  8. Elasticsearch 是实时的吗?
  9. Elasticsearch 的 Translog 是拿来干什么的?它可以保证数据一定不丢失吗?
  10. 什么是 Commit Point?用来干什么?
  11. Elasticsearch 在合并段的时候,会影响到已有的查询吗?一个查询怎么知道应该用合并前的段,还是应该用合并后的段?
  12. 如果我的写入数据流量很大,怎么保证我的 Elasticsearch 不会崩溃?
  13. 你知道什么是协调节点吗?它的作用是什么?怎么保证协调节点高可用?

1. Elasticsearch 的节点有什么角色?一个节点可以扮演多个角色吗?

Elasticsearch 的节点主要有以下几种角色:

  • 主节点(Master Node):负责集群的管理和协调,如索引创建、删除和集群状态管理。
  • 数据节点(Data Node):用于存储数据和执行数据相关的操作(如搜索、聚合)。
  • 协调节点(Coordinating Node):处理客户端请求,并将请求路由到相应的节点。
  • 超时节点(Ingest Node):用于预处理文档(如数据清洗、转换)后再索引。

一个节点可以扮演多个角色,例如一个数据节点也可以是主节点。

2. 在实践中,怎么合理安排不同节点扮演的角色?

在实践中,可以根据集群规模和资源情况合理安排节点角色:

  • 小型集群:可以将少数节点设置为数据节点和主节点,简化部署。
  • 中型和大型集群:建议分离主节点和数据节点,主节点负责管理,数据节点专注于数据存储和查询,以提高性能和稳定性。
  • 添加协调节点:在流量高的情况下,可以增加专门的协调节点,减轻数据节点和主节点的负担。

3. 什么是候选主节点和投票节点?投票节点可以被选为主节点吗?为什么要引入投票节点?

  • 候选主节点(Candidate Master):在选举过程中,任何节点都可以成为候选主节点。
  • 投票节点(Voting Node):参与主节点选举的节点。投票节点是具备选举资格的节点,但未必是当前主节点。

投票节点可以被选为主节点。引入投票节点的原因是为了提高选举的可靠性和容错能力,确保在网络分区或节点故障的情况下,能够通过多数投票机制选举出有效的主节点。

4. 可以说一下你们公司的 Elasticsearch 是如何部署的吗?性能如何?

我们公司的 Elasticsearch 部署通常包括以下策略:

  • 多节点集群:采用至少三个主节点以确保高可用性。
  • 数据和主节点分离:数据节点专门负责存储和查询,主节点负责集群管理。
  • 监控与备份:使用监控工具(如 Elasticsearch X-Pack)跟踪集群健康状态,定期备份数据。

这种部署策略下,性能表现良好,能够高效处理大规模数据和查询请求。

5. 你用 Elasticsearch 解决过什么问题?为什么用 Elasticsearch?可以用别的框架吗?

我曾用 Elasticsearch 解决过以下问题:

  • 日志分析:使用 Elasticsearch 进行大规模日志数据的索引和分析,便于快速查询和可视化展示。
  • 全文检索:通过 Elasticsearch 的强大搜索功能,实现复杂的全文检索需求。

选择 Elasticsearch 的原因包括其高性能、分布式特性和丰富的查询功能。虽然可以使用其他框架(如 Solr 或传统数据库),但 Elasticsearch 在实时性和处理大数据方面表现更优。

6. Elasticsearch 为什么引入分片?为了解决什么问题?

Elasticsearch 引入分片的原因主要包括:

  • 水平扩展:通过将数据划分为多个分片,可以将数据分布到多个节点上,实现水平扩展。
  • 并行处理:分片可以并行处理搜索请求,提高查询性能。
  • 容错性:可以为每个分片创建副本,提高数据的可用性和容错能力。

7. 当一个写入请求发送到 Elasticsearch 之后,发生了什么?

当一个写入请求发送到 Elasticsearch 时,主要步骤如下:

  1. 路由:根据文档 ID 和配置的路由算法确定目标分片。
  2. 索引:将文档写入目标分片,并更新相关的索引结构。
  3. Translog:将写入操作记录到 Translog,以确保操作的持久性。
  4. 刷新:根据刷新策略,将内存中的文档更新到硬盘索引中,确保可查询性。

8. Elasticsearch 是实时的吗?

Elasticsearch 不是严格的实时系统,而是近实时(Near Real-Time,NRT)系统。数据写入后,通常需要经过短暂的延迟才能被查询到,这个延迟由配置的刷新间隔决定,默认是 1 秒。

9. Elasticsearch 的 Translog 是拿来干什么的?它可以保证数据一定不丢失吗?

Translog(事务日志)用于记录未持久化的写入操作,以确保在发生故障时可以恢复数据。它的主要作用包括:

  • 数据持久化:在写入操作后,Translog 确保操作记录不会丢失。
  • 故障恢复:在节点崩溃或重启时,可以通过 Translog 恢复丢失的写入操作。

虽然 Translog 大幅提高了数据的可靠性,但并不能保证数据一定不丢失。如果 Translog 在刷新之前被删除或损坏,仍有可能导致部分数据丢失。

10. 什么是 Commit Point?用来干什么?

Commit Point 是指在写入操作完成后,数据最终被持久化到硬盘的时间点。它用于确保数据的持久性和一致性,主要作用包括:

  • 保证数据一致性:确保所有写入操作在特定时间点被可靠地持久化。
  • 优化性能:通过将多个写入操作合并,减少对硬盘的写入频率,提高性能。

11. Elasticsearch 在合并段的时候,会影响到已有的查询吗?一个查询怎么知道应该用合并前的段,还是应该用合并后的段?

在合并段的过程中,Elasticsearch 设计了非阻塞的查询机制,合并不会影响到已有的查询。一个查询会同时访问合并前和合并后的段,查询引擎会智能地决定使用哪个段来获取数据,确保查询结果的一致性和正确性。

12. 如果我的写入数据流量很大,怎么保证我的 Elasticsearch 不会崩溃?

为保证高流量写入下 Elasticsearch 不会崩溃,可以采取以下措施:


http://www.kler.cn/a/422034.html

相关文章:

  • C语言实例_22之计算阶乘n!
  • 浅谈——Linux命令入门之前奏
  • 如何参加华为欧拉考试?
  • leetcode--螺旋矩阵
  • go并发设计模式runner模式
  • 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
  • 备赛蓝桥杯--算法题目(2)
  • 基于Matlab地形和环境因素的森林火灾蔓延模拟与可视化研究
  • Windows系统搭建Docker
  • 040集——CAD中放烟花(CAD—C#二次开发入门)
  • qt6 oob
  • 微服务即时通讯系统的实现(服务端)----(3)
  • 基于Python 哔哩哔哩网站热门视频数据采集与可视化分析设计与实现,有聚类有网络语义研究
  • 【数据集】细胞数据集:肿瘤-胎儿重编程的内皮细胞驱动肝细胞癌中的免疫抑制性巨噬细胞(Sharma等人)
  • helm部署golang服务
  • numpy 计算两组向量是否相等,以及在一定误差内相等
  • QT - (qrc->binary)
  • 人工智能学习框架:构建AI应用的基石
  • Rust面向对象特性
  • 第三方Express 路由和路由中间件
  • 攻防世界-fileclude-文件包含
  • springboot 项目 层级架构
  • aisuite - 一个接口调用多个大模型
  • 大语言模型在研究领域的应用---下
  • MySQL、Oracle、SQL Server 和 PostgreSQL 的分页查询
  • Dxf2Map:跨平台 BIM、GIS、CAD 和 AR 应用程序