序 本文目的
教你如何从零开始设计一个系统。
本文会尽量减少代码相关的内容,而侧重于产品与系统设计。
适合阅读人员:会写代码,但不知道代码在系统里为什么这么写。
在线项目预览地址:
【待给】(没给的话回复提醒我一下)
第一章 需求的提出
我们在实际业务中,会遇见这样的情况:
- 希望在项目出现意料之外的错误时(例如服务意外停止),可以自动报警并通知相关负责人员;
- 某些功能,在出错率超过阈值,自动通知相关人员;
- 在收到工单,或者工单流程发生变更时,自动通知相关人员;
- 系统每日周月的自动汇总(例如每日新注册用户、UV、PV等),可以自动将数据推送给相关人员,而非是必须登录信息管理系统才能访问;
- 通知系统(例如服务部署成功后,推送给相关负责人);
- 其他情况;
在以上场景中,我们不讨论如何去获取这些信息(因为这些和场景是高度耦合的)。我们需要在获取到信息后,如何及时快速的通知到相关人员。
因此,我们需要设计一个报警平台,当遇见以上场景后,其他业务系统可以调用这个平台的 api,通知相关负责人。
具体举例如下图
需求明确:希望有一个方便、及时的信息通知系统
我写了一个这样的系统。为了帮助缺少设计经验的开发,学习相关知识,于是便有了这篇博客。
并为之写了一个接入服务,当本系列博客更新时,自动推送邮件给相关的订阅人员。感兴趣的可以试用一下,链接地址:http://report.lovelovewall.com/,订阅【《自动报警系统》系列博文更新监控】即可,流程如下图:
具体如何实现,请继续阅读以下内容。
第二章 需求的完善
第一节中,我们画出了整个系统的流程图,但是这个平台内部怎么构成的,尚未明确。
因此下一步工作是明确平台内部流程,现在我们开始一步一步细化出整个系统流程。(防盗:作者QQ:20004604,微信:qq20004604,QQ交流群:387017550)
本章的目的是细化整个系统的流程,最终形成一个完整的系统流程图。而具体每部分怎么做,将被放在下一章节
第一小节 调用方视角(推送者角色)
整个流程初步构想,是很简单的一件事,就是调用方通过调用平台接口来推送消息,平台方接口被成功调用后,再推送消息给消息接收人。
画出简单的流程图:
在这个过程中,调用方需要关心的是,我能否正确的推送给目标群体。
具体包括 2 点:
- 数据合法性校验;
- 接受者获取;
第一点很好理解,我们略过不谈;
第二点接受者获取,是这个系统的重点。他存在两个关键点:
- 推送者:也就是调用者,我们该怎么明确推送者在系统里的角色,即谁是推送者;
- 接收者:谁接收推送者的信息,即推送者怎么明确推送信息给谁;
这是系统的第一个难点,看起来很简单,但需要明确主被动关系。为了方便理解,我画了 2 张图:
接受者主动:常见于外网系统,可以有效避免骚扰信息的存在。即避免推送者发送垃圾信息给无关人士。类似:
推送者主动:一般在内网系统,我们会选择这种类型,优点的管理方便,典型就是各种邮件组。
本项目代码基于前者开发,但本项目的 PRO 版本会额外添加后者功能,感兴趣的可以关注一下。
此时整理整个流程:
(未完待续,请关注我的博客,或使用本项目开发的平台订阅本系列博客的更新,又或是加入我的技术交流群。更新频率,预计1~2天一篇)
作者QQ:20004604
微信:qq20004604
QQ交流群:387017550