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

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...