首页 > 其他分享 >消息通知(Notification)/用户触达系统设计

消息通知(Notification)/用户触达系统设计

时间:2023-12-14 23:15:08浏览次数:32  
标签:短信 Notification iOS 用户 触达 发送 通知 Android 推送

近年来,通知功能已经成为许多应用程序中突出的特性。构建一个能每天发送数百万通知的可扩展系统绝非易事。这正是为什么我觉得有必要记录我在这方面踩坑之路。也叫用户触达系统。

完成这项任务要求对通知生态系统有深刻的理解,否则需求很容易变得模糊和不明确。

1 了解通知系统并确定设计范围

通知是用于向用户提供重要信息的一种方式,如产品更新、提醒事件、优惠等。已成为应用功能清单中的重要组成部分。

通知不仅是移动推送通知。通常,根据接收者的特征

1 通知格式分类

  • 移动推送通知
  • 短信
  • 电子邮件
  • 网页推送通知
  • 第三方应用通知(类似 Slack、钉钉的应用)

2 功能需求

  • 系统支持推送通知、短信、电子邮件和第三方应用通知。
  • 准实时系统。希望用户尽快收到通知。然而,若系统负载过高,轻微延迟也可接受
  • 支持的设备:移动设备(iOS 和 Android)以及笔记本电脑/台式机
  • 通知可以由客户端应用程序事件触发,也可以在服务器端进行计划
  • 用户可以选择不再接收将来的通知
  • 大致上,我希望每天发送1000万条推送通知、500万封电子邮件和100万条短信

3 顶层设计

首先,我们需要找出一个支持各种通知类型的高级设计:短信、电子邮件、iOS推送通知、Android推送通知和Slack应用通知。

然后,系统应该以以下组件结构化:

  • 不同通知类型的配置
  • 收集联系信息流
  • 通知发送和接收流

4 不同通知类型的高级设计与AWS

每种通知类型在高级层面上的工作原理。

4.1 短信

核心组件

  • Producer — 生产者构建并向【SMS Service】发送通知请求。为构建短信的通知请求,生产者应提供数据:带有国家代码的用户电话号码,JSON字典负载下的短信主题/内容。也就是公司内各业务部门
  • SMS Service,短信服务,用于处理自定义业务逻辑并触发短信发送
  • AWS SNS或第三方短信服务 — 这是AWS用于发送短信的服务,但为增加高可用性和韧性,我添加了第三方短信服务选项。默认,短信服务将调用AWS SNS,但若异常,可切换到其他短信服务
  • SMS device,短信设备 — 接收短信的终端客户端

4.2

标签:短信,Notification,iOS,用户,触达,发送,通知,Android,推送
From: https://www.cnblogs.com/JavaEdge/p/17902401.html

相关文章

  • Windows用户、组
    查看所有账户netuser查看某个账户信息netuser用户名查看某个用户的sidwhoami/user查看所有用户的sidwmicuseraccountgetname,sid查看当前操作系统存在的用户界面操作此电脑→鼠标右击→管理→计算机管理→系统工具→本地用户和组→用户命令操作......
  • PostgreSQL创建只读用户
    1、创建一个用户名为<readonlyuser>,密码为<your_password>的用户CREATEUSER<readonlyuser>WITHENCRYPTEDPASSWORD'<your_password>';2、修改用户只读事务属性ALTERUSER<readonlyuser>SETdefault_transaction_read_only=on;3、设置USAGE权限给到<......
  • 修改用户密码
    假设你要为用户名为'username'@'localhost'的用户设置新密码,你可以这样做:其中,username是用户名,localhost是主机名,123456是要更改的新密码。方法1:用ALTER语句ALTERUSER'username'@'localhost'IDENTIFIEDBY'123456';方法2:用SET语句使用SET语句来修改普通用......
  • 编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐献者数目,然
    编写一个程序,记录捐助给“维护合法权利团体”的资金。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:用来储存姓名的字符数组(或string对象)和用来存储款项的double成员。读取所有的......
  • SglServer 设置用户只能访问特定表、特定数据库
    设置用户只能访问特定表、特定数据库一、只能访问特定数据库1.【安全性】—【登录名】右击用户、打开属性,选择用户映射,勾选特定数据库 2.如果服务器角色勾选了【查看任意数据库】,那么登录后会看到所有的数据库,没有授权的数据库会提示无法访问数据库 最终效果 二......
  • 拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、
    @目录前言1.需求分析2.可行性分析2.1简介2.2技术可行性分析2.2.1技术实现方案2.2.2开发人员技能要求2.2.3可行性2.3操作可行性分析2.4结论3.项目报告3.1修订历史记录3.2软硬件环境3.3需求分析3.4详细设计3.4.1类设计3.4.2核心流程描述3.4.3核心算法设计3.5运行......
  • doris用户权限管理
    Doris用户权限和MySQL相差不多,在Doris中,GRANT命令用于赋予指定用户或角色指定的权限。使用语法如下:GRANTprivilege_listONdb_name[.tbl_name]TOuser_identity[ROLErole_name]GRANTprivilege_listONRESOURCEresource_nameTOuser_identity[ROLErole_name]pr......
  • GB28181视频监控平台LiteCVR出现用户已过期与401报错,是什么原因?
    安防视频监控新技术的应用使得监控系统变得更加智能化、灵活化,并且提供了更多的便利性和安全性。这些新技术的不断发展也为我们的日常生活和社会安全提供了更大的保障。GB28181视频监控平台LiteCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/O......
  • Oracle删除指定用户下所有对象
     --.sql脚本--唯一注意的是下面的d:\dropuserobj.sql为操作的.sql;--用于删除当前用户的所有对象--usefordropallobjectsincurrentuser;setheadingoff;setfeedbackoff;spoold:\dropuserobj.sql;prompt--删除约束条件select'altertable'||table_name||'......
  • Linux实现指定用户sftp传输,静止ssh登录
    1、环境名称ipserver192.168.1.1client192.168.1.22、服务器创建repl用户useradd-m-d/home/repl-s/usr/sbin/nologinrepl3、修改密码passwdrepl4、ssh配置#该行不注释Subsystemsftp/usr/libexec/openssh/sftp-server#增加一下行......