【原創】起步互聯網公司內部簡訊平臺雜談

来源:http://www.cnblogs.com/chenkaideng/archive/2017/01/24/6347629.html
-Advertisement-
Play Games

前言 陸陸續續間間隔隔開發公司簡訊平臺介面已經一段時間了,在年末的時候找個空閑把覺得實際可行的東西記錄下來。 想了想,感覺這東西應該沒啥好說的,但是又覺得哪裡需要記一記,以後換個工作環境,還來一發呢,不就可以避免不必要的坑。 畢竟在實現簡訊介面的過程中,看似簡單,但是有許多需要註意的地方和可以一步到 ...


前言


 

陸陸續續間間隔隔開發公司簡訊平臺介面已經一段時間了,在年末的時候找個空閑把覺得實際可行的東西記錄下來。

想了想,感覺這東西應該沒啥好說的,但是又覺得哪裡需要記一記,以後換個工作環境,還來一發呢,不就可以避免不必要的坑。

畢竟在實現簡訊介面的過程中,看似簡單,但是有許多需要註意的地方和可以一步到位的地方可以記錄下來,請大牛們分享探討不足指正。

來吧,整理整理思緒。

 

 開發背景


 

 

由於公司的APP端、微信公眾號端、各種後臺端和報警機制端等等的一系列應用和系統都需要用到一個基礎功能:發簡訊。所以一開始只是做了簡單的一個發簡訊的介面在dubbo上,供各個端來調用。基礎簡訊介面是去接入市場上一些靠譜的簡訊服務商,比如國都、中數、阿裡雲以及一些國外的短息服務商等等。漸漸地、公司的業務量在慢慢變大,用戶量也在變大,導致簡訊的日用量逐漸增大,每月都是一筆大支出,老闆可不高興了,咋回事,簡訊被人刷了還是開發人員死迴圈了亂髮簡訊。這時候,就意識到需要完善這個簡訊介面了,不能單純的調來調去就了事了。

 

簡訊平臺構建


 

一、基礎簡訊介面:在dubbo上開發了包括單條簡訊發送介面、批量簡訊發送介面(多個號碼內容一致)、批量個性化簡訊發送介面(多個號碼內容各不一致)、簡訊餘額查詢介面、簡訊狀態回調介面(簡訊服務商回該介面告訴我們剛纔發送的那條簡訊發送成功與否)等

在開發上述這些介面的時候,當然你需要出一份介面文檔,合理簡單些喔不然業務端的開發人員會剛xi你。但是不管他們怎麼剛你,你一定要在手機號碼和簡訊內容的基礎上加上這幾個參數:

  1. templateid:模板id,這個參數可以用於這個簡訊的模板類別,是哪種模板,因為有的簡訊服務商也是按模板才能發送簡訊的,不是任意的內容都能給你發,自己也能定義幾種模板很規範化有木有。
  2. areaid:國家地區編碼,這個東西預設可以不填認為是中國大陸手機號,但是後面你公司要是牛逼了走向世界了,給國外用戶發簡訊呢,是不是,提早防備啊。
  3. sourceid:業務名稱編碼,就是用來標記這條簡訊是哪個具體業務發出去的,這樣老闆問你簡訊花銷怎麼這麼大的時候,你就可以說就是它,這個業務簡訊用量非常大。開個玩笑哈,這是統計簡訊用量開銷的最佳手段啊。

當然,發送完一條簡訊的時候,這些參數信息以及發送時間、發送是否成功,回調狀態等等的參數都是要記錄到資料庫的,這裡有兩個要點:

  1. 存放簡訊發送記錄的表欄位要設計的儘量詳細,只能多不能少,用不上的大不了後面先NULL唄,萬一哪天擴展功能又用上了對吧。
  2. dubbo發送簡訊介面上,調用簡訊服務商http介面發送簡訊和插入我們自己的數據表的兩個操作請用非同步,這樣當併發大的時候才能及時hold住,servlet3.0以上是支持非同步的,所以dubbo也早就支持。

二、簡訊平臺後臺:內部開發的一個工具網添加簡訊模塊,可以在上面實時查看每條簡訊的發送情況、賬戶餘額情況、敏感辭彙管理、簡訊計費報表、簡訊服務商切換、運營簡訊批量導入發送(比如公司要做個類似銀行發買黃金簡訊給你的那種推廣的時候,運營人員可以進行的推廣手段)等功能

