「这是我参与11月更文挑战的6天,活动详情查看:2021最后一次更文挑战」
发布订阅之PubSub
- 顾名思义发布系统就是围绕接收和发布两个关系
- 典型的生产者消费者模式
- 下面我们以消息多播
- 首先我们订阅者A先订阅
musicA音乐电台A - 其次我们订阅者B再订阅
musicA和musicB(音乐电台A和音乐电台B) - 我们再从发布者像电台A和diantaiB去推送消息
- 1.电台AB
- 2.订阅电台AB
- 3.发布者推送消息
- 先往订阅者A和订阅者B同时推送「好运来」这首歌
- 再往订阅者B同时推送「北京欢迎你」这首歌
关于持久化
- 首先
redis中的PubSub是不支持持久化的- 因为在我们上面的演示中,如果一个订阅者宕机了,剩下另一个订阅者
- 但是我们的发布者还在一直推送音乐🎵
- 当宕机到的订阅者恢复的时候是无法接收到之前的消息的
- 如果两个订阅者都宕机,或者根本没有直连,发布者直接将消息丢掉
- 如果进行优化的时候,我们或许可以做一下的行动
- 首先是可以增加日志(类比MySQL中的三种日志)
- 这样就能保证如果有订阅者宕机挂掉,再恢复的时候,有一个数据恢复的过程
- 其次可以做一个缓存队列,每次发布者进行推送数据的时候,都通过缓存队列输送