首页 > 其他分享 >ES集群分片副本

ES集群分片副本

时间:2023-10-14 16:02:37浏览次数:27  
标签:index 副本 分片 oldxu 节点 ES

5 ES集群分片副本

5.1 提高ES集群可用性

如何提高 ES 集群系统的可用性;有如下两个方面;
服务可用性:
1.2个节点的情况下,允许其中1个节点停止服务;
2.多个节点的情况下,坏的节点不能超过集群一半以上;
数据可用性
1.通过副本 replication 解决,这样每个节点上都有完备的数据。
2.如下图所示,node2上是 oldxu_index 索引的一个完整副本数据。

ES集群分片副本_数据

5.2 增大ES集群的容量

1、如何增大 ES 集群系统的容量;我们需要想办法将数据均匀分布在所有节点上;
引入分片 shard 解决;

2、什么是分片,将一份完整数据分散为多个分片存储;
2.1. 分片是 es 支持 Pb 级数据的基石
2.2 分片存储了索引的部分数据,可以分布在任意节点上
2.3 分片存在主分片和副本分片之上,副本分片主要用来实现数据的高可用
2.4 副本分片的数据由主分片同步,可以有多个,用来提高读取数据性能
注意:主分片数在索引创建时指定且后续不允许在更改;默认ES7分片数为1个

3、如下图所示:在3个节点的集群中创建
oldxu_index 索引,指定3个分片,和1个副本

# 创建索引,设定主分片和副本分片 3 1 =6
PUT /oldxu_index
{
  "settings": {
    "index": {
      "number_of_shards": 3,
      "number_of_replicas": 1
    }
  }
}

# 动态修改副本分片
PUT /oldxu_index/_settings
{
  "number_of_replicas": 9
}

ES集群分片副本_数据_02

点击more----> create index

ES集群分片副本_数据_03

结果展示

ES集群分片副本_增加节点_04

5.3 增加节点能否提高容量

问题:目前一共有3个ES节点,如果此时增加一个新节点是否能提高 oldxu_index 索引数据容量?
答案:不能,因为 oldxu_index 只有3个分片,已经分布在3台节点上,那么新增的第四个节点对于oldxu_index 而言是无法使用到的。所以也无法带来数据容量的提升

ES集群分片副本_硬件资源_05

5.4 增加副本能否提高读性能

问题:目前一共有3个ES节点,如果增加副本数是否能提高 oldxu_index 的读吞吐量;
答案:不能,因为新增的副本还是会分布在这 node1、node2、node3 这三个节点上的,还是使用了相同的资源,
也就意味着有读请求来时,这些请求还是会分配到node1、node2、node3 上进行处理、也就意味着,还是利用了相同的硬件资源,所以不会提升读性能

ES集群分片副本_硬件资源_06

如果需要增加读吞吐量性能,应该怎么来做
答案:增加读吞吐量还是需要添加节点,比如在增加三个节点 node4、node5、node6 那么将原来的 R0、R1、R2 分别迁移至新增的三个节点上,
当有读请求来时会被分配 node4、node5、node6,也就意味着有新的 CPU、内存、IO,这样就不会在占用 node1、node2、node3 的硬件资源,
那么这个时候读吞吐量才会得到真正的提升;

ES集群分片副本_硬件资源_07

5.5 副本与分片总结

分片数和副本的设定很重要,需要提前规划好
1、过小会导致后续无法通过增加节点实现水平扩容;
2、设置分片过大会导致一个节点上分布过多的分片,造成资源浪费。分片过多也会影响查询性能;

标签:index,副本,分片,oldxu,节点,ES
From: https://blog.51cto.com/u_13236892/7862116

相关文章

  • Codeforces Round 748 (Div. 3) B. Make it Divisible by 25
    给一个正整数\(n\),在一步操作中可以移除\(n\)中的一个。当\(n\)只剩下一位时将不能再操作,如果过程中产生了前导\(0\),则会被自动移除且不耗费操作次数。询问最少需要多少次操作可以使得\(n\)被\(25\)整除。显然一个正整数\(x\)若可以被\(25\)整除,只需要考虑最后......
  • lesson13-键盘监听事件
      packagecom.zym.lesson13;importjavax.swing.*;importjava.awt.*;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;publicclassTestKeyboardListener{publicstaticvoidmain(String[]args){newKeyWinFrame("lesso......
  • 快速理解 TypeScript 的逆变和协变
    快速理解TypeScript的逆变和协变发布于 2022-06-0608:36:428081举报深入学习TypeScript类型系统的话,逆变、协变、双向协变、不变是绕不过去的概念。这些概念看起来挺高大上的,其实并不复杂,这篇文章我们就来学习下它们吧。类型安全和型变TypeScript......
  • MFC静态反编译GetMessageMap相关查找方法
    MFC中GetMessageMap包含对多数消息处理的结构,界面菜单,按钮都在这,找到GetMessageMap很关键structAFX_MSGMAP_ENTRY{UINTnMessage;//windowsmessageUINTnCode;//controlcodeorWM_NOTIFYcodeUINTnID;//controlID(or0forwindowsmessage......
  • ORACLE:集群oracle查看session的语句
    1.查看session可以把status改为ACTIVE和INACTIVEv$session和gv$session只在RAC中区别明显,有g是全局的,rac的两个数据库中的内容,没有是但实例的数据库的,内容不全rac么?  gv$开头视图是rac全局的,v$开头是本节点的gv$session比v$session多一个字段而已: INST_ID selectmachi......
  • lesson12-窗口监听事件
      packagecom.zym.lesson12;importjavax.swing.*;importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassTestWindowListener{publicstaticvoidmain(String[]args){newWinFrame("less......
  • Educational Codeforces Round 116 (Rated for Div. 2) A. AB Balance
    给一个长为\(n\)的字符串\(s\),只包含\(0\)\(1\)两种字符。定义\(AB(s)\)是\(s\)中出现的\(01\)子串个数,\(BA(s)\)是\(s\)中出现的\(10\)子串个数。在一步操作中,可以选择一个字符进行异或。询问最小的操作次数使得\(AB(s)=BA(s)\)。显然连续的\(11\)或连......
  • Codeforces Round 903 (Div. 3) E. Block Sequence(DP)
    CodeforcesRound903(Div.3)E.BlockSequence思路:设dp[i]为当i~n为完美的最少删除次数dp[n]=1,dp[n+1]=0;从后至前对于dp[i]更新若直接删除当前点,则为dp[i+1]+1若不删除则为min(dp[i+a[i]+1],dp[i]);i+a[i]+1为a[i]不能覆盖的位置#defineintlonglong#define......
  • AtCoder Beginner Contest 321 C-321-like Searcher
    可以观察到0-9的所有子集都能恰组成一个满足题目条件的数字,所以共有1022个数{除空集和0}方法就是二元枚举,找出所有数然后排序。#include<iostream>#include<cstdio>#include<vector>#include<algorithm>usingnamespacestd;usingll=longlong;vector<ll>v;sig......
  • asp.net 分片下载
    参考:https://learn.microsoft.com/en-us/answers/questions/726990/serving-video-file-stream-from-asp-net-core-6-minihttps://khalidabuhakmeh.com/partial-range-http-requests-with-aspnet-core HTTPRangeRequestsandPartialResponsesWithASP.NETCoreLongg......