金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks

# 考察go一致性hash库


(金庆的专栏 2020.2)

github 搜 consistent, 按星数依次察看

## stathat/consistent


Consistent hash package for Go.

688星

stathat 应该是个数据统计的云服务。consistent被认为是生产可用的。
所有文档都在 godoc. 示例和接口简洁易懂。

## lafikl/consistent


A Go library that implements Consistent Hashing and Consistent Hashing With Bounded Loads.

575 星

有界负载的一致性哈希算法

示例中是 c.GetLeast() 获取最小负载,不像是一致性hash的应用。
从代码看,应该是最近的未满载,不是最小负载。

`MaxLoad()`说明显示最大负载是自动设置为 (total_load/number_of_hosts)*1.25。

`const replicationFactor = 10`

没有一次获取多个的接口。

## serialx/hashring


Consistent hashing "hashring" implementation in golang (using the same algorithm as libketama)

367 星

是从 Python 库移植的。可以设置 weight.

示例
```
replicaCount := 3
ring := hashring.New(serversInRing)
server, _ := ring.GetNodes("my_key", replicaCount)
```
实际上是 GetN 的功能。内部实现缺少 replicationFactor

## buraksezer/consistent


Consistent hashing with bounded loads in Golang

263 星

未提供缺省hash函数。

多了一个`PartitionCount`

c.loads 仅用于查询负载,并没有用于有界负载。

结论是这个不是有界负载的一致性哈希,同时一致性哈希的实现不同寻常。

## 其他


jump hash 不能移除节点,不考虑

### dgryski/go-jump


go-jump: Jump consistent hashing

281 星

### lithammer/go-jump-consistent-hash


⚡️ Fast, minimal memory, consistent hash algorithm 

138 星
posted on 2020-02-22 12:45 金庆 阅读(611) 评论(0)  编辑 收藏 引用 所属分类: 3. Golang

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理