Stories

Detail Return Return

純配時效服務-雙Redis集羣設計 - Stories Detail

一、概述

純配時效服務作為物流下單環節中計算時效的重要組成部分,直接決定了下單的成功與否。其性能與穩定性至關重要,因為它們直接影響整個物流下單系統的運行效率及客户滿意度。一個高效且穩定的純配時效服務能夠確保預計送達時間準確無誤地展示給用户,從而提升客户體驗和信任度。反之,若純配時效服務出現故障或延遲,可能會導致訂單處理延誤,甚至影響客户的業務運營。因此,在設計和維護純配時效服務時,必須確保其具備高可靠性和快速響應能力,以應對各種突發情況,確保物流鏈條的順暢運行。

二、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天的緩衝期為數據恢復提供了充足的時間窗口,同時也確保了系統的數據清理工作能夠有序進行。通過這種方式,系統能夠在保證數據安全性和完整性的同時,有效地管理數據生命週期。

數據同步設計示意圖

在這裏插入圖片描述

user avatar candy_68fb0dfb0afd0 Avatar lyhabc Avatar huidadebianpao Avatar hsr2022 Avatar wentaohu12138 Avatar tobin_blogs Avatar euphoria Avatar shawnphang Avatar thinking80s Avatar lanlan_guo Avatar shenjingwa_6545efd9181d1 Avatar tiaoyuedelinghun_5b34a58295338 Avatar
Favorites 14 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.