es切片和集群

解决单点故障

支持高并发

解决海量数据

1.cluster 集群:包含多个节点,每个节点属于哪个集群是通过一个集群名称(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

通过集群名称来决定的

2.Node 节点:集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为"elasticsearch"的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群

集群中的一个节点,节点也有一个名称

3.shard(分片):单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

4.replica(复制品):预防宕机,为主分片创建多个副本,默认创建五个,从切片默认一个,从切片可以修改。因此可以为每个shard创建多个replica副本

从分片,来做数据冗余

es的流程

一个集群里有多个节点,Node1,Node2,Node3

ES默认就是分布式存储,Es的数据存储都是分片进行存储,一个索引库下有多个主shard,当然为了解决主shard单点故障问题,每个主shard还可以有多个从shard,来做数据冗余。

1.创建索引库的时候,就要确定主shard的数量,后续shard数量是不能修改的。

2.主shard不能和它和当前它自己的从分片在同一个节点,同一家人不能都在一家公司

3.分片都是分别在各个节点上的

4.一个主可以有多个从,但是一个从只能有一个主。

5.同一个主分片的从分片,也不能在同一个节点。

6.主切片位置确定不能改,从切片可以改。

写数据时,怎么得知主分片位置

通过计算documentId 的hashi值的主shard数量,再看计算出的分片在哪个一个主分片

连接节点,存储数据,并将数据复制给从分片。

读数据:也是hash模以主切片的数量,连接该节点。获取主切片从分片信息,通过负载均衡,从多个从分片获得一个从分片,然后读。

后面我想了想,主切片存量不够了怎么办,又不能新增主切片。

我问ai,重新搞个索引库,然后多指定些主切片

为了提高并发,主切片负责写,从切片负责读。

5.集群状态,红绿灯 ,绿色健康,黄色能用(从部分不活跃),红色不健康,至少一个主 不活跃。

6.增加节点,从分片会自动负载均衡。

索引库可以有多个主分片,一个文档只存在一个分片

7.节点都是分了类型的,master节点,client节点,data节点-存放数据的

master节点:类似于注册中心,管理所有数据节点和分片的关系

client节点:负载均衡节点,客户端先连接的client节点,接收外部发生的请求,放在本地,通过计算,计算hash值,进行连接操作。

角色分配不清楚,会出现脑裂问题,高并发,既要接收数据,又要管理,又要写,脑容量不够,最好给节点分配角色。

node.master

node.data 两个都是默认为true

master:代表有资格,决定的话,node.data = false

数据节点:node.master = false

负载均衡

相关推荐
椰椰椰耶5 分钟前
【redis】全局命令set、get、keys
数据库·redis·缓存
月落星还在13 分钟前
Redis 内存淘汰策略深度解析
数据库·redis·缓存
左灯右行的爱情17 分钟前
Redis- 切片集群
数据库·redis·缓存
LKAI.18 分钟前
MongoDB用户管理和复制组
linux·数据库·mongodb
PinkandWhite43 分钟前
MySQL复习笔记
数据库·笔记·mysql
熬夜苦读学习1 小时前
库制作与原理
linux·数据库·后端
cmgdxrz2 小时前
Mysql中的常用函数
数据库·mysql
暴躁的小胡!!!2 小时前
Linux权限维持之vim python 扩展后门(五)
linux·运维·服务器·网络·安全
Amy.com2 小时前
Linux16-数据库、HTML
jvm·数据库
爱敲代码的边芙3 小时前
Golang:实时消息交互系统
运维·服务器