动态通知方案
动态通知方案
概述
“动态通知” 是指在实时或运行时通知或提醒系统的方式。这种通知可以是基于事件、数据变化、用户行为或其他触发条件的。动态通知在计算机科学和信息技术领域中非常常见,用于各种应用,包括通信、监控、安全、用户界面等。
动态通知可以采用不同的方式和机制,主要包括:
- Push通知:这是一种实时通知方式,其中数据或信息被主动推送到接收方。常见的例子包括移动应用中的推送通知、实时聊天消息等。
- Pull通知:在这种方式下,接收方定期轮询或请求来获取更新或信息。这通常涉及定期检查服务器或资源的状态以获取新数据。
Push通知
Push方式通常是基于观察者模式(Observer Pattern)实现的。在这种方式下,有一个被观察者(通常称为主题)和多个观察者。当主题的状态发生变化时,它会主动通知所有观察者,将更新推送给它们。
例如:微博动态推送
- 优点:
- 有很好的实时性
- 缺点:
- 需要在服务器存数据,无法保证无状态
- 粉丝量太多会引发写扩散的问题(大量动态队列持久化造成磁盘高IO)
写扩散问题解决:
- 设置上限,例如微信好友5000个
- 限流策略,X分钟内完成消息发布
- 优化存储策略,采用NoSQL或大数据方案
Pull通知
Pull方式通常是通过轮询或请求的方式实现的。在这种方式下,观察者定期轮询被观察者的状态或在需要时主动请求更新。
- 优点:
- 能做到无状态服务器
- 缺点:
- 实时性较差
- 大量请求会导致读扩散问题,搞垮服务器
读扩散问题解决:
- MQ削峰填谷,超长队列直接拒绝
- 增加轮询间隔,减少请求次数
- 服务端增加缓存,优化查询效率
- 增加验证码,分散时间,减少机器人刷票
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 goMars的学习随记!
评论