Akamai為金融科技公司量身打造高性能鍵值存儲解決方案
金融科技和電子商務服務需要處理大量交易,對性能、可靠性和韌性有著苛刻的要求。在這些領域的服務中,特定一筆交易的數據存儲量可能沒有媒體或游戲等其他行業那么大,但企業必須嚴格遵守安全性、延遲和一致性標準。
延伸閱讀,點擊鏈接了解 Akamai Cloud Computing
本文概括介紹了一種分布式鍵值(Key-value,KV)存儲架構,該架構能為全球化金融科技服務和銀行系統間的用戶注冊提供支持。其中,存儲的數據代表用戶的信用卡信息,這些信息還會在存儲系統中進行加密。這個鍵值存儲采用了NATS和JetStream持久性引擎來實現,部署在Akamai Connected Cloud的11個核心計算區域。該系統能存儲數億個密鑰,同時保證注冊請求的低延遲,并提供了快速發布和更新鍵值數據的高韌性方法。
分布式鍵值存儲工作流
從較高層面來看,鍵/值注冊數據的存儲和請求工作流程如下:
- 將鍵值數據加載到NATS主集群。
- NATS協議將數據傳播到10個不同核心計算位置的10個NATS葉節點。
- 每個NATS葉節點前的HTTPS網關接受來自Akamai Global Load Balancer的注冊請求。
- 用戶向Global Traffic Manager提交注冊請求。負載均衡器根據用戶位置將請求路由到性能最好的NATS節點。
可應對的挑戰
延遲敏感性
確定造成高延遲的源頭,將這些組件的延遲影響降至最低。
為該用例設計的鍵值存儲架構需要確保對所有請求的響應延遲不能超過60毫秒。在該架構的測試中,連接和TLS協商時間通常小于10毫秒,建立連接后的等待時間也小于10毫秒。實現這種性能的原因在于:存儲架構可在廣泛的地理區域內緩存數據,允許跨區域用戶向附近的存儲節點發出低延遲請求。
鍵值數據首先存儲在主NATS集群中,然后再緩存到按地理位置分布的葉節點。NATS內置的JetStream持久層引擎可在主集群中創建鍵值持久層。如果不使用JetStream,核心NATS軟件就無法提供這種持久性。
JetStream還使用NATS優化的RAFT仲裁算法使葉節點與主集群保持同步。這種算法可支持極高程度的水平擴展,從而使架構能夠擴展到新區域。Akamai的計算區域遍布全球,為該服務的擴展提供了充分支持。由于所有這一切都是通過相同軟件完成的,因此這種擴展的配置和操作都相對簡單。
韌性
確保能夠無差錯地處理用戶注冊請求。
鍵值存儲架構還要求在運行時盡量減少錯誤,無論是用戶對服務提出的請求,還是接受新鍵值數據進入集群的更新操作,都是如此。
由于數據是在一系列不同計算區域緩存的,因此一個或多個葉節點出現故障不會導致服務中斷。基于DNS的Akamai Global Traffic Manager會將用戶請求路由到宕機時仍然可用的葉節點。當某個葉節點在停機后恢復服務后,JetStream仲裁算法會將其數據恢復到與其他節點一致的狀態。
優先存儲了鍵值數據的主集群本身由三個節點組成。如果其他兩個節點宕機,該集群只需一個節點就能繼續運行。與葉節點一樣,JetStream仲裁算法將在其他主集群節點恢復服務時恢復它們的數據。
數據一致性
在分布式存儲集群中快速傳播對用戶數據進行的更改。
鍵值數據緩存在多個核心計算區域內,對任何兩個位置發起的相同請求都必須能返回一致的數據。當主集群中的數據更新在網絡上傳播時,不同葉節點存儲的數據可能會出現差異。
因此快速傳播這些更新操作就成了一個重要的前提要求。在測試這種架構時,JetStream使用的仲裁算法能在不到100毫秒的時間內實現全網一致性。
分布式鍵值存儲設計示意圖
該解決方案在Akamai Connected Cloud上創建了一個鍵值存儲服務。這個服務由一個計算區域的主存儲集群和安裝在其他十個計算區域的十個存儲葉節點組成。Akamai Global Traffic Management負責將用戶請求路由到葉節點。

- 發布鍵值數據:鍵值數據通過NATS客戶端軟件異步加載到主存儲集群中。
- JetStream使用NATS優化的Raft仲裁算法在主集群的三個節點上更新數據。
- JetStream的仲裁算法更新安裝在其他Akamai計算區域的10個NATS葉節點上的數據。
- 用戶請求:用戶向存儲服務發出HTTPS請求。請求中以編碼的方式包含了用戶希望檢索的數據對應的鍵,例如example.com/kv/{key}
- Akamai Global Traffic Management使用DNS將請求路由到存儲葉節點。對葉節點進行有效性檢查,以便只將請求路由到可用節點。根據用戶所在位置,選擇延遲最低、性能最佳的節點。
- HTTPS/NATS網關NGINX收到請求,并使用請求URL中編碼的鍵從葉節點檢索鍵值數據。
涉及的系統和組件
- 一個主NATS集群:由安裝在核心計算區域的3個節點組成。NATS是一種數據通信技術,用于以“發布-訂閱”模式在服務間發送消息。核心NATS不為這些數據提供持久性。
- 內置的JetStream持久引擎用于在集群上實現鍵值存儲。JetStream的仲裁算法可保持三個節點間鍵值數據的一致性。
- 鍵值數據首先通過NATS協議上傳到主集群。
- 十個NATS葉節點安裝在十個計算區域。當主集群更新鍵值數據時,JetStream的仲裁算法會更新這些節點上的數據。
- 每個NATS葉節點都有一個HTTPS網關,安裝在與葉節點相同的計算區域。這些網關會偵聽包含鍵值對的鍵文本的URL請求,例如:example.com/kv/{key}
- 網關從相應的NATS葉節點檢索鍵值。
- Akamai Global Traffic Management負責接受用戶對服務的請求,并將請求路由到可用葉節點,為用戶所在位置提供最低的延遲。
通過這樣的設計,這套高性能鍵值存儲解決方案即可在全球范圍內為不同位置的用戶提供快速、可靠、一致的數據訪問。歡迎關注Akamai官網,進一步了解該解決方案,以及Akamai針對不同行業客戶量身定制的更多創新解決方案。
—————————————————————————————————————————————————
如您所在的企業也在考慮采購云服務或進行云遷移,
點擊鏈接了解Akamai Linode解決方案,現在申請試用可得高達500美元專屬額度
























