萬事達卡使用Apache Geode防範欺詐

擁有近2億持卡客戶的萬事達卡(Mastercard)非常關注信用卡欺詐問題。

隨著信用卡用戶的不斷普及,萬事達卡的客戶群正在不斷擴大,持卡用戶在越來越多的消費過程中選擇使用信用卡進行付款。事實上,最近的一項調查發現,80%的調查對象選擇信用卡或借記卡作為主要支付方式。該調查還顯示,選擇信用卡作為唯一支付方式的人越來越多。

與這樣的趨勢相伴而來的是欺詐風險,數十億美元面臨著欺詐風險。去年,全球範圍內的信用卡欺詐導致該行業損失240億美元。防範欺詐成了當務之急。

那麼,萬事達卡是如何最大限度地降低欺詐風險的呢?萬事達卡的首席軟件工程師Andrey Zolotov和Pivotal的首席數據轉型架構師Gideon Low在最近舉辦的SpringOne Platform 2019大會上探討了這個話題。

當性能與數量無法兼得時,選擇Apache Geode

萬事達卡打擊欺詐和驗證持卡客戶身份的措施均以Decision Management Platform (DMP)平臺為核心。使用萬事達卡進行的每次刷卡或點擊都要經過DMP。該平臺要麼批准交易,要麼阻止交易併發出警報。DMP的多用途交易處理引擎是一個更大系統框架的一部分,這個框架已應用於20多款萬事達卡產品。

但是,擴展這樣的任務關鍵型系統是一項嚴峻挑戰。萬事達卡既需要大量數據,也需要快速響應。如果您無法犧牲數量換取性能(反之亦然),勢必會遇到增長方面的問題。

萬事達卡最終利用Apache Geode的基於內存的技術實現了數量與性能的平衡。此外,萬事達卡的工程師使用設計模式來擴展數據密集型應用的數據量和交易吞吐量,同時不會增加延遲。

針對TB級數據設計Geode

像DMP這樣有廣度的決策平臺需要TB級的共享數據。由於系統必須處理數百個時間感知型的聚合或計算變量,情況變得更加複雜。這些附加數據用於運行風險模型和數百個決策規則。據萬事達卡估計,他們擁有超過300億項時間感知型聚合!

在處理這種大規模數據方面,Zolotov和Low提到了很多注意事項和最佳實踐。

  • 垂直和水平縮放的節點

萬事達卡試驗了這兩種方法,發現它們都非常有效。垂直縮放(每個節點的堆大小較大)與無中斷JVM配合進行垃圾收集,效果很好。水平縮放的優勢在於與並行性相關的性能優化。

  • 通過共置實現數據訪問可擴展性

萬事達卡會盡可能對相關數據進行共置。例如,與客戶帳戶相關的所有數據都位於同一個節點上。這樣一來,針對某客戶數據的請求只需發送到一個節點。這一簡單的設計方案將讀取性能提高到了每秒800萬次讀取。另一個好處是,萬事達卡可以在不增加網絡呼叫數量的前提下橫向擴展網絡。

  • 均衡的數據分佈

用於數據分區的鍵(含義與鍵-值存儲中的“鍵”相同)應該產生均勻的分佈。為什麼呢?很簡單:因為不均衡的工作負載會阻礙可擴展性。Andrey安排了足夠的時間努力確定正確的數據分佈方法,即採用均衡分區的方式,將工作負載均衡地分佈到集群中的節點上。

  • 使用字節數組存儲

使用字節數組存儲可以降低Java對象圖的複雜性。而這恰好也是Geode的默認存儲模型。事實證明,Geode是一個了不起的高效字節數組管理器!字節數組可以更輕鬆地擴展,因為Java堆更易於處理。簡單的字節數組還可以加快垃圾回收工作負載。

運用這些概念,萬事達卡能夠將其Geode集群提升到40TB,並實現可持續的性能。他們又是如何解決延遲問題的呢?請繼續閱讀。

大規模優化Geode性能

萬事達卡的目標是將平均交易延遲保持在50毫秒內。這個基準為他們提供了一些餘地,以應對意外出現的減速。他們希望在吞吐量為每秒60,000筆交易的情況下達到這個延遲目標。要達到這樣的性能水平,需要亞毫秒級讀取速度,也就是每秒數百萬次讀取。

萬事達卡充分利用了Geode的內置性能優化來實現這一目標。隨著DMP處理的可用數據的增加,對數據的請求數量也會相應增加。客戶對數據的請求通常涉及通過網絡傳遞的大量數據,這是不受歡迎的性能瓶頸。另外,以很高的每秒交易數(TPS)反序列化許多條目會佔用大量CPU週期。

那麼萬事達卡是如何應對的呢?Andrey和Gideon再次介紹了四個相關領域:

聚合

DMP針對每筆交易使用數以百億計的實時更新和使用的聚合。是的,這會增加數據量。但在性能上獲得了豐碩的回報!

將代碼移至數據

Geode的函數會將邏輯分流到集群本身。它可以並行執行,減少客戶端的負擔,並最大程度地降低網絡佔用率。Geode的函數可識別數據,並且僅在具有請求所需數據的分區上調用函數。

“實施上下文感知的功能讓客戶端和服務器節點之間的網絡流量減少了95%,而且Geode服務器上的延遲減少了50%,CPU使用率減少了40%。Delta傳播使對等網絡流量又減少了50%...”

- Andrey Zolotov,萬事達卡軟件工程師

基於內存的爭用管理(contension management)

萬事達卡在DMP中更新數據的速度引發了有關爭用和一致性的問題。當多筆交易嘗試同時更新同一數據時,就會發生爭用。在這種情況下,交易將自動序列化並完成。一致性與同時更新所有副本或相關數據有關,同時更新是為了讓所有應用和用戶都能看到數據的最新值。

萬事達卡面臨的挑戰是,在處理快速、原子化的增量更新的同時,管理爭用並保持數據一致性。當然,Geode可以存儲複雜的對象,但對象屬性的更新也可以作為增量更新處理。這樣一來,就不會影響(即鎖定)對未更新的其他屬性的訪問。

此外,每筆交易都會涉及數百次讀取和寫入。高效的爭用管理可讓Geode以每秒成千上萬次的速度,以原子化方式將小的更改應用到大的條目。

性能和可擴展性至關重要時,企業選擇了Geode

當然,在實際應用中,可以對上述介紹的方法稍加改動。Andrey和Gideon在SpringOne Platform大會的分組會議期間詳細探討了這些話題(以及其他話題)。

希望瞭解更多?請觀看有關Geode性能基準的Geode Summit會議。


關於作者

萬事達卡使用Apache Geode防範欺詐

Jagdish Mirani

Pivotal 企業軟件部門主管

Jagdish Mirani是企業軟件部門的主管,在產品管理和產品營銷方面擁有豐富的經驗。目前他負責Pivotal數據服務(Cloud Cache、MySQL、Redis、PostgreSQL)的產品營銷。加入Pivotal之前,Jagdish在Oracle的數據倉庫和商業智能部門工作了10年。


分享到:


相關文章: