一致性hash算法实现数据库分库操作

关于一致性hash原理请参看 https://liuhuiyao.blog.csdn.net/article/details/106523561

一致性hash的原理,是构造一个hash环,设置X个节点,节点按从小到大排序,如果此时要值A映射到hash环,则找到大于A的第一个hash环节点即可。

如此,就可以动态增加删除hash环上的节点。只有少部分的映射关系会改变。

但是有个问题就是hash环的节点分布如何保证均衡。可以使用虚拟节点。

一致性hash算法实现数据库分库操作_第1张图片

 

模拟基于一致性Hash分库代码

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
/**
 * 一致性hash
 * @Description:   
 * @author: lhy 
 * @date:   2020年7月28日 下午12:30:25   
 *
 */
public class YzxHash{
	
	public static void main(String[] args) {
		HashCircle hc=new HashCircle();
		hc.ad

你可能感兴趣的:(算法)