我们的应用程序订阅了一个主题列表,这些主题可以动态添加/删除。我们计划拥有此类应用程序节点的集群,以便每个节点可以订阅不同的主题集;类似于跨群集中节点的负载平衡订阅。我们不能在多个节点上拥有相同的主题订阅,因为我们需要避免跨节点重复处理相同的消息。
下面是否有任何解决方案:
Zookeeper可以用于此目的,以跨节点协调这些信息吗?
答案 0 :(得分:0)
尝试创建一个负载平衡应用程序,它将执行负载平衡操作,并且应该连接到两个节点。它将对两个节点进行定期健康检查,并以循环方式转发订阅请求。如果节点发生故障,那么它将通过常规运行状况检查得到通知,然后它会将订阅请求转发给一个连接的节点。您可以使用Netty API来创建使用TCP / IP连接的负载均衡器。
答案 1 :(得分:0)
是的,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。
注意:Helix中的节点/实例可以有多个标记。 1和2应由Helix自动处理