訊息通知(Notification)/使用者觸達系統設計
來源:JavaEdge
近年來,通知功能已經成為許多應用程式中突出的特性。構建一個能每天傳送數百萬通知的可擴充套件系統絕非易事。這正是為什麼我覺得有必要記錄我在這方面踩坑之路。也叫使用者觸達系統。
完成這項任務要求對通知生態系統有深刻的理解,否則需求很容易變得模糊和不明確。
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 📮
生產者應提供:
使用者的email地址 email內容
給到Email Service函式。
4.3 iOS推送通知
使用SNS + APNS的iOS推送通知
Producer將向Mobile Push Service(移動推送服務)提供使用者資訊,如:
裝置令牌 通知內容
Mobile Push Service將構建並向SNS傳送通知請求。iOS推送通知請求應構建以下資料:
裝置令牌 — 用於傳送推送通知的唯一識別符號 負載 — 這是APNS定義接受的JSON字典格式
APNS — 這是由Apple提供的遠端服務,用於向iOS裝置傳播推送通知。
4.4 Android推送通知
使用SNS + FCM的Android推送通知
Android有類似通知流。與使用APNS不同,使用Firebase Cloud Messaging(FCM)向Android裝置傳送推送通知。
4.5 Slack應用通知
producer將適當提供:
訊息內容 主題/頻道地址
給第三方應用推送服務。
SQS是用於控制速率限制的訊息佇列,因為許多第三方API都有這樣的限制。我們要有禮貌地呼叫第三方API!
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024923/viewspace-3000560/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊息通知(Notification)系統最佳化
- 訊息通知系統記錄
- 程式設計技巧│瀏覽器 Notification 桌面推送通知程式設計瀏覽器
- 系統程式設計——IPC訊息佇列程式設計佇列
- Laravel——訊息通知Laravel
- Laravel 訊息通知Laravel
- 訊息推送——產品運營不可或缺的使用者觸達方式
- 設計一個百萬級的訊息推送系統
- 【linux】系統程式設計-2-訊息佇列Linux程式設計佇列
- Flutter 通知(Notification)冒泡原理Flutter
- Notification桌面通知實踐
- 使用者介面通知訊息的七個特徵 - modernanalyst特徵NaN
- 【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(下)Java
- 【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)Java
- 使用橋接模式設計複雜的訊息系統橋接模式
- 一文教你實戰構建訊息通知系統DjangoDjango
- Android 8 通知渠道(Notification Channels)Android
- [轉]Android 通知Notification 詳解Android
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- 在spring boot中訊息推送系統設計與實現Spring Boot
- 仿微博訊息中心的系統設計與實現
- WIN10如何設定通知中心不顯示訊息 WIN10通知中心不顯示訊息設定方法Win10
- 鴻蒙傳送訊息通知鴻蒙
- redis學習(七) 訊息通知Redis
- 深度剖析「圈組」訊息系統設計 | 「圈組」技術系列文章
- Flutter學習筆記(35)--通知NotificationFlutter筆記
- 訊息佇列設計佇列
- 訊息通知 使用 [ Web-msg-sender]Web
- js炫酷訊息通知外掛JS
- CommunityToolkit.Mvvm8.1 訊息通知(4)UnityMVVM
- 什麼是push通知欄訊息?
- Win10系統下怎麼設定開關機顯示使用者設定訊息Win10
- 個推支援小程式訊息推送,助力開發者實現使用者高觸達、高轉化
- 如何使用Netty技術設計一個百萬級的訊息推送系統Netty
- 直播系統程式碼,訊息傳送框設計成橢圓形狀
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- 瀏覽器語音桌面通知,Notification API瀏覽器API
- H5 notification瀏覽器桌面通知H5瀏覽器