一個新產品需要重點考慮業務風險控制。 關於風險控制系統整體的技術方案可以參考 支付系統風控系統建設思考 此方案儘管能夠滿足業務需求,但對於海量交易數據分析、風險事件的實時處理、大量的風險規則處理上,在實時性、性能、架構的可擴展性上都不是很理想,有必要重新從架構上考慮一下實現方案。

一般而言,風險控制系統標準的軟件架構如下:

CEP,复杂事件处理,Complex Event Processing,Event Stream Processing,ESP,风险控制

1、風控系統實現的幾種方案

1)、數據庫方案:將風險規則、交易數據等都採用關係數據庫存放。 正如 支付系統風控系統建設思考 所提到的方案,交易庫和風險庫一般分別部署在不同的服務器上,在事件觸發上可以採用數據庫觸發器、消息隊列事件等方案。 此種方案技術實現相對簡單,但在進行海量交易數據查詢以及大量風險規則處理時候,數據庫系統查詢性能及擴展性成為一個較大的瓶頸。 很難滿足風險事件實時分析的要求。

2)、內存數據庫方案:由於對海量交易數據的查詢、分析極其消耗數據庫資源,可以採用內存數據庫方案來替代關係數據庫,保證風險事件實時處理的性能。 但目前開源的內存數據中VoltDB、H2、MonetDB、FastDB、Berkeley DB、SQLite等在大規模的業務場合應用的成熟度尚待考察,而Oracle TimesTen、MCObject eXtremeDB、Altibase價格太高。

3)、分佈式緩存方案:採用Memcached等NOSQL的分佈式緩存來緩存交易數據、風險規則等,但由於NOSQL解決方案並不擅長數據間的關係邏輯處理,需要在程序中大量維護業務處理邏輯,遠不如關係數據庫或內存數據庫方案方便。

以上方案,都可以通過規則引擎(例如drools)來完成風險規則的管理和維護,避免了風險規則維護的繁瑣及規則間複雜關係處理。

2、Complex Event Processing (複雜事件處理)

Complex Event Processing (複雜事件處理)是一種新興的基於事件流的技術,它將系統數據看作不同類型的事件,通過分析事件間的關係,建立不同的事件關係序列庫,利用過濾、關聯、聚合等技術,最終由簡單事件產生高級事件或商業流程。 CEP適合的場景包括實時風險管理、實時交易分析、網絡詐欺、網絡攻擊、市場趨勢分析等等。

CEP,复杂事件处理,Complex Event Processing,Event Stream Processing,ESP,风险控制

CEP的幾大特點:

  • 基於數據流
  • 時間序列
  • 實時
  • 複雜

CEP,复杂事件处理,Complex Event Processing,Event Stream Processing,ESP,风险控制

數據庫方案與CEP方案對比(摘自Sybase CEP方案)

3、開源項目

Esper – Complex Event Processing

http://esper.codehaus.org/

JBoss – Drools Fusion

http://www.jboss.org/drools/drools-fusion.html

Open ESB IEP SE

http://wiki.open-esb.java.net/Wiki.jsp?page=IEPSE

ActiveInsight

http://www.activeinsight.net/

其他產品或開源項目,可以參考:Complex Event Processing Vendors

其中Esper和Drools Fusion很值得考慮,後續作為重點研究對象。

4、參考資料

深入淺出複合事件處理(CEP)

輕鬆理解複合事件處理

Esper:CEP Engine

Complex Event Processing:An attempt at clarity on an often confusing topic

Sybase CEP:新穎的數據流分析平台

廣告