01 前言
我们先回忆在上文《大数据基础-3行代码实现最基本的路由分片(附代码)》的主要内容,我们介绍了哈希分片的第一类常见套路,hash取模法(即基础轮询),并在一定程度上进行延伸,引出加权轮询的概念。最后我们对基础轮训和加权轮询的优缺点进行考量,其虽然逻辑清晰、复杂度低,但是灵活性较差。当节点发生变化时,会导致映射关系全部打乱,已经分配的数据也需要根据新的映射关系重新分配。
那怎么样能改进基础轮询的痛点问题呢?
本篇我们就带着这个问题一步一步来深入到本篇的主题,哈希分片的第二类方法:虚拟桶。
02 解题—寻找核心问题点
来,我们先不着急于破题,首先分析下基础轮询,有关灵活性缺失的核心矛盾点:
-
分片层和物理节点层重合。
-
hash取模的方法对取模数值非常敏感,牵一发而动全身。
03 破题—对症下药
-
解决层次模糊的问题
在通用的路由分片模型中,存在着Key-Patition映射和Partition-Machine映射,其代表着数据记录、分片、物理节点3个角色存在其中,因此对于基础轮询而言,其分层方式是有悖于通用的路由分片模型。我们需要对其进行层次拆分。如下图所示,将原本强耦合的两层拆分成弱耦