ElasticSearch|ES|架构介绍|原理浅析

架构介绍

节点 (Nodes):
Elasticsearch 集群由多个节点组成,每个节点是一个独立运行的 Elasticsearch 实例。节点之间通过内部通信协议相互协作。

  1. Master Node:

    • 主节点负责管理集群范围的操作,例如创建或删除索引、分配和重新分配分片、维护集群状态等。主节点并不直接参与数据存储和查询。
  2. Data Node:

    • 数据节点负责存储索引数据并执行相关的 CRUD 操作(创建、读取、更新、删除)。它们持有索引的分片,并执行实际的搜索和聚合操作。
  3. Client Node:

    • 客户端节点专门处理请求的路由、搜索和聚合计算,但不存储数据。通常客户端角色会和其他角色如数据节点合并在一起。

索引和分片 (Indices and Shards):
Elasticsearch 中的数据按照索引组织,每个索引又被划分为多个分片(默认情况下是主分片和副本分片)。这种水平分割策略使得数据可以分布在整个集群上,实现水平扩展和高可用性。

集群发现与协调 (Cluster Discovery & Coordination):
Elasticsearch 使用 Zen Discovery 进行节点间的自动发现和集群健康检查。此外,通过使用不同的选举算法确定主节点,确保集群始终有一个活跃的主节点来管理和维护集群状态。

一致性层 (Consistency Layer):
借助版本控制和乐观并发控制机制,Elasticsearch 在分布式环境中提供了一致性的保证。当对文档进行修改时,系统会跟踪文档的版本号,防止并发冲突。

数据持久化与恢复:
Elasticsearch 数据首先写入 Lucene 的倒排索引文件,然后同步至磁盘,并配合 Translog 日志(transaction log)确保在宕机时能恢复未完全提交的数据。

原理解析

Lucene 基础:
Elasticsearch 构建在 Apache Lucene 之上,Lucene 是一个强大的文本搜索库,提供了高效的索引和搜索功能。Elasticsearch 对 Lucene 进行了封装和扩展,使其成为一个分布式系统。

分布式搜索与索引:
Elasticsearch 将索引拆分成多个分片,分散存储在不同节点上。查询时,请求会被路由到拥有相关数据分片的节点上进行本地搜索,然后将结果汇聚返回给客户端。

实时性:
Elasticsearch 支持近乎实时(Near Real-Time, NRT)的索引更新和搜索,通过异步方式将内存中的索引变更刷新到磁盘,并且在每次刷新后立即使之可用于搜索。

横向扩展:
随着数据量的增长和负载需求的变化,可以通过添加更多的节点来扩展集群容量。Elasticsearch 自动管理和均衡分片在各个节点之间的分布,确保整个系统的负载均衡。

故障转移与高可用:
每个索引分片都有相应的副本分片,分布在不同的节点上。当主分片不可用时,副本分片可以自动提升为主分片,从而维持集群的高可用性和数据完整性。

Elasticsearch 结合了 Lucene 的强大搜索能力与先进的分布式系统设计,实现了高度可伸缩、高可用且易于管理的搜索和分析平台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

StarUML6.0.1使用

1. 简介 作为一个软件开发人员,平时免不了做一定的软件设计,标准做法就是采用UML来设计: 讨论功能流程时采用时序图、活动图来表达;做业务功能架构时采用组件图来表达;做系统部署架构时采用部署图来表达;做…

因implements Interface书写顺序导致的Dubbo翻车实录

今天迁移Dubbo的代码,突然有个Service死活都找不到。 调用端报错: No provider available for the service org.ccframe.subsys.core.service.ITenantSearchService from registry 127.0.0.1:2181 on the consumer 192.168.1.88 using the dubbo version…

HTTPS如何保证数据传输的安全性 以及CA签发证书验签

暴力输出: 越看会越深入,睡前难以想通,后深入研究。得之。 有问题 请留言。 ----------追求内心的富足与平和。日行一善。 亓苏姑娘

Ollama--本地大语言模型LLM运行专家

文章目录 1、问题提出2、解决方案3、Ollama介绍3.1、Ollama的核心功能3.2、Ollama的独特之处 4、Ollama安装与使用4.1、Ollama的安装 5、使用Docker6、模型库和自定义模型7、应用场景展望8、结语 1、问题提出 使用chatgpt之类的闭源大语言模型时,我们与ai沟通的数据…

I.MX6ULL_Linux_驱动篇(54)linux 块设备驱动

前面我们都是在学习字符设备驱动,本章我们来学习一下块设备驱动框架,块设备驱动是Linux 三大驱动类型之一。块设备驱动要远比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统,本章我们重点学习一下块设备相关驱动…

【控制台警告】npm WARN EBADENGINE Unsupported engine

今天用webpack下载几个loader依赖,爆出了三个警告,大概的意思就是本地安装的node和npm的版本不是很匹配? 我的解决思路是: 先检查node和npm版本 然后去官网查找版本的对应 靠,官网404 Node.js (nodejs.org) 就找到…

操作系统:初识操作系统

