程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 千萬短信發送量的架構設計,短信發送架構設計

千萬短信發送量的架構設計,短信發送架構設計

編輯:C#入門知識

千萬短信發送量的架構設計,短信發送架構設計


客戶端將計費信息(扣的條數、費用…..)提交到計費子系統,計費子系統收到請求,將數據緩存到本地Cache(可以是內存、或者其他Cache,本地緩存數據結構是Key-Quue, key為用戶標識,Queue用於存放用戶計費信息),並且通知任務分配服務為其分配一個線程處理扣費信息(只分配一次,以後這個線程就出來這個用戶),一條處理扣費線程可處理多個用戶,但一個用戶不能分配到多個處理扣費線程中。通知完後立即返回響應。(由於只有分配一次,所以只有第一次稍後會慢個零點幾毫米,後面幾乎響應耗時為0)。

  處理扣費服務啟動後,將根據自己持有處理用戶Key,去從本地緩存中獲取到該用戶Key引用的隊列實例,直接從實例中讀取該用戶的計費信息進行扣費即可,為了處理速度快,可以從隊列中批量讀取,合計後一次性從數據庫中扣除。扣除完成後,更新本地余額緩存。

 

接口設計:1.提供一個計費接口

              2.提供一個獲取余額接口

協議類型:通信協議建議采用Socket。

客戶校驗余額:直接獲取內存中的余額,避免對庫開銷太大。

分布式集群:對本地緩存和任務分配服務設計成共享,即可分布式和集群。

Queue:建議所使用實現“無等待 (wait-free)”算法算法的隊列。

處理扣費服務:對處理的用戶數量可配,在用戶扣費信息量非常非常大時,可設置成一個線程一個用戶,用戶量少時可以一個線程處理多個用戶,以節省資源。(也可以寫一個簡單的算法去只能判斷一下當前的用戶計費信息量)

下面看下架構的草圖

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved