一致性hash应用-分表扩容

之前给项目里的一个5000多万的表做了水平分表,暂时容量还够,用的根据id一致性hash分了32个表,每个表大概百来万数据。虽然还不需要扩容,但是准备写个demo后续如果需要扩容可以参考

hash方法用的md5,虚拟节点每个表插入了128个,扩容的时候如果按照2的倍数扩大,迁移率每个表大概在0.5左右

用一个TreeMap存放虚拟节点

    private static SortedMap virtualMap = new TreeMap<>();

hash方法

初始化一致性hash,返回统计map

根据id获取表

测试下

结果

代码可以在Github上找到

本文来自chentiefeng的博客

你可能感兴趣的:(Java)