通知系统是一个成熟的 web 网站或者 app 最基本的功能,比如微博、知乎、掘金等。当然今天本文要讨论的不是这种大网站、大流量的通知系统,而是一般用户量的网站或者应用。
通知系统的组成
一个通知系统主要由:通知来源、通知控制、通知方式、通知模板和通知的目标五个部分组成。 后面详细介绍各个组成的作用。组成结构如下图所示:
通知来源
通知来源是指触发本次通知事件的源头,一般包括以下三种情况:
- 用户事件触发:当其他用户对某个对象执行了评论、@、点赞、留言等动作,都需要对对象拥有者进行通知。这是最常见的需要通知的场景。
- 满足系统的规则后自动触发:比如被系统封号、等级提升、获得勋章时,理论上都应该对用户进行通知。
- 管理员触发:管理员主动向全网或者某个用户发送通知,比如发送公告等。
通知控制
通知控制用来进行权限控制、黑白名单过滤、用户接收消息频率控制、内容审查等。总之控制和过滤相关的都放在这里。
通知模板
通知模板用来与数据模型结合并最终展示给用户,类似 MVC 模式中的 V,可以是纯文本也可以是 Velocity 之类的模板。引入通知模板主要是为了满足以下三点:
- 不同通知方式通知的展示方式可以不同;
- 通知的展示与通知的模型数据分离;
- 通知模板可配。