应用背景
- 解决分布式环境中数据倾斜和容错问题
- 解决普通Hash方法节点失效的造成的重Hash问题
一致性Hash原理
普通Hash在分布式环境中应用的问题
-
在数据并行的分布式系统中,上游算子实例的输出怎样分配到下游算子实例就涉及到Hash的应用。以Flink为例,如下图所示,下游算子有两个实例,上游的分发数据策略有——一对一转发、广播、基于键值、随机这四种。其中基于的键值的keyby()方法就是使用hash算法来对同一key值对应的键值对进行分配。
//-------segment public static int computeKeyGroupForKeyHash(int keyHash, int maxParallelism) { return MathUtils