這個web的東西就不細說了,數據都是讀取mysql表的。敏感詞提下:就是我們國內不是所有簡訊內容都能發,一些非法辭彙是不允許發送簡訊的比如"激情大獎",這個辭彙一般找簡訊服務商要個excel,導到資料庫中,簡訊介面在發送前自己先過濾一遍先,web這邊可以增刪改查管理下。簡訊服務商切換也說下:就是一般我們會有一個備用的簡訊服務商,一旦目前在用的這個簡訊服務商突然出問題了簡訊都是發送失敗的,需要換一個,這時候就可以切成備用的另外一家服務商,實現的話,是在zk上拿一個節點來控制,發送簡訊的介面都會實時關註這個值的情況來來選擇簡訊服務商。

 

註意事項


 

不管業務端是否有對用戶請求驗證碼類似功能的做限制,簡訊平臺端要有最基礎的防刷手段:1、同一天內同一個手機號碼最多發送簡訊的量;2、同一個手機號碼下次發送簡訊要間隔上次至少多久。這兩個限制一齣,平臺端的限制也只能這樣了,不能再細緻了,再細緻的限制我覺得應該是業務端的事情了。還有就是像阿裡雲簡訊這樣大的服務商本來就自帶這種限制buff,但是有的是不自帶比較自由隨你發,你一調他服務他就收你錢。

簡訊的到達率真的是很重要,想要幾乎接近99%的簡訊發送成功率,那就要找簡訊服務商給你專線,這就看你的簡訊量大小和商務部能力了,能要到專線是最好的,不同的簡訊服務商到達率真的參差不齊,目前我覺得國都是不錯的(此處不是廣告)。

國內簡訊服務商發送國內簡訊收費便宜,但是發送國外簡訊賊貴,所以你公司的業務要是擴展到海外,量也還行了,最好到當地國家找一家簡訊服務商,收費便宜到達率還高,寫簡訊介面的時候areaid參數的判斷就能用上了。

 

最後新年快樂!!!!

2017-01-24

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 閱讀目錄 前言 解決數據一致性的方案 回到DDD 設計 實現 結語 一、前言 之前的十一篇把用戶購買商品並提交訂單整個流程上的中間環節都過了一遍。現在來到了這最後一個環節,提交訂單。單從業務上看,這個動作的背後包含了多個業務操作,根據用戶填寫的訂單信息生成訂單、扣除使用的餘額和積分、使用選擇的禮券等 ...
  • 不要誤會,我不是針對python,也不是針對nodejs,我是說除了.NET之外,玩爬蟲的都是垃圾 ...
  • ddd小白,一篇章節便能激起了心中漣漪,感慨之初,記於筆下。 第1章 消化知識 用醍醐灌頂、茅塞頓開來形容此章短短的文字,實不為過。 簡單介紹背景:旅游互聯網,B2B,初創公司。產品設計-代碼開發的銜接有過兩種明顯形式: 1. 項目的推進由產品部起頭,收集、分析、過濾需求,形成原型文檔(word,e ...
  • 代理模式在java中的使用,包括靜態代理和動態代理,對retrofit進行模擬 ...
  • 開發框架要考慮的面太多了:安全、穩定、性能、效率、擴展、整潔,還要經得起實踐的考驗,從零開發一個可用的框架,是很耗時費神的工作。網上很多開源的框架,為何還要自己開發?我是基於以下兩點: 1. 沒找到合適的:安全、穩定、簡單、易用、高效、免費; 2. 想成為架構師; 於是就自己動手,參考網上開源的項目 ...
  • ICO (input current optimizer) 手機接上 adapter 後, 手機裡的 charger IC bq25896 開始向 adapter 抽取 current 供給 battery 充電 及 系統消耗,( 這裡的電路圖是假設 adapter 直接接到 charger IC ...
  • 上海修剪園林之風,始於明代。嘉靖三十八年,又有幾處破土動工。 申家祖上並無淵源,到了這一代,長子當過一任太守,卸任回家,造了座園林“萬竹村”。弟弟申明世喜中進士,哥哥在申家地盤上為他另建一個園子。此處用佃戶種桃,桃花爛漫,名“天香園”。園子尚未建成,明世拜別父母兄長與一妻一妾,帶著新娶的小妾去江西赴 ...
  • 有時候因為種種原因導致我們會寫出很多醜陋的代碼,比如趕工時,短暫性的偷懶,不會設計模式等等導致代碼沉積,一個cs上萬行代碼這樣場景是有發生, 當然這裡也包括我。。。所以時間充裕一點之後就想重構一下,畢竟項目中的需求是不斷變更的,面對需求變更,儘量做到最低限度的修改代碼,最大化的擴充 新代碼,還有一點 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...