首页 > 其他分享 >go-zero的一致性hash

go-zero的一致性hash

时间:2023-01-14 22:01:06浏览次数:42  
标签:hash 切片 zero 虚拟 go 添加 节点 物理

最近在尝试使用图来记录

如何处理一个虚拟节点映射到多个物理节点(hash冲突,也就是图中(a2,b2在一起了,我们只能找到最后映射的物理节点))

首先 连线对应的是一个物理节点的切片

  1. add: 会添加进这个切片中
  2. get: 如果出现冲突,我们会再次进行hash得到新的\(index\).
  3. delete: 如果是多个物理节点(冲突),遍历切片,将\(hash != hash(物理节点)\) 的物理节点添加到原有切片

添加

根据参数,创建不同数量的虚拟节点,并维护 虚拟节点->物理节点的关系.

image

标签:hash,切片,zero,虚拟,go,添加,节点,物理
From: https://www.cnblogs.com/jgjg/p/17052647.html

相关文章

  • HashMap的putVal方法和resize
    HashMap的putVal方法和resizeputVal方法解析其实HashMap的简单存储过程已经在前面一篇文章演示过了,这里主要是来看一下putVal方法。首先,先看一下putVal方法的源码:finalVp......
  • Go 变量定义
    packagemainimport("fmt""reflect")funcmain(){var(x,yint)//打印变量类型fmt.Println("x的类型:",reflect.TypeOf(x))fmt.Pri......
  • go binary.read invalid type *interface 的解决方法
    原来的代码binary.readinvalidtype*interfacefuncNewBusiness()*PacketBusiness{ vardict=make(map[uint32]interface{}) //dict[model.EventMCUUDPTBarPush......
  • go-rod 读取cookie
      //readnetworkvaluesfori,cookie:=rangepage.MustCookies(){log.Printf("chromecookie%d:%+v",i,cookie)} ......
  • go-rod docker启动
        ......
  • Go - iota
    const(x=iota//0y//1z//2)const(a=iota//0b//1c=100//100d//100e=iota//4f......
  • Google_Book_20Things.前言以及前四项学习笔记
    20THINGSILEARNEDABOUTBROWSERSANDTHEWEBIllustratedbyChristophNiemann.WrittenbytheGoogleChromeTeam.关于浏览器与网络的20件事前言(Foreword)任何......
  • golang交叉编译
    先设置为运行平台,再设置内核类型,再编译产出常见平台有:android、darwin、linux、windows内核类型提供uname-a可以查看:amd64、arm64、386  setGOOS=linuxsetGOARC......
  • Java集合 - ConcurrentHashMap
    介绍ConcurrentHashMap技术是为了解决问题而生的,ConcurrentHashMap解决了多个线程同时操作一个HashMap时,可能出现的内部问题。当多个线程同时操作一个HashMap时,有可......
  • Java集合 - ConcurrentHashMap
    介绍ConcurrentHashMap技术是为了解决问题而生的,ConcurrentHashMap解决了多个线程同时操作一个HashMap时,可能出现的内部问题。当多个线程同时操作一个HashMap时,有可......