有一个程序, 缺少实时更新数据的功能, 但是在程序启动的时候会自动更新数据, 于是每次需要更新数据的时候就要手动重启这个程序。
然而, 这个程序运行在各大机房的计算机/虚拟机中, 每次都要一一重启就显得十分麻烦。
为了能够统一重启这个程序, 我设计了一个神奇的守护神, 它可以:
1. 守护一个程序运行
2. 连接到一个集中控制器, 接收管理人员发送的命令, 执行一定操作(不止包括重启程序)
神奇的守护神分为Server, Slave, Admin三个部分。
Server:
接受Admin和Slave的登录请求, 根据ConnectKey区分。
将Slave发送的Message转发给相应Admin, 如果是广播并且恰好此时没有Admin在线则保存这个Message到一个队列里面, 待有Admin上线时一并发送给该Admin
将Admin发送的Command转发给相应Slave, 无Slave在线则丢弃
Slave:
守护一个应用程序的运行。
使用SlaveConnectKey登录Server, 然后向Server发送setname命令, 以设置自己的名字
每隔30秒发送heartbeat
收到Server发来的Command后执行, 发送结果Message给Server
Admin:
使用AdminConnectKey登录Server
每隔30秒发送heartbeat
接收从控制台得到的命令, 处理后发给Server
显示Server发来的Message
收到Server发来的Command后执行
发表评论