目录 1.冯诺依曼体系结构 2.操作系统 2.1什么是操作系统 2.2为什么需要操作系统 2.3怎么实现操作系统 1.冯诺依曼体系结构 对于上图: 输入设备完成的是写入工作,输出设备完成输出工作,这两部分包含磁盘这类的外存。 存储器一般指的是内存…

Win UI3开发笔记(四)设置主题续2

本机深色主题下设置的背景颜色可以作用于整个对话框,本机浅色模式下设置的背景颜色只作用与下边的部分。 如果本机选深色,程序选浅色,设置为light只对上部分管用,下部分不管用。如图,左边那个hello按钮要看不见了。。…

协同办公大战再起,钉钉、飞书“决战”AI

对众多职场人来说,相信其对于钉钉、飞书、企业微信这些名字一定不会感到陌生,因为在当下的工作过程中,无论是考勤打卡,还是团队沟通协作,都离不开这些办公软件。而这些协同办公软件的出现,也为职场人的工作…

django学习记录06-Ajax的初识

Ajax请求 1.1Ajax请求与get、post请求的区别 form请求:浏览器向网站发送请求时,url和表单的形式提交 GET请求:url方式获取数据POST请求:以表单的形式提交数据 特点: 一次完整的GET或POST请求,会进行一次页面刷新 基于…

183基于matlab的非线性调频模态分解(VNCMD)

基于matlab的非线性调频模态分解(VNCMD),一种基于变分方法的信号分解技术,它将信号分解为多个模式。能够处理非线性调频信号,且对噪声具有较好的鲁棒性。VNCMD的基本原理是通过最小化信号与模式之间的差异来实现信号的分解。程序已调通&#…

Latte:一个类似Sora的开源视频生成项目

前段时间OpenAI发布的Sora引起了巨大的轰动,最长可达1分钟的高清连贯视频生成能力秒杀了一众视频生成玩家。因为Sora没有公开发布,网上对Sora的解读翻来覆去就那么多,我也不想像复读机一样再重复一遍了。 本文给大家介绍一个类似Sora的视频生…

最简单的基于 FFmpeg 的 AVDevice 例子(屏幕录制)

最简单的基于 FFmpeg 的 AVDevice 例子(屏幕录制) 最简单的基于 FFmpeg 的 AVDevice 例子(屏幕录制)简介libavdevice 使用抓屏方法gdigrabdshow 源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的 AVDevice 例子&#xff08…

ASUS华硕天选2锐龙版笔记本电脑FA506ICB/FA706IC原装出厂Windows11系统,预装OEM系统恢复安装开箱状态

链接:https://pan.baidu.com/s/122iHHEOtNUu4azhVPnxNuA?pwdsqk7 提取码:sqk7 适用型号: FA506IM、FA506IE、FA506IC、FA506IHR FA506IR、FA506IHRB、FA506ICB、FA506IEB FA706IM、FA706IE、FA706IC、FA706IHR FA706IR、FA706IHRB、F…

FFmpeg【SDK02】关于AVIO的一些使用

读取本地文件&#xff08;网络流&#xff09;信息 #include <iostream> #include <stdio.h>extern "C" { #include <libavformat\avformat.h> #include <libavutil\avutil.h> #include <libavutil\log.h> #include <libavformat\a…

CSS的浮动属性,微信web开发

面试前的准备 在这部分&#xff0c;我将详细讲解面试前我们需要做哪些方面的工作&#xff0c;以保证我们在面试过程中更加顺利。 准备一份漂亮的简历 一份漂亮的简历就是你进入大厂的敲门砖。 网上有很多教程教大家如何写出一份漂亮的简历&#xff0c;这里我就不做重复劳动了…

开源模型应用落地-工具使用篇-Ollama(六)

一、前言 在AI大模型百花齐放的时代&#xff0c;很多人都对新兴技术充满了热情&#xff0c;都想尝试一下。但是&#xff0c;实际上要入门AI技术的门槛非常高。除了需要高端设备&#xff0c;还需要面临复杂的部署和安装过程&#xff0c;这让很多人望而却步。不过&#xff0c;随着…

LiveNVR监控流媒体Onvif/RTSP功能-视频广场点击在线或离线时展示状态记录快速查看通道离线原因

LiveNVR视频广场点击在线或离线时展示状态记录快速查看通道离线原因 1、状态记录1.1、点击在线查看1.2、点击离线查看 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、状态记录 1.1、点击在线查看 可以点击视频广场页面中&#xff0c; 在线 两个字查看状态记录 1.2、点击离线查…

Thinkphp5.1中,将数组赋值给js使用

一、例如Thinkphp5.1中的的代码是这样的 $data [status > 1,msg > 加载成功,data > [id > 1,username > 小洪帽,] ];$this->assign(data,$data);二、JS代码接收PHP中的数组 注意 <> 符号是不需要放引号的。 let arr <?json_encode($data)?>…

【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效

这节我主要学习增加游戏的打击感。我们通过镜头震颤、冻结帧、增加攻击点特效&#xff0c;增加死亡。开始了。 一、添加攻击点特效 增加攻击点特效就是&#xff0c;在攻击敌人时&#xff0c;会在敌人受击点显示一个受击动画。 1.添加动画。 第一步先做个受击点动画。切换到…