最近由于项目需要实现一个负载均衡的功能。考虑到以往的技术应用,准备参考Mycat的一致性hash算法,实现此功能。查阅网上资料和Mycat一致性hash算法的源码后,编写了一个简单的实现算法。
具体实现如下:
缓存实现参考:https://blog.csdn.net/weixin_35971547/article/details/89427914
import com.gccp.translate.getway.cache.LocalCache;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.hash.Hashing;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Objects;
import java.util.Set;
import java.util.SortedMap;
import java.util.stream.IntStream;
/**
* @author hilbert.xu
* @date 2019/4/20
*/
@Component
public class ConsistentHash {
/**
* 虚拟节点数
*/
private static final int virtualNodeNum = 160;
/**
* 获取服务