如何使用zookeeper监视在不同计算机上运行的Java独立应用程序的状态?如果任何java应用程序未运行/ shutdown / killed,则应发送通知或触发某个事件。
Ex:我的java程序(Sample.java)在机器A,B,C上以nohup模式运行,无论如何,程序在机器A上被杀死。我们怎么知道机器A上的程序被关闭/被杀死。任何想法都会有所帮助。
答案 0 :(得分:0)
我建议阅读Apache ZooKeeper文档的一些特定部分:
Ephemeral Nodes:进程可以创建一个短暂的znode,如果该进程无法维护其ZooKeeper会话,则会自动删除此znode,例如进程异常终止。
Group Membership:这描述了使用临时znode实现组成员资格的方法。父znode充当表示组的容器,每个单独的进程在该父znode下创建一个短暂的znode。由于临时znode将在进程死亡时自动删除,因此父znode下的当前子级列表将准确表示当前处于活动状态的进程列表。
ZooKeeper Watches:监控应用程序可以使用ZooKeeper API在代表该组的父znode上设置监视。在父项下创建或删除新的子znode时,它将收到通知。当进程的短暂znode被删除时,监视应用程序可以在回调中使用逻辑来触发警报(发送电子邮件,在Web UI中从绿色切换到红色等)。
此外,您可能会发现Apache Curator项目可以直接调用ZooKeeper API作为实用程序API。策展人的Group Member食谱可能非常适合您的需求。