7个版本 (4个破坏性更新)
0.5.0 | 2020年8月21日 |
---|---|
0.4.1 | 2020年8月14日 |
0.3.1 | 2020年8月13日 |
0.2.0 | 2020年8月11日 |
0.1.0 | 2020年8月10日 |
#22 in #键哈希
每月32次下载
11KB
232 行
一致性哈希
一致性哈希是一种用于在高度动态环境中分配值到分区的分布式系统算法。
示例
使用该算法进行LB redis缓存。(Crate redis = "0.17.0"
)。
而键必须实现哈希特来定义哈希策略。
值必须实现驱逐特来定义再平衡行为。
let mut ring: ConsistentHash<String,redis::Client> = match ConsistentHash::new(100).unwrap();
ring.add_node("redis://my-redis-node-1".to_string(), redis::Client::open("redis://my-redis-node-1")?).unwrap();
ring.add_node("redis://my-redis-node-2".to_string(), redis::Client::open("redis://my-redis-node-2")?).unwrap();
ring.add_node("redis://my-redis-node-3".to_string(), redis::Client::open("redis://my-redis-node-3")?).unwrap();
ring.add_node("redis://my-redis-node-4".to_string(), redis::Client::open("redis://my-redis-node-4")?).unwrap();
let client = match ring.get_node(String::from("some-key")){
Some(node) => node,
None => panic!("Not found!"),
};
let mut con = client.get_connection()?;
con.get("some-key");
依赖项
~540KB
~10K SLoC