我们正在构建一个基于jgroups的集群节点消息系统,该系统将取代基于JDBC的集群节点消息系统 . 我的组织中有很多人担心向已经繁忙的网络添加更多的组播流量,所以我在UDP /组播解决方案上得到了一些阻力 .
我知道JGroups可以配置为仅TCP,但我不想强制配置步骤进入应用程序,其中必须在配置文件中提前识别每个节点 .
我当时希望看看我们是否可以在这里使用混合工作,其中多播仅用于组成员操作(发现,心跳,故障检测),但是消息传递都是基于TCP的 .
但是,我没有在我的搜索中找到相关的示例,因此我质疑JGroups是否可以这样配置 .
可以,以及任何示例配置显示如何?
谢谢!
1 回答
至于发现,使用MPING可以做到这一点 - 它使用IP多播来发现新节点,尽管这些稍后通过主传输(在您的情况下为TCP)进行响应 .
至于FD / FD_ALL,我认为不可能,协议被设计为使用主传输 . 你必须编写自己的FD协议,不应该那么复杂 .
但是,如果您可以使用UDP,则可能应该使用UDP . 您是否向一个节点,多个节点或所有节点发送消息取决于您 - 对于一个目的地,将有单播UDP,对于少数目的地(如果您设置任播选项)将使用多个单播并且仅针对所有节点UDP将通过多播减少网络负载 . 这完全取决于应用程序,UDP只允许多播 .