【后端面经】【NoSQL】ElasticSearch - 1 -2 Translog + Elasticsearch索引与分片 + 面试准备

简介: 【6月更文挑战第15天】Elasticsearch利用Translog确保数据安全,类比MySQL的redo log,它在内存缓冲后记录Translog,每隔5秒持久化磁盘,提供高效且顺序的写入。尽管如此,仍可能最多丢失5秒数据。索引由分片组成,每个分片有主从结构,分布于不同节点以降低故障影响。当主分片失败,主节点会选择新主分片。面试中可讨论公司如何使用Elasticsearch、其性能、索引设计、可用性策略及解决过的挑战。常见问题涉及Elasticsearch的应用场景、问题解决及写入流程。

Translog

Elasticsearch在写入的时候,还要写入Translog。可以把这个看作是MySQL里和redo log差不多的东西,如果宕机了可以通过Translog来恢复数据。

MySQL写入的时候,修改了内存里的值,然后记录了日志,也就是binlog、redo log和undo log

Elasticsearch写入的时候,也是写入了Buffer里,然后记录了Translog

两者的区别是:Translog是固定间隔刷新到磁盘上的,默认是5秒。
2024-06-24-20-33-37-image.png

Translog是只追加的,也就是顺序写的,所以效率很高。只有刷新到磁盘的时候,才会非常慢。

但是,就算有Translog,还是有数据丢失的可能,最差情况下,会丢失5秒的数据。

Elasticsearch索引与分片

一个Elasticsearch的索引并不仅仅指倒排索引,还包括了对应的文档。这个和关系型数据库下的语义是不同的。

Elasticsearch的一个索引有多个分片,每个分片又有主从结构,类似于数据库的分库分表。可以这样理解:

  • 一个索引是一个逻辑表

  • 分片就是分库分表

  • 每个分片都有主从结构,在分库分表里面,一般也是用主从集群来存储数据

2024-06-24-20-37-09-image.png

Elasticsearch会尽量把分片分散在不同的节点上,这一点和kafka尽量把分区分散在不同broker上是一样的,为了保证在节点崩溃的时候将影响最小化

主分片崩溃后,是怎么选出新的主分片呢?

主节点选择一个分片作为主分片,类似于Redis Sentinel里的机制,如果主节点宕机了,Sentinel会从节点里选出一个作为主节点

面试准备

  • 公司有没有使用Elasticsearch,用来解决什么问题?

  • Elasticsearch性能怎么样?读写流量多大?存储数据量多大?

  • 创建的索引有多大?有多少个分片?如何确定分片数量的?

  • 有没有采用一些措施来保证Elasticsearch的可用性?有没有用过Elasticsearch的网关?

  • Elasticsearch有没有出过问题?如何解决的?

项目介绍的时候也可以强调一下项目可用性的一个关键点就是Elasticsearch,从而打开话题。面试的时候可以收集一些使用Elasticsearch的基本案例,这样面试讲到一些理论的时候,也可以用这些案例来佐证。

和Elasticsearch相关的面试题目有很多,比如:

  • 有没有用过Elasticsearch?用来解决什么问题

  • 用Elasticsearch的过程中,有没有遇到过什么问题?最后是如何解决的?

  • 为什么Elasticsearch是近实时的?

  • Elasticsearch的flush指的是什么?refresh又是什么?

  • Elasticsearch的写入过程是什么样的?

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
11月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
349 5
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
264 3
|
存储 安全 Java
每日大厂面试题大汇总 —— 今日的是“美团-后端开发-一面”
文章汇总了美团后端开发一面的面试题目,内容涉及哈希表、HashMap、二叉树遍历、数据库索引、死锁、事务隔离级别、Java对象相等性、多态、线程池拒绝策略、CAS、设计模式、Spring事务传播机制及RPC序列化工具等。
388 0
|
存储 关系型数据库 MySQL
贝壳面试:什么是回表?什么是索引下推?
在40岁老架构师尼恩的读者交流群中,近期有成员获得了得物、阿里、滴滴等一线互联网企业的面试机会,遇到了诸如“MySQL索引下推”、“回表查询”等重要面试题。由于缺乏准备,部分成员未能通过面试。为此,尼恩系统地整理了相关知识点,帮助大家提升技术实力,顺利通过面试。具体内容包括MySQL的架构、回表查询的工作原理及其性能问题、索引下推的底层原理和优势等。此外,尼恩还提供了优化建议和实战案例,帮助大家更好地理解和应用这些技术。尼恩的技术资料《尼恩Java面试宝典PDF》也收录了这些内容,供后续参考。
贝壳面试:什么是回表?什么是索引下推?
|
存储 索引
Elasticsearch分片和副本
【11月更文挑战第4天】
739 7
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
333 5
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
384 4
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
277 8

热门文章

最新文章