网站首页 > 技术文章 正文
一、整体架构图如下
Cluster:ES集群,高可用和高容错,一个集群下有多个节点。
Node:集群中得每个实例成为节点。节点根据配置不同有各自不同得职责:
1.主节点:负责集群层面得工作,如创建、删除索引,跟踪节点位置,决定分片位置。不负责读写数据
2.数据节点:负责数据层面得工作,如数据的保存、修改、删除。对CPU、内存、IO要求较高
3.预处理节点:负责写入数据前的一些预处理
4.协调节点:用以转发客户端的请求,一般情况下,每个节点都是协调节点
Index:索引,指向一个或多个物理存储分片的逻辑命名空间,类似于Oracle的库或表空间
Type:类型,类似于Oracle的表。ES6之后,一个Index下只允许建一个Type,ES7之后,取消了Type的概念
Shard:分片,底层的基本读写单位,每个分片都是一个Lucene实例,每个分片都有完整的建立索引处理请求的能力。多分片是为了分割巨大索引,实现并发读写。分为主分片(PrimaryShard)和副分片(ReplicaShard)来实现高可用和读写分离。查询可在副分片上执行
Segment:段,分片的Lucene由多个子索引(Lucene.index)组成,这些子索引就是段。每个段都包含索引文件和数据文件
Document:文档,是可被索引的基础单位信息,类似于Oracle表中的一条数据
Field:域,文档中不同类型的信息,类似于Oracle表中的字段,也就是一条数据的一个字段
Term:词,索引的最小单位,是经过分词处理后的字符串
二、Shard读写逻辑
如下图,集群内有3个节点,每个节点2个分片,R表示ReplicaShard副分片,P表示PrimaryShard主分片。node1为分片2的主分片P1,node3有分片1的主分片P0,而node2的2个分片都是副分片
1.写入流程如下:
(1)客户端向Node1(master)发送新建、索引或者删除请求。
(2)根据节点使用文档的_id确定文档属于分 0(_id%2=0,通过取余确定数据所在分片)。请求会被转发到Node3因为分片 0 的主分片目前被分配在 Node3上。
(3)Node 3在主分片上面执行请求。如果成功了,它将请求并行转发到 Node 1和 Node 2 的副本分片上。一旦所有的副本分片都报告成功, Node 3 将向协调节点报告成功,协调节点向客户端报告成功。
在客户端收到成功响应时,文档变更已经在主分片和所有副本分片执行完成,变更是安全的。
(现在的es版本是可用shard过半就可以写入,成功后会发送消息给master,所以如果分片设置为1主1副本的时候,那默认的就是主分片写如成功了就会返回成功。)
2.查询流程如下:
(1)客户端向Node1发送获取请求。
(2)节点使用文档的_id来确定文档属于分片0,分片0的数据在三个节点上都有。 在这种情况下,它会根据负载均衡策略将请求转发到其中一个,比如Node2 。
(3)Node2将文档返回给Node1然后将文档返回给客户端。
在处理读取请求时,协调结点在每次请求的时候都会通过轮询所有的副本分片来达到负载均衡。
在文档被检索时,已经被索引的文档可能已经存在于主分片上但是还没有复制到副本分片。 在这种情况下,副本分片可能会报告文档不存在,但是主分片可能成功返回文档。
猜你喜欢
- 2025-07-17 Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 2025-07-17 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 2024-10-23 oracle 三种高可用方案 oracle高性能解决方案
- 2024-10-23 看架构专家大话OracleRAG:集群+高可用性+备份与恢复
- 2024-10-23 Oracle 19c集群心跳网络全部配错该如何抢救
- 2024-10-23 快速了解Canal 快速了解汉字知的读音写法等知识点
- 2024-10-23 详解RAC并发逻辑、硬件架构、软件架构拓扑与原理解析
- 2024-10-23 基于mycat+haproxy+keepalived搭建mysql集群(Haproxy篇)
- 2024-10-23 Oracle基础知识之asm磁盘组 oracleasm磁盘管理
- 2024-10-23 学习实践-Linux Hadoop集群配置与搭建
你 发表评论:
欢迎- 612℃几个Oracle空值处理函数 oracle处理null值的函数
- 603℃Oracle分析函数之Lag和Lead()使用
- 592℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 589℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 583℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 576℃【数据统计分析】详解Oracle分组函数之CUBE
- 566℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 558℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)