分布式键控/分区/分片 Java 库
Distributed Keying / Partitioning / Sharding Java library
我在我的 N 台前端机器上收到 http 请求,并希望根据数据中的某个键让我的 K 台后端机器处理它们。
键控必须稳定一致。我还想根据负载不间断地扩展前端和后端机器。当缩放时丢失很少的数据时我很好。
我想我可以用 kafka 或 apache flink 来实现我的目标。也许也可以使用 hazelcast,因为它们看起来都很重,对我来说太多了。
是否有一个库以分布式方式解决键控/分区/分片方面的问题?
rx 集成库加分。
在这种情况下,我通常使用跟踪成员资格的集群技术(hazelcast 或我最喜欢的 jgroups,比 hazelcast 轻得多)
然后将当前集群 size/members 与像 Guava 一样的一致性哈希函数结合起来(参见 https://github.com/google/guava/wiki/HashingExplained )
一致性哈希会将您的数据作为键,将当前集群成员大小作为存储桶,您会得到相同数量的存储桶的一致答案。
然后使用计算的存储桶来路由您的请求
是什么让您认为 Hazelcast 更重?
Hazelcast 实际上在单一环境中提供了一切 - 分片、一致性哈希、分区和确保数据的高可用性等。此外,简单直接的 API 消除了编写代码的许多痛苦。您需要做的就是使用启动脚本启动 HC 集群并调用 map.put(key, value)/map.get(key) 等 API,就这么简单,因为其他一切都由黑泽尔卡斯特在幕后。
我在我的 N 台前端机器上收到 http 请求,并希望根据数据中的某个键让我的 K 台后端机器处理它们。 键控必须稳定一致。我还想根据负载不间断地扩展前端和后端机器。当缩放时丢失很少的数据时我很好。
我想我可以用 kafka 或 apache flink 来实现我的目标。也许也可以使用 hazelcast,因为它们看起来都很重,对我来说太多了。
是否有一个库以分布式方式解决键控/分区/分片方面的问题?
rx 集成库加分。
在这种情况下,我通常使用跟踪成员资格的集群技术(hazelcast 或我最喜欢的 jgroups,比 hazelcast 轻得多)
然后将当前集群 size/members 与像 Guava 一样的一致性哈希函数结合起来(参见 https://github.com/google/guava/wiki/HashingExplained )
一致性哈希会将您的数据作为键,将当前集群成员大小作为存储桶,您会得到相同数量的存储桶的一致答案。
然后使用计算的存储桶来路由您的请求
是什么让您认为 Hazelcast 更重?
Hazelcast 实际上在单一环境中提供了一切 - 分片、一致性哈希、分区和确保数据的高可用性等。此外,简单直接的 API 消除了编写代码的许多痛苦。您需要做的就是使用启动脚本启动 HC 集群并调用 map.put(key, value)/map.get(key) 等 API,就这么简单,因为其他一切都由黑泽尔卡斯特在幕后。