不多说,直接上干货!
假设要监控多台服务器上的A程序运行状态, 当发现有服务器上的A程序下线的时候, 给管理员发短信, 并且尝试重启A程序。
zookeeper实现分布式进程监控主要利用zk的临时节点和watcher监视器的特性。
临时节点有一个特点: 当创建临时节点的程序停掉之后, 这个临时节点就会消失。
监视器的特点: 可以给 zk 中的节点注册监视器, 监视这个节点的子节点的变化情况监视器注册一次, 只能使用一次。 多次使用需要多次注册 。
大致思路如下:
1: 首先在A程序启动的时候在zookeeper的/monitor 节点下创建一个临时节点, 临时节点的名称可以用这个服务器的主机名或者ip信息, 只要A程序一直正常运行, 这个临时节点就会一直存在。
2: 给zk的/monitor节点注册一个watcher监视器, 监视monitor节点下面的所有子节点的变化情况,当有子节点变化的时候, 获取到具体是哪一个子节点发生了变化, 就知道是哪台机器上的A程序
有问题了。
3: 可以给管理员发短信, 打电话, 发邮件之类的, 并且还可以实现对那一台服务器上的A程序进行重启。
具体,见