繁体   English   中英

跨群集节点负载均衡多个主题订阅

[英]Load-balancing multiple topic subscriptions across nodes of cluster

我们的应用程序订阅主题列表,并且这些主题可以动态添加/删除。 我们计划将此类应用程序节点组成集群,以便每个节点都可以订阅不同的主题集。 与群集中跨节点的负载平衡订阅类似。 我们不能在多个节点上进行相同主题的订阅,因为我们需要避免在节点之间重复处理同一消息。

有什么解决方案可以实现以下目的:

  1. 如果必须订阅新主题,则负载较小(主题订阅较少)的节点将订阅该主题。
  2. 当节点脱机时,其所有主题将被群集中其他活动的节点订阅。

Zookeeper可以用于在各个节点之间协调此信息吗?

尝试制作一个将执行负载平衡操作的负载平衡器应用程序,并且应将其连接到两个节点。 它将对两个节点进行定期运行状况检查,并以循环方式转发订阅请求。 如果某个节点发生故障,则将通过定期运行状况检查来提示该节点,然后将订阅请求转发到一个连接的节点。 您可以使用Netty API制作使用TCP / IP连接的负载均衡器。

是的,可以使用Zookeeper来实现此逻辑。 看一下类似的Apache Helix Rabbit MQ配方。

http://helix.apache.org/0.6.4-docs/recipes/rabbitmq_consumer_group.html

这说明了单个主题的逻辑。 Helix将主题/分区分布在集群中的所有节点上。 如果要限制分区分配到的节点,则可以相应地标记资源和节点。 例如,如果您有节点A,B,C,D,E,F

如果希望主题T1,T2仅在A和B上,则可以将A和B标记为X,也可以将Helix中的资源T1和T2标记为X。Helix将确保T1和T2仅由A和B订阅。 B.

注意:Helix中的一个节点/实例可以具有多个标签。 1和2应该由Helix自动处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM