首页 > 其他分享 >29_分布式文档系统_深度图解剖析document数据路由原理

29_分布式文档系统_深度图解剖析document数据路由原理

时间:2024-10-01 19:45:37浏览次数:7  
标签:hash primary 29 shard routing document id 路由

(1)document路由到shard上是什么意思?

(2)路由算法:shard = hash(routing) % number_of_primary_shards

举个例子,一个index有3个primary shard,P0,P1,P2

每次增删改查一个document的时候,都会带过来一个routing number,默认就是这个document的_id(可能是手动指定,也可能是自动生成)
routing = _id,假设_id=1

会将这个routing值,传入一个hash函数中,产出一个routing值的hash值,hash(routing) = 21
然后将hash函数产出的值对这个index的primary shard的数量求余数,21 % 3 = 0
就决定了,这个document就放在P0上。

决定一个document在哪个shard上,最重要的一个值就是routing值,默认是_id,也可以手动指定,相同的routing值,每次过来,从hash函数中,产出的hash值一定是相同的

无论hash值是几,无论是什么数字,对number_of_primary_shards求余数,结果一定是在0~number_of_primary_shards-1之间这个范围内的。0,1,2。

(3)_id or custom routing value

默认的routing就是_id
也可以在发送请求的时候,手动指定一个routing value,比如说put /index/type/id?routing=user_id

手动指定routing value是很有用的,可以保证说,某一类document一定被路由到一个shard上去,那么在后续进行应用级别的负载均衡,以及提升批量读取的性能的时候,是很有帮助的

(4)primary shard数量不可变的谜底

标签:hash,primary,29,shard,routing,document,id,路由
From: https://www.cnblogs.com/siben/p/18443152

相关文章

  • 32_分布式文档系统_document查询内部原理图解揭秘
    1、客户端发送请求到任意一个node,成为coordinatenode2、coordinatenode对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primaryshard以及其所有replica中随机选择一个,让读请求负载均衡3、接收请求的node返回document给coordinatenode4、coor......
  • 17_document的全量替换、强制创建以及图解lazy delete机制
    1、document的全量替换2、document的强制创建3、document的删除1、document的全量替换(1)语法与创建文档是一样的,如果documentid不存在,那么就是创建;如果documentid已经存在,那么就是全量替换操作,替换document的json串内容(2)document是不可变的,如果要修改document的内容,第一种......
  • 14_初步解析document的核心元数据以及图解剖析index创建反例
    1、_index元数据2、_type元数据3、_id元数据{"_index":"test_index","_type":"test_type","_id":"1","_version":1,"found":true,"_source":{"test_content":&quo......
  • 15_document id的手动指定与自动生成两种方式解析
    1、手动指定documentid2、自动生成documentid1、手动指定documentid(1)根据应用情况来说,是否满足手动指定documentid的前提:一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在......
  • 16_document的_source元数据以及定制返回结果解析
    1、_source元数据put/test_index/test_type/1{"test_field1":"testfield1","test_field2":"testfield2"}get/test_index/test_type/1{"_index":"test_index","_type":"test_type&qu......
  • 性能优化之解决路由缓存问题
    什么路由缓存问题过时的路由信息:路由器缓存的路由信息如果没有及时更新,可能会导致数据包被错误地转发到过时或不可用的路径。缓存冲突:当多个路由条目相互冲突时,可能导致路由器选择错误的路径,从而影响数据流的顺畅性。缓存溢出:如果路由器的缓存空间不足,可能会导致新的路由......
  • CF429E Points and Segments 题解
    题目链接点击打开链接题目解法真难啊/yun把区间染成红色看作区间\(+1\),染成蓝色看作区间\(-1\),要求是每个点上的数\(\in\{-1,0,1\}\)可以选择的数有\(-1,1\)不太好做,我们考虑将限制变成每个点上的数只能为\(0\)我们记经过点\(x\)的线段数量为\(cnt_x\)如果\(cnt......
  • 【使用MLP在MANET中进行路由验证】使用多层感知神经网络进行移动自组网中的路由验证(Ma
      ......
  • traceroute命令:路由追踪
    一、命令简介​traceroute​是一个常用的网络诊断工具,用于追踪数据包从源主机到目标主机所经过的路由路径,并显示每一跳的延迟。这个命令可以帮助网络管理员或用户识别网络连接中的问题所在,比如延迟过高、路由故障或者数据包丢失。‍二、命令参数基本用法traceroute[......
  • 数据通信——动态路由协议RIP
    目录一.动态路由协议分类二.距离矢量路由协议(理解)三. 链路状态路由协议(理解)四.RIP的工作原理五.路由表的形成过程 六.RIP的度量值(条数)cost七.RIP的版本(v1和v2)八.RIP解决路由环路(2)水平分割:从一接口上学到的路由信息,不会再从这个接口上发出去(3)毒性逆转(与水平分割......