云通訊網絡企業(yè)短信群發(fā)通知平臺超高速下發(fā)的解決方案
來源:原創(chuàng) 時間:2018-03-03 瀏覽:0 次本文通過對目前云通訊平臺短信提醍平臺進行升級優(yōu)化,從系統(tǒng)架構調整和業(yè)務邏輯控制兩方面進行改造:引入隊列和線程池,提高接口處理效率,同時進行短信流量閥值控制,減少中間環(huán)節(jié)和數據協(xié)議轉換過程,實現了大容量短信的超高速下發(fā)
現狀說明
目前云通訊平臺短信系統(tǒng)的業(yè)務處理流程為:來自各外部系統(tǒng)的短信教據提交至短信提醒平臺后,散列到磁盤相應目錄中,然后由數據處理程序掃描相應磁盤目錄下的待發(fā)送數
據,按照cmpp協(xié)議堤交短信網關四進行發(fā)送。在上逑流程中,系統(tǒng)處理性能的瓶頸主要集中在兩點:磁盤和數據處理程序。
解決方案
為提升目前云通訊平臺短信提醒平臺的整體性能,本文主要從系統(tǒng)架構調整和業(yè)務邏控制兩方面進行系統(tǒng)優(yōu)化。
系統(tǒng)架構調整
(1)使用本地數據庫做為程序之間交互的介質,可以發(fā)揮數據庫穩(wěn)定、高效、方便的優(yōu)點,磁盤放到了次要的位置做廷遲信息的保存和故障處理使用;
(2)在具體的接口處理層引入隊列和處理線程池,程序將掃描到的數據首先放入隊列,由處理線程池中的線程讀取隊列中數據進行驗證、封裝、入庫,以提高前端的處理效率;同時沒一個掃描線程對應一張數據庫表進行數據讀取,讀取的數據寫入到隊列中由發(fā)送線程進行處理提交短館網關進行短信發(fā)送
數據耬收層設計
數據接收程序在接收到各系統(tǒng)的數據后首先放到隊列中,由分析程序處理,這樣保證外圍系統(tǒng)不積壓數據;程序內部使用線程池技術,將數據驗證程序運行在單獨的線程中,線程不斷的讀取隊列里數據進行分析處理,并保持到本地中間表中;同時為了達到中間表的數據均衡性,路由算法根據手機尾號對應到10張數據分表中。
②信息推送層設計說明
信息推送程序啟動單獨的進程掃描匯聚到本地數據庫表中的數據,這樣充分利用數據庫的查詢效率,提供系統(tǒng)吞吐量;根據實際測試效果 oracle數據庫可以實現以6000條/s的效率掃描數據,如果硬件資源有限,可以在接口掃描程序中配置將數據保存到其他主機的數據庫實例中,方便實現系統(tǒng)擴容;信息送程序中與網美的連接采用連接線程池的方式,每個線程獨自運行數據發(fā)送程序將從隊列中取得的數據發(fā)送給
短信網關均
業(yè)務邏輯控制
在上述現狀分析中,與短信網關的交互為系統(tǒng)處理的瓶頸,針對此問題對數據處理程序進行改造,設置短信網關接收閥值控制,對于超出閥值的數據自動直連短信中心進行數據的提交、發(fā)送。具體改造說明如下:
(1)對業(yè)務平臺提文短信網關的程序進行改造,對于提交速度超過其閥值的情況能夠反饋給業(yè)務平臺;
(2)業(yè)務系統(tǒng)接收到短信網美容量飽和的通知后,能主動和短信中心建立開通文件傳接口,將剩余的發(fā)送數據通過該接口直接推送給短信中心;
(3)短信中心利用現有的處理與協(xié)議,對業(yè)務系純直接推送過來的數據進行封裝并且轉發(fā)通過上逑改造,增加一條業(yè)務系統(tǒng)和短信中心直連的鏈路,通過該鏈路可以實現業(yè)務數據超過閥值的數據直接傳遞短信中心,減少了中間環(huán)節(jié)提升發(fā)送效率。
經驗總結
公司在此次對云通訊平臺短信提醒平臺系統(tǒng)處理性能改造優(yōu)化的項具實施中,總結了兩點主要經驗:多線程業(yè)務處理和短信網關閥值拉制。
多線程業(yè)務處理
短信提醒平臺到短信網關的多線程路由設計:利用手機尾號將待下發(fā)數據平均分配至多個待發(fā)送數據表,啟動多進程分別處理每個待發(fā)送數據表數據,每個進程在啟動多線程和網關建立連接,充分利用網關提供的連接數,實現短信提醒平臺到短信網關推送效率的最大化。
短信網關閥值控制
短信提醒平臺根據短信網關的處理閥值速度,提交待發(fā)送數搢至短信中心:在短信網關推送速度和效率達到最大時待發(fā)送數表出現積壓待發(fā)送數播超過一定閾值時,將其余數據直接推送至短信中心,減少中間環(huán)節(jié)處理,提升發(fā)送效率。