win环境redis分片问题:算法实现与倾斜测试

来源:7-4 Coding+集群分布式区别讲解

Tom_Dragon

2018-12-05

Geely老师,

最近又回过头来再看了下视频,在redis集群这块,我发现,
1.视频中搭建redis集群的时候没有使用Ruby,那么这里的2个redis节点是不是其实还是2个独立的节点?
2.那这里的一致性算法是不是其实是在redis的客户端完成的,然后再存到对应的server中?
这是源码里的:代码里怎么体现就把一致性算法实现了呢?
public ShardedJedisPool(final GenericObjectPoolConfig poolConfig,
List shards, Hashing algo, Pattern keyTagPattern) {
super(poolConfig, new ShardedJedisFactory(shards, algo, keyTagPattern));
}
public ShardedJedisFactory(List shards, Hashing algo,
Pattern keyTagPattern) {
this.shards = shards;
this.algo = algo;
this.keyTagPattern = keyTagPattern;
}

public interface Hashing {
public static final Hashing MURMUR_HASH = new MurmurHash();

  1. 我用win环境测试的发现,在循环50W次下还是分布还是很均匀…(怎么测试实现倾斜?)
    图片描述
写回答

2回答

Geely

2018-12-23

  1. 是独立的节点,通过客户端进行集群,并不是cluster

  2. 理解的正确

  3. 倾斜是理论上的,因为源码里面已经增加虚拟节点,同学可以去源码里看一下

0
0

kimvra

2018-12-08

你一直往上找,找到Sharded ,这个类里面就是一致性哈希的实现,看getShardInfo这个方法。


public S getShardInfo(byte[] key) {
SortedMap<Long, S> tail = nodes.tailMap(algo.hash(key));
if (tail.isEmpty()) {
   return nodes.get(nodes.firstKey());
}
return tail.get(tail.firstKey());
  }

0
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2688 学习 · 947 问题

查看课程