純配時效服務-雙Redis集群設計
一、概述
純配時效服務作為物流下單環節中計算時效的重要組成部分,直接決定了下單的成功與否。其性能與穩定性至關重要,因為它們直接影響整個物流下單系統的運行效率及客戶滿意度。一個高效且穩定的純配時效服務能夠確保預計送達時間準確無誤地展示給用戶,從而提升客戶體驗和信任度。反之,若純配時效服務出現故障或延遲,可能會導致訂單處理延誤,甚至影響客戶的業務運營。因此,在設計和維護純配時效服務時,必須確保其具備高可靠性和快速響應能力,以應對各種突發情況,確保物流鏈條的順暢運行。
二、Redis集群模式
為了確保系統的高性能運行,我們摒棄了原先直接從數據庫讀取數據的模式。取而代之的是,我們將所有數據同步至Redis中,從而使得應用層能夠直接從Redis中獲取所需數據。這一改進不僅顯著提升了數據讀取速度,還有效減輕了數據庫的負擔,使整個系統更加穩定和高效。通過這種方式,我們能夠更好地應對高并發訪問,確保用戶在使用過程中獲得流暢的體驗。此外,Redis的內存存儲特性進一步提升了數據讀取速度,增強了系統的響應能力。
純配核心數據讀取示意圖

三、雙Redis集群設計
為了滿足容災需求,應用層采用了有孚和中云信的雙機房模式。此種模式確保在一個機房發生故障時,另一個機房能夠迅速接管業務,從而保障服務的連續性和穩定性。同樣地,為了確保數據的一致性和高可用性,Redis亦需設計為雙集群模式。通過在有孚和中云信兩地部署Redis集群,可以有效分散風險,即使其中一個集群出現故障,另一個集群仍能正常運行,從而保證系統的整體性能和可靠性。此外,雙集群模式還有助于減少正常情況下的跨機房問題,對提升性能亦有裨益。另外還需通過數據同步機制,確保兩個集群之間的數據一致性,進一步增強系統的容災能力和數據安全性。
雙Redis集群設計示意圖

四、雙集群設計應對場景
由整體架構設計來說,應用程序依據Redis的數據分離為讀寫兩個部分:JSF接口應用負責數據讀取,而數據同步應用則負責數據寫入。讀寫操作分別由這兩部分獨立控制。
1.JSF接口應用讀取場景設計
1)同機房數據訪問控制
Redis數據讀取層 -> 同機房選擇 (有孚機房訪問有孚機房Redis集群、中云信機房訪問中云信Redis集群)
2)數據訪問故障重試控制
Redis數據讀取層 -> 同機房選擇 -> 數據故障重試(當數據訪問失敗,自動進行重試,或換機房訪問)
3)DUCC人為控制
Redis數據讀取層 -> 同機房選擇 -> 數據故障重試 -> DUCC控制(通過DUCC由開發人員強制控制集群選擇,應對應急故障處理)
2.數據同步應用寫入場景設計
1)多場景數據加載設計
全量數據 (確保數據加載完整性)
增量數據(確保數據加載及時性)
指定數據(應對異常數據丟失,快速同步)
2)數據雙寫控制
Redis數據寫入層 -> redis雙寫控制(對帶寫入數據進行雙redis集群數據同步)
3)數據寫入異常處理控制
Redis數據寫入層 -> redis雙寫控制 -> 異常重試監控(對寫入失敗數據進行重試、排除偶然網絡故障導致的失敗,如果Redis集群故障,監控報警通知研發人員介入處理)
4)DUCC人為控制
Redis數據寫入層 -> -> redis雙寫控制 -> 異常重試監控 -> DUCC控制(通過DUCC由開發人員強制控制集群選擇,應對應急故障處理)
五、具體場景舉例
1.當中云信機房偶發短時網絡故障
1)JSF接口應用 -> Redis數據讀取層 -> 同機房選擇 -> 數據故障重試 進行數據重試讀取(同機房重試或跨機房重試)數據及時讀取
2)數據同步應用 -> Redis數據寫入層 -> redis雙寫控制 -> 異常重試監控 進行數據寫入重試,數據正常寫入 (Redis雙集群 數據一致性不受影響)
2.當中云信機房長時網絡或服務故障
1)JSF接口應用 -> Redis數據讀取層 -> 同機房選擇 -> 數據故障重試 進行數據重試讀取(同機房重試或跨機房重試)-> DUCC控制層(強制指定為單讀 有孚Redis集群)
2)數據同步應用 -> Redis數據寫入層 -> redis雙寫控制 -> 異常重試監控 (反復重試失敗報警通知 研發介入)-> DUCC控制層 (強制指定為單寫 有孚Redis集群)
3)中云信Redis集群故障恢復
4)數據同步應用 -> DUCC控制(恢復雙集群寫入) -> 觸發 全量數據 同步 -> 執行完成
5)JSF接口應用 -> DUCC控制(恢復雙集群讀取)
附錄
數據同步簡介
純配時效基礎數據的設計采用了軟刪除機制,這是一種更為靈活和安全的數據管理方式。具體來說,當數據被標記為刪除時,實際上只是進行了邏輯上的刪除,而不是直接從數據庫中物理刪除。這種設計的好處在于,如果在刪除操作后發現誤刪或需要恢復數據,可以及時找回,避免了數據的永久丟失。邏輯刪除后的數據將在15天后進行物理刪除,也就是所謂的結轉。這15天的緩沖期為數據恢復提供了充足的時間窗口,同時也確保了系統的數據清理工作能夠有序進行。通過這種方式,系統能夠在保證數據安全性和完整性的同時,有效地管理數據生命周期。
數據同步設計示意圖

浙公網安備 33010602011771號