一,背景描述
某个系统提供并发百万级的用户实时在线业务,部署了几十台接入服务器,十几台业务处理服务器。
由于历史原因,都是手动配置这些服务器,除了能够监控到这些服务器的网络,带宽,磁盘,内存
等硬件设备信息外,对于每个服务器应用程序的内部状态信息,程序的统计信息无法采集,导致只能通过
外围的一些信息去判断评估问题所在,不准确,耗时耗力,很痛苦。
为了准确监控每个服务器的内部状态,而且也不影响现有业务逻辑的情况,需要快速部署一个简单的
服务器集中监控系统。经过考虑,可以使用Redis的Pub/Sub功能来实现一个监控系统是非常好合适的。
二,解决方案
1,关于Redis的Pub/Sub机制
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值
进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能
可以用作实时消息系统。
2,系统结构
3,主要流程
3.1 应用服务器的初始化
- 所有应用服务器作为Redis的Client连接到Redis服务器,保持长连接。