分布式键控/分区/分片java库

gstyhher  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(349)

我在我的n台fronend机器上接收http请求,并希望由我的k台后端机器根据数据中的某个键来处理它们。键控必须稳定一致。我还想规模的前端和后端机器根据负载不中断。当缩放过程中丢失的数据很少时,我就没事了。
我想我可以用Kafka或者Apache·Flink来实现我的目标。也许还可以用榛子酱,因为它们看起来都很重,对我来说太重了。
有没有一个库能够以分布式的方式解决键控/分区/分片的问题?
rx集成库的加分。

qzlgjiam

qzlgjiam1#

在这种情况下,我通常使用跟踪成员身份的集群技术(hazelcast或我最喜欢的jgroups,比hazelcast轻得多)
然后将当前集群大小/成员与一个一致的散列函数(如guava)结合起来(参见https://github.com/google/guava/wiki/hashingexplained )
一致的散列将把您的数据作为密钥,当前集群成员大小作为bucket,您将得到相同bucket的一致答案。
然后使用计算出的bucket路由您的请求

irlmq6kh

irlmq6kh2#

是什么让你觉得黑兹卡斯特更重?
hazelcast实际上在一个环境中提供了一切—分片、一致的散列、分区和确保数据的高可用性等。加上简单明了的api,可以省去编写代码的许多麻烦。您所需要做的就是使用启动脚本启动一个hc集群,并调用map.put(key,value)/map.get(key)等api,这很简单,因为其他一切都由hazelcast在幕后处理。

相关问题