之前给项目里的一个5000多万的表做了水平分表,暂时容量还够,用的根据id一致性hash分了32个表,每个表大概百来万数据。虽然还不需要扩容,但是准备写个demo后续如果需要扩容可以参考
hash方法用的md5,虚拟节点每个表插入了128个,扩容的时候如果按照2的倍数扩大,迁移率每个表大概在0.5左右
用一个TreeMap存放虚拟节点
private static SortedMap<Long, String> virtualMap = new TreeMap<>();
hash方法
初始化一致性hash,返回统计map
根据id获取表
测试下
结果
代码可以在Github上找到
本文来自chentiefeng的博客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。