Akamai為金融科技公司量身打造高性能鍵值存儲解決方案
金融科技和電子商務(wù)服務(wù)需要處理大量交易,對性能、可靠性和韌性有著苛刻的要求。在這些領(lǐng)域的服務(wù)中,特定一筆交易的數(shù)據(jù)存儲量可能沒有媒體或游戲等其他行業(yè)那么大,但企業(yè)必須嚴(yán)格遵守安全性、延遲和一致性標(biāo)準(zhǔn)。
延伸閱讀,點(diǎn)擊鏈接了解 Akamai Cloud Computing
本文概括介紹了一種分布式鍵值(Key-value,KV)存儲架構(gòu),該架構(gòu)能為全球化金融科技服務(wù)和銀行系統(tǒng)間的用戶注冊提供支持。其中,存儲的數(shù)據(jù)代表用戶的信用卡信息,這些信息還會在存儲系統(tǒng)中進(jìn)行加密。這個鍵值存儲采用了NATS和JetStream持久性引擎來實(shí)現(xiàn),部署在Akamai Connected Cloud的11個核心計(jì)算區(qū)域。該系統(tǒng)能存儲數(shù)億個密鑰,同時保證注冊請求的低延遲,并提供了快速發(fā)布和更新鍵值數(shù)據(jù)的高韌性方法。
分布式鍵值存儲工作流
從較高層面來看,鍵/值注冊數(shù)據(jù)的存儲和請求工作流程如下:
- 將鍵值數(shù)據(jù)加載到NATS主集群。
- NATS協(xié)議將數(shù)據(jù)傳播到10個不同核心計(jì)算位置的10個NATS葉節(jié)點(diǎn)。
- 每個NATS葉節(jié)點(diǎn)前的HTTPS網(wǎng)關(guān)接受來自Akamai Global Load Balancer的注冊請求。
- 用戶向Global Traffic Manager提交注冊請求。負(fù)載均衡器根據(jù)用戶位置將請求路由到性能最好的NATS節(jié)點(diǎn)。
可應(yīng)對的挑戰(zhàn)
延遲敏感性
確定造成高延遲的源頭,將這些組件的延遲影響降至最低。
為該用例設(shè)計(jì)的鍵值存儲架構(gòu)需要確保對所有請求的響應(yīng)延遲不能超過60毫秒。在該架構(gòu)的測試中,連接和TLS協(xié)商時間通常小于10毫秒,建立連接后的等待時間也小于10毫秒。實(shí)現(xiàn)這種性能的原因在于:存儲架構(gòu)可在廣泛的地理區(qū)域內(nèi)緩存數(shù)據(jù),允許跨區(qū)域用戶向附近的存儲節(jié)點(diǎn)發(fā)出低延遲請求。
鍵值數(shù)據(jù)首先存儲在主NATS集群中,然后再緩存到按地理位置分布的葉節(jié)點(diǎn)。NATS內(nèi)置的JetStream持久層引擎可在主集群中創(chuàng)建鍵值持久層。如果不使用JetStream,核心NATS軟件就無法提供這種持久性。
JetStream還使用NATS優(yōu)化的RAFT仲裁算法使葉節(jié)點(diǎn)與主集群保持同步。這種算法可支持極高程度的水平擴(kuò)展,從而使架構(gòu)能夠擴(kuò)展到新區(qū)域。Akamai的計(jì)算區(qū)域遍布全球,為該服務(wù)的擴(kuò)展提供了充分支持。由于所有這一切都是通過相同軟件完成的,因此這種擴(kuò)展的配置和操作都相對簡單。
韌性
確保能夠無差錯地處理用戶注冊請求。
鍵值存儲架構(gòu)還要求在運(yùn)行時盡量減少錯誤,無論是用戶對服務(wù)提出的請求,還是接受新鍵值數(shù)據(jù)進(jìn)入集群的更新操作,都是如此。
由于數(shù)據(jù)是在一系列不同計(jì)算區(qū)域緩存的,因此一個或多個葉節(jié)點(diǎn)出現(xiàn)故障不會導(dǎo)致服務(wù)中斷。基于DNS的Akamai Global Traffic Manager會將用戶請求路由到宕機(jī)時仍然可用的葉節(jié)點(diǎn)。當(dāng)某個葉節(jié)點(diǎn)在停機(jī)后恢復(fù)服務(wù)后,JetStream仲裁算法會將其數(shù)據(jù)恢復(fù)到與其他節(jié)點(diǎn)一致的狀態(tài)。
優(yōu)先存儲了鍵值數(shù)據(jù)的主集群本身由三個節(jié)點(diǎn)組成。如果其他兩個節(jié)點(diǎn)宕機(jī),該集群只需一個節(jié)點(diǎn)就能繼續(xù)運(yùn)行。與葉節(jié)點(diǎn)一樣,JetStream仲裁算法將在其他主集群節(jié)點(diǎn)恢復(fù)服務(wù)時恢復(fù)它們的數(shù)據(jù)。
數(shù)據(jù)一致性
在分布式存儲集群中快速傳播對用戶數(shù)據(jù)進(jìn)行的更改。
鍵值數(shù)據(jù)緩存在多個核心計(jì)算區(qū)域內(nèi),對任何兩個位置發(fā)起的相同請求都必須能返回一致的數(shù)據(jù)。當(dāng)主集群中的數(shù)據(jù)更新在網(wǎng)絡(luò)上傳播時,不同葉節(jié)點(diǎn)存儲的數(shù)據(jù)可能會出現(xiàn)差異。
因此快速傳播這些更新操作就成了一個重要的前提要求。在測試這種架構(gòu)時,JetStream使用的仲裁算法能在不到100毫秒的時間內(nèi)實(shí)現(xiàn)全網(wǎng)一致性。
分布式鍵值存儲設(shè)計(jì)示意圖
該解決方案在Akamai Connected Cloud上創(chuàng)建了一個鍵值存儲服務(wù)。這個服務(wù)由一個計(jì)算區(qū)域的主存儲集群和安裝在其他十個計(jì)算區(qū)域的十個存儲葉節(jié)點(diǎn)組成。Akamai Global Traffic Management負(fù)責(zé)將用戶請求路由到葉節(jié)點(diǎn)。
- 發(fā)布鍵值數(shù)據(jù):鍵值數(shù)據(jù)通過NATS客戶端軟件異步加載到主存儲集群中。
- JetStream使用NATS優(yōu)化的Raft仲裁算法在主集群的三個節(jié)點(diǎn)上更新數(shù)據(jù)。
- JetStream的仲裁算法更新安裝在其他Akamai計(jì)算區(qū)域的10個NATS葉節(jié)點(diǎn)上的數(shù)據(jù)。
- 用戶請求:用戶向存儲服務(wù)發(fā)出HTTPS請求。請求中以編碼的方式包含了用戶希望檢索的數(shù)據(jù)對應(yīng)的鍵,例如example.com/kv/{key}
- Akamai Global Traffic Management使用DNS將請求路由到存儲葉節(jié)點(diǎn)。對葉節(jié)點(diǎn)進(jìn)行有效性檢查,以便只將請求路由到可用節(jié)點(diǎn)。根據(jù)用戶所在位置,選擇延遲最低、性能最佳的節(jié)點(diǎn)。
- HTTPS/NATS網(wǎng)關(guān)NGINX收到請求,并使用請求URL中編碼的鍵從葉節(jié)點(diǎn)檢索鍵值數(shù)據(jù)。
涉及的系統(tǒng)和組件
- 一個主NATS集群:由安裝在核心計(jì)算區(qū)域的3個節(jié)點(diǎn)組成。NATS是一種數(shù)據(jù)通信技術(shù),用于以“發(fā)布-訂閱”模式在服務(wù)間發(fā)送消息。核心NATS不為這些數(shù)據(jù)提供持久性。
- 內(nèi)置的JetStream持久引擎用于在集群上實(shí)現(xiàn)鍵值存儲。JetStream的仲裁算法可保持三個節(jié)點(diǎn)間鍵值數(shù)據(jù)的一致性。
- 鍵值數(shù)據(jù)首先通過NATS協(xié)議上傳到主集群。
- 十個NATS葉節(jié)點(diǎn)安裝在十個計(jì)算區(qū)域。當(dāng)主集群更新鍵值數(shù)據(jù)時,JetStream的仲裁算法會更新這些節(jié)點(diǎn)上的數(shù)據(jù)。
- 每個NATS葉節(jié)點(diǎn)都有一個HTTPS網(wǎng)關(guān),安裝在與葉節(jié)點(diǎn)相同的計(jì)算區(qū)域。這些網(wǎng)關(guān)會偵聽包含鍵值對的鍵文本的URL請求,例如:example.com/kv/{key}
- 網(wǎng)關(guān)從相應(yīng)的NATS葉節(jié)點(diǎn)檢索鍵值。
- Akamai Global Traffic Management負(fù)責(zé)接受用戶對服務(wù)的請求,并將請求路由到可用葉節(jié)點(diǎn),為用戶所在位置提供最低的延遲。
通過這樣的設(shè)計(jì),這套高性能鍵值存儲解決方案即可在全球范圍內(nèi)為不同位置的用戶提供快速、可靠、一致的數(shù)據(jù)訪問。歡迎關(guān)注Akamai官網(wǎng),進(jìn)一步了解該解決方案,以及Akamai針對不同行業(yè)客戶量身定制的更多創(chuàng)新解決方案。
—————————————————————————————————————————————————
如您所在的企業(yè)也在考慮采購云服務(wù)或進(jìn)行云遷移,
點(diǎn)擊鏈接了解Akamai Linode解決方案,現(xiàn)在申請?jiān)囉每傻酶哌_(dá)500美元專屬額度