之前给项目里的一个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的博客

最新文章

  1. 移动端bug~~移动端:active伪类无效的解决方法【移动端 :active样式无效】
  2. 11个强大的Visual Studio调试小技巧
  3. SVMtoy
  4. AngularJs编写指令
  5. 管理Java垃圾回收的五个建议
  6. Java [leetcode 37]Sudoku Solver
  7. [POJ2234]Matches Game
  8. linux IO 内核参数调优 之 原理和参数介绍
  9. xml解析案例
  10. Cordic算法——圆周系统之向量模式
  11. List Set Map比较
  12. Code First 不自动生成数据库
  13. 对YUV数据进行裁剪
  14. Mybatis笔记二:接口式编程
  15. AT91RM9200---电源管理控制器(PMC)介绍
  16. nyoj-310-河南省第四届省赛题目-二分+dinic
  17. TCL函数“参数自动补全” 与 “help 信息显示”
  18. 从汉诺塔游戏理解python递归函数
  19. Java虚拟机性能监控与调优
  20. [转载]Elasticsearch索引重建(Rebuild)

热门文章

  1. efcore adddbcontext
  2. 【Ajax】Ajax入门总结
  3. 使用dapper遇到的问题及解决方法
  4. Python数据分析揭秘知乎大V的小秘密
  5. 我用python爬取了知乎Top沙雕问题排行榜
  6. toUpperCase(),toLowerCase()将字符串中的英文转换为全大写或全小写
  7. Javase之多线程(2)
  8. querySelectorAll和getElementsByClassName获取元素的区别
  9. 熟悉的味道——从Java单例写到C++单例
  10. web网页利用JavaScript实现对摄像头的调用