原文地址:https://medium.com/@leandrofranchi/how-to-design-a-notification-system-23f381cdeb00

通知系统已成为任何有助于触达用户、收集分析数据等系统的强制性功能。它不仅仅是移动推送,还有一些不同类型的通知格式,如推送、短信、电子邮件和软件角标(未涵盖这里)。

在本文中,我们将近乎实时地浏览推送、SMS 和电子邮件格式的通知系统设计,平均每天有 1000 万条通知由安全的 API 端口触发,并遵守取消订阅列表控制。

通知类型

iOS 推送

如何设计通知系统 - 图1

iOS 设备的通知。

提供者向 Apple Push Notification Service 发送通知,Apple 提供的远程服务向 iOS 设备发送推送通知。

安卓推送

如何设计通知系统 - 图2

Android 设备的通知。

android 通知类似于 IOS 通知流程,但是,我们将使用 Firebase Cloud Messaging 代替 de APNs 来执行数十个 android 推送通知。

短信

如何设计通知系统 - 图3

使用短信通知。

与上面相同,但是使用了像 Twilio 这样的 SMS 服务提供商。Twilio 等一些提供商具有使用 WhatsApp 电话和邮件营销发送消息的功能。

电子邮件

image.png

使用电子邮件消息通知。

与上面相同,但是使用了像 Sendgrid 这样的电子邮件服务提供商。

完整的通知系统设计

重要的是,这是一个高级设计,当我们专注于这张图片的每一点时,我们将在本文中有很多未涵盖的细节。

image.png

  1. 外部软件通过 https 发送带有消息数据的 JSON 消息,如地址、类型、消息等。
  2. 速率限制器验证内部规则以保护系统过载和安全问题。
  3. 通知服务接收消息,传递到正确的消息队列,并通过数据缓存集群将一些日志写入数据存储。
  4. 一些工作人员使用队列中的消息并与第三方软件连接以将消息发送到定义的设备类型或消息格式。
  5. 第三方软件使用 Web Hooks 回调以提供有关消息的状态和分析信息。
  6. 更多运行的工作人员获取这些信息并存储在数据存储层上。
  7. 状态和分析数据可用于通知状态和分析服务,将这些数据返回给外部服务。

使用这些系统设计的软件,我们获得了以下好处:

  • 可靠性:将故障率和 SPOF 降至最低的机制。
  • 安全性:使用 AppKey/appSecret 对在 https 上运行,以确保只有授权用户才能发送消息。
  • 跟踪和监控:存储日志、状态和分析数据。
  • 速率限制:保护系统过载、意外突发和安全问题。

这种设计效果很好,应该在其他地区复制以提高 SLA,插入新的组件,如负载均衡器、大 IP 等。

更多关于负载均衡和可靠性的信息在这里!

欢迎评论和提示!

;)