【后端面经】【NoSQL】ElasticSearch - 1 -3 基本思路 限流

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 【6月更文挑战第17天】在面试中讨论Elasticsearch高可用性时,聚焦于分片机制和主从副本,确保数据冗余。Translog作为关键组件,用于数据安全,防止崩溃后丢失。为提升高可用性,实施了额外措施,如限流保护,通过Elasticsearch内置功能或自定义插件监控内存和CPU使用率,当超过阈值时动态限流,以应对突发流量,避免系统崩溃。

基本思路

业务开发面试Elasticsearch的时候基本问的是基础知识以及倒排索引。

Elasticsearch最基本的可用性保障就是分片,而且是主从分片,所以遇到Elasticsearch如何做到高可用这个问题的时候,首先要提到这一点。

Elasticsearch高可用的核心是分片,而且每个分片都有主从之分。如果主分片崩溃了,还可以使用从分片,从而保证最基本的可用性。

接着要补充Translog的作用

而且Elasticsearch在写入数据的时候,为了保证高性能,都是写到自己的Buffer里,后面再刷新到磁盘上。为了降低数据丢失的风险,Elasticsearch还额外写了一个Translog,类似MySQL的redo log,如果Elasticsearch崩溃的话,可以利用Translog来恢复数据。

接着尝试把话题引导到准备的高可用方案中

我维护的业务对可用性要求比较高,所以在Elasticsearch的基础上,还做了一些额外的优化,来保证Elasticsearch的高可用

Elasticsearch高可用方案

限流保护节点

限流是一个治标的策略,但是它能够保证Elasticsearch不会因为突发大流量而直接崩溃。

可以通过Elasticsearch的插件机制来实现自定义的限流策略,注意Elasticsearch集群本身提供了限流的功能,也可以通过控制线程池大小和队列大小来间接实现限流的功能。

如果打算利用插件来实现限流功能的时候,就一定能够要有特殊之处。比如可以考虑结合Elasticsearch的内存使用率和CPU使用率设计限流策略。

之前用Elasticsearch的插件机制,设计过一个限流插件。功能比较简单,根据Elasticsearch当前的内存使用率和CPU使用率来判断是否需要执行限流。不管是内存使用率还是CPU使用率,只要超过阈值一段时间,就触发限流。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
4天前
|
NoSQL
|
5天前
|
NoSQL 消息中间件 数据库
|
6天前
|
NoSQL 大数据 微服务
【后端面经】【NoSQL】ElasticSearch - 1 -4 削峰 扩容
【6月更文挑战第19天】面试中,限流阈值设定、触发及恢复策略是关键点。熔断即停止新请求,降级需优先保障核心业务。可通过研发插件或使用网关(如极限网关)实现熔断、限流、降级,但网关可能引入性能损耗。客户端限流也是有效手段,尤其对高压力业务。然而,最佳解决方案仍是针对高并发需求进行扩容。
7 0
【后端面经】【NoSQL】ElasticSearch - 1 -4 削峰 扩容
|
16小时前
|
JSON 前端开发 Java
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
15 6
|
18小时前
|
前端开发 数据库 开发者
构建高效后端:Django框架在Web开发中的深度解析
**Django框架深度解析摘要** Django,Python的高级Web框架,以其快速开发和简洁设计备受青睐。核心特性包括Model-Template-View架构、ORM、模板引擎和URL路由。通过创建博客应用示例,展示从初始化项目、定义模型、创建视图和URL配置到使用模板的流程,体现Django如何简化开发,提高效率。其强大功能如用户认证、表单处理等,使Django成为复杂Web应用开发的首选。学习Django,提升Web开发效率。【6月更文挑战第24天】
30 1
|
2天前
|
消息中间件 Java Spring
JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知
JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知
10 0
|
2天前
|
消息中间件 存储 Java
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
4 0
|
2天前
|
Java API 调度
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解
7 0
|
2天前
|
缓存 NoSQL Java
后端开发中缓存的作用以及基于Spring框架演示实现缓存
后端开发中缓存的作用以及基于Spring框架演示实现缓存
8 1
|
2天前
|
存储 Java 应用服务中间件
后端企业级开发之yaml数据序列化格式文件详解2024
后端企业级开发之yaml数据序列化格式文件详解2024
6 0

热门文章

最新文章