訊息通知(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)系統最佳化
- Android呼叫訊息欄通知(Notification)Android
- 訊息通知系統記錄
- win10系統通知訊息怎麼遮蔽Win10
- Laravel 訊息通知Laravel
- Laravel——訊息通知Laravel
- android之Notification監聽系統清除通知欄Android
- 程式設計技巧│瀏覽器 Notification 桌面推送通知程式設計瀏覽器
- 設計一個百萬級的訊息推送系統
- Web網站通知系統設計Web網站
- 一文教你實戰構建訊息通知系統DjangoDjango
- 仿微博訊息中心的系統設計與實現
- 【linux】系統程式設計-2-訊息佇列Linux程式設計佇列
- 使用橋接模式設計複雜的訊息系統橋接模式
- 使用者介面通知訊息的七個特徵 - modernanalyst特徵NaN
- WIN10如何設定通知中心不顯示訊息 WIN10通知中心不顯示訊息設定方法Win10
- Flutter 通知(Notification)冒泡原理Flutter
- Notification桌面通知實踐
- Android 通知之 NotificationAndroid
- android之Notification通知Android
- redis學習(七) 訊息通知Redis
- Linux系統程式設計之程式間通訊方式:訊息佇列Linux程式設計佇列
- 個推支援小程式訊息推送,助力開發者實現使用者高觸達、高轉化
- Android通知Notification全面剖析Android
- Android Notification 通知詳解Android
- 在spring boot中訊息推送系統設計與實現Spring Boot
- 訊息通知 使用 [ Web-msg-sender]Web
- 訊息佇列設計佇列
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- Android 特殊使用者通知用法彙總 - Notification 原始碼分析Android原始碼
- windows10怎麼關閉通知欄訊息|windows10通知欄訊息關閉的方法Windows
- [轉]Android 通知Notification 詳解Android
- HTML5 桌面通知:Notification APIHTMLAPI
- Android 8 通知渠道(Notification Channels)Android
- Kafka 分散式訊息系統Kafka分散式
- 訊息推送系統架構架構
- 分散式訊息系統:Kafka分散式Kafka
- 3d touch怎麼清理通知訊息 3d touch一鍵清理通知訊息方法詳解3D