SMSSDK進化之路

Mob-SMSSDK 是可以叫應用快速免費擁有手機驗證功能的SDK。幫助開發者減少大量的開發工作,幫助企業節省短信費用。

SMSSDK到現在為止經歷1.0到3.0幾十個版本的迭代升級,已經非常穩定和高效。這個過程中有:

sdk的bug修復,性能提升,安全性提升。

sdk發送驗證碼部分收費到完全免費的升級。

功能逐漸豐富的過程

服務端架構調整

SMSSDK的初始版本在效能和穩定性上有太多的不足和缺失。這些問題主要集中的服務端,下面我來介紹一下SMSSDK服務端的進化之路。

一、SMSSDK1.0版本

問題

效能性:經常出現發送短信延遲或者失敗的情況;

穩定性:服務不夠穩定,需要經常重啟服務保證服務的相對正常運行;

可用性:開發者反饋問題后,技術支持解決時間較長;

原因

在1.0時期的服務器架構有一些不合理的地方導致出現了上面的問題。下面我會根據架構圖介紹當時的架構細節,如圖:


如圖中所示從SDK到負載均衡這一階段沒有太大的問題,可以繼續保持使用。問題主要出現在一下三個方面:

業務服務

數據中轉

數據存儲

業務服務

所有業務耦合在一起,經常因為一個不重要的業務流程執行緩慢導致整個驗證碼發送、校驗業務緩慢或崩潰;

服務間通信采用普通的HTTP接口交互,且依賴度很高,互相影響較大;

服務的容錯性較低;

通道單一,當通道出問題后服務不可用。

數據中轉

使用單臺Redis作為消息隊列中轉數據。redis作為消息隊列時,經常出現內存不足的情況,導致前面的服務響應緩慢或不響應。因此,還延伸出了離線處理數據的多個輔助程序,增加維難度。

數據存儲

1.存儲數據介質多樣:MongoDB,Redis,HBase,Elasticsearch。增加系統復雜度,增加維護成本;2.存儲介質穩定性低,且異常處理缺失,導致一些數據丟失;3.日志信息記錄不全,查找問題困難

上面的架構給開發,運維,技術支持帶來巨大的工作量,非常影響SMSSDK的服務質量,加上SMSSDK免費業務線確定,決定對服務器架構進行重構,由此誕生了SMSSDK2.0。

一、SMSSDK2.0版本

此版本主要解決1.0版本中存在的各種問題,旨在為開發者提供更快,更穩定,更豐富功能的SDK。

架構圖:


架構分析

1.訪問層使用Nginx做負載均衡;

2.服務層:要求服務間互不影響或影響較小。將之前的一個服務拆分為:

基礎服務:查多寫少的服務,要求響應迅速;

短信發送、校驗服務:發送驗證碼短信,校驗驗證碼短信。

其他服務:其他開發者可選集成的服務。

Web服務:開發者服務器接口服務。

Mob服務:隸屬于Mob內部的公共服務。

通過服務拆分,將業務分級,流量分流,各個服務間解耦互不影響,服務穩定性穩步提升。例如:有一段時間基礎服務被攻擊,pv由正常的2000w增加到3.7億,導致基礎服務響時間增加。但此時短信發送,校驗等其他服務任然能正常使用。

3.數據處理層:數據處理層更改的地方比較多,從根本上解決1.0版本的不穩定因素。

使用kafka做消息隊列,將業務解耦,數據統一處理。

縮短服務層的處理流程,通過kafka將復雜耗時的處理在數據處理中心中異步處理,縮短服務層的訪問時間。

獨立短信發送業務,專注對接通道,保證短信發送穩定高效;

服務間調用使用Dubbo通信。

Redis不再寫盤,并增加keepalived。

接入多條通道,保證短信發送成功率。當一條通道出現問題,自動啟動備用通道發送短信。

增加業務全流程監控,并提供技術支持系統。將之前的問題查詢時間縮短10倍。

服務配置動態化,即時生效,且不需要重啟服務器。

4.數據存儲:簡化升級數據存儲介質,提高其穩定性,降低維護難度。

MongoDB分庫分表以提升查詢寫入性能;

升級優化ES的索引結構,提升數據的完整性;

通過kafka傳遞數據,在數據中心統一落地,統一處理落地錯誤的數據

以上就是SMSSDK2.0版本的服務端架構縮影,在實際的實施過程中還遇到了很多問題:

新老版本的數據兼容合并問題;

kafka重復消費導致短信重復發送的問題;

統計耗費過多資源,且數據不準確的問題;

通道智能切換的問題;等等其它大大小小的問題。不過在2.0版本上,進行bug查找,修復的難度降低了很多。

業務升級:

增加的SDK的智能驗證功能;

增加了web-api發送自定短信內容的接口;

優化了SDK的通信協議,提升安全性和性能;

在SMSSDK2.0穩定運行之后,由于Mob內部業務調整,開發者需求增多等諸多因素,SMSSDK邁入了3.0。

三、SMSSDK3.0版本

SMSSDK3.0在主體架構上沒有做太大的改動,主要在業務上做了很多的優化工作。最終目的是縮短開發者集成SDK的時間,提升Mob平臺的服務品質。

在3.0中,主要做了以下升級:

同一個appkey可以在mob的所有sdk中使用。

開發者可以個性化配置:短息內容,驗證碼長度,驗證碼有效時間;

接入了更多優質通道,提升短信發成功率;

標準化sdk的通信協議,方便和其他mob下sdk組合使用; 還有bug修復,性能優化的工作,就不逐個列舉了。

結語

以上就是SMSSDK 2年來的進化過程。這其中有服務崩潰時的慌張,有數據丟失時的驚恐,有尋找bug時的迷惑,有服務穩定高效時的欣喜。在未來SMSSDK將繼續保持高效、穩定的驗證和發送服務。持續不斷的技術升級,為開發者提更為豐富的功能。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容