掃一掃添加我為好友
掃一掃添加我為好友
掃一掃添加我為好友
掃一掃添加我為好友
發(fā)布時間:2023-12-23來源:九天企信王作者:月影至尊
在該場景下,用戶可以通過短信找回密碼。該邏輯較為簡單,不需要進行改變。
在該場景下,用戶需要輸入短信內(nèi)容和手機號碼,并點擊“發(fā)送”按鈕。如果驗證通過,用戶將跳轉到短信發(fā)送成功的提示頁面。如果驗證失敗,用戶將收到一條錯誤提示消息,可以根據(jù)提示進行更正。
在項目中,可以直接配置短信服務提供商提供的賬戶、密碼和接口,并在需要發(fā)送短信時調(diào)用相應的接口。根據(jù)返回值,可以決定是否將短信提交給短信服務提供商。
項目的啟動需要一個簡單、高效、快速實現(xiàn)業(yè)務要求的方案。
使用一段時間后,項目組發(fā)現(xiàn)當前的短信服務提供商不穩(wěn)定,因此決定更換為新的服務提供商。然而,實際上其他的短信服務企業(yè)也存在不穩(wěn)定的問題。
為了確保穩(wěn)定性,當服務提供商A失敗時,可以通過服務提供商B發(fā)送短信,并依次切換,直到成功發(fā)送或所有服務提供商都失敗。
新項目也需要發(fā)送短信,但工作場景相似。由于是不同的項目組,初期是各自獨立完成的。然而,在內(nèi)部交流時發(fā)現(xiàn),大家都做了重復的工作,導致項目組之間的合作變得混亂。
為了后續(xù)的優(yōu)化和更改,通過項目團隊之間的協(xié)商,決定獨立構建一個新的短信平臺,為各種項目提供集成服務。這樣,服務提供商的調(diào)度優(yōu)化與特定項目無關,項目的短信傳輸代碼變得非常簡單。
短信傳輸通常屬于非核心業(yè)務領域。為了提高性能,項目組對通知類短信進行了異步改造。改造后的性能確實提高了,但由于公司網(wǎng)絡的原因,短信平臺和短信服務商之間出現(xiàn)了各種問題,導致一些重要的短信沒有成功發(fā)送,也沒有相關的發(fā)送記錄。
為了解決這個問題,項目組決定將短信傳輸分為兩個階段。首先,將傳輸請求持續(xù)保存在數(shù)據(jù)庫中,然后從數(shù)據(jù)庫中讀取要發(fā)送的記錄,并通過調(diào)度算法盡力發(fā)送短信。如果最終由于網(wǎng)絡中斷或服務提供商不穩(wěn)定等異常原因?qū)е聜鬏斒,則標記該記錄,并在一段時間后重試,直到達到最大重試次數(shù)。這樣的方案可以持續(xù)發(fā)送請求,盡最大努力確保短信發(fā)送成功,并通過重試設置提高發(fā)送成功的可能性。
上述的解決方案解決了短信平臺和短信服務商之間的問題,但無法避免服務調(diào)用方和短信平臺之間的網(wǎng)絡錯誤和短信平臺停機的問題。為了解決這個問題,對服務調(diào)用方進行了持續(xù)改造,并對短信平臺進行了集群改造。
持續(xù)性改造的具體細節(jié)在這里不再詳述。短信平臺的集群化改造相對容易,通過調(diào)整部署方案,集群化改造接近完成。集群化改造在一定程度上提高了可用性和短信傳輸服務能力,但負載平衡仍然存在單點故障,需要進一步優(yōu)化。
一些小系統(tǒng)或合作客戶的系統(tǒng)也需要發(fā)送短信,但發(fā)送量不大,不愿意與短信服務企業(yè)單獨交易。因此,當他們了解到我們的短信平臺后,決定使用我們的服務。然而,對外提供服務需要考慮安全和收費問題。
為了滿足安全要求,可以參考各大短信服務提供商的方法,添加用戶和IP綁定功能。即為每個系統(tǒng)或組織分配唯一的賬戶和密碼,并將用戶與系統(tǒng)的外部IP綁定,以防止密碼泄露和其他異常糾紛。
付費問題相對簡單。由于短信平臺本身會持續(xù)傳輸請求,可以參考付款系統(tǒng)的“調(diào)整”概念,根據(jù)與客戶約定的頻率,在指定的路徑上生成短信賬單票據(jù),供客戶直接下載。
在持久性改造后,短信通過線程池發(fā)送,每個線程彼此獨立發(fā)送。這種方法簡單易懂,易于實施。然而,由于每個線程都是相互獨立的,發(fā)送異常時無法及時通知其他線程,會消耗大量資源。
為了解決這些問題,引入了調(diào)度程序。對于一批短信,首先發(fā)送一條確認是否成功發(fā)送的短信,如果成功發(fā)送,則繼續(xù)發(fā)送該批次中的其他短信。調(diào)度程序還會根據(jù)每個短信記錄服務提供商的服務狀態(tài),以記錄傳輸日程。
通知類短信的發(fā)送數(shù)量可能比登錄、注冊、密碼類即時短信要多得多。從業(yè)務角度來看,即時類短信不能等到上一個通知類短信發(fā)送完成。因此,在短信傳輸優(yōu)化中引入了優(yōu)先級概念,并對短信傳輸接口進行了改造。
通過對短信傳輸業(yè)務的深入了解,可以發(fā)現(xiàn)短信傳輸實際上是典型的商家和消費者問題。許多問題可以通過引入一次性解決的消息隊列來解決。這也是后續(xù)優(yōu)化的方向。
當然,在安全性、高性能、高可用性等方面還有很多工作要做。隨著工作范圍的擴大,現(xiàn)有的功能和設計方案亟待解決。
根據(jù)業(yè)務優(yōu)先的原則,一開始以滿足業(yè)務基本要求為主,技術上以靈活性為基本原則。
隨著業(yè)務的發(fā)展,設計應逐步解決可用性、可修改性、安全性、可測試性、易用性等質(zhì)量特性。
各功能、模塊在業(yè)務發(fā)展中趨向于獨立于當前項目,以獨立的服務對外提供服務。
在深入了解業(yè)務領域的同時,業(yè)務穩(wěn)定,系統(tǒng)重組要提上日程,所有重組都要考慮“輸入/輸出比率”。