一,背景需求
如果服务器有上百万用户同时在线,应用程序产生的用于调试或监控的Trace或Log信息一般都会写文件,
但是因为Trace信息量巨大,磁盘很快就会写满,需要及时删除这些文件,比如只保留2个小时内的Log文件。
当用户反馈有问题,需要查询Log文件才能够定位的时候,那么该用户的Log信息很容易被淹没在大量的
Log信息中,对定位分析照成了相当大的困难。
如果需要对某个用户的信息进行长期跟踪定位的时候,因为本地的Log文件保存时间有限,这样也会对长时间
的Trace造成困难。
为了解决以上两个问题,我们需要一个远程精准跟踪监控指定用户Log信息的机制,而且不能够影响到应用
服务器的性能。经过考虑使用Redis的Pub/Sub功能来实现。
二,解决方案
1,关于Redis的Pub/Sub机制
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值
进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能
可以用作实时消息系统。
2,系统结构
3,主要流程
3.1 应用服务器加电启动后作为Redis的Client