解决单点故障
支持高并发
解决海量数据
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
负载均衡