天天看點

案例:恒豐銀行——大資料實時流處理平台

恒豐銀行于2016年1月完成了傳統資料倉庫向大資料平台資料倉庫的遷移,以新的資料倉庫平台為基礎,結合行内的通用檔案傳輸平台、統一排程平台,規範了源資料系統的資料報送,梳理建構了新的資料模型,大資料平台解決了傳統數倉在批量資料處理能力的不足,在相關任務上體驗到了從數小時到十幾分鐘的提升。

大資料平台解決了大資料特征中四個V的大資料量(Volume)的處理,我們還需要引入實時處理技術能覆寫資料多樣性(Variety),高速處理資料(Velocity),進而挖掘更大的價值(Value)。資料的價值随着時間的流逝而降低,如何在技術上提供支撐,發揮以日志為代表的行内實時資料和付費購買或者免費爬取的海量網際網路資料在商業銀行業務中的價值是亟待解決的問題。變現,是硬道理!換句話說,我們需要将ETL、業務模組化、機器學習、可視化擴充到實時資料,将與風險管理、客戶營銷相關的資料和計算規則從銀行關鍵業務系統裡面解耦,對相關業務應用提供完整的支撐。

周期/節奏

2015年9月至11月,大資料實時流處理平台可行性分析,技術元件選型。

2015年11月,項目啟動。

2015年12月,完成總體需求分析,确定平台的主要業務目标是在營運監控、反欺詐、客戶行為分析、風險預警方面提供實時資料支援。

2015年12月-2016年8月,完成平台設計和基礎元件的實施、投産。

2016年8月-今,對基礎元件進行優化和補充,對業務應用開發提供支援,配合IT營運實時監控、客戶點選流、交易反欺詐、貸後預警等與實時資料相關的應用建設。

客戶名稱/所屬分類

恒豐銀行/大資料技術服務

任務/目标

同網際網路公司相比,傳統商業銀行在業務種類、交易模式、監管要求方面都大大不同,我們針對行内業務需求設計了以下功能架構:流處理平台提供基礎的資料采集、接收、過濾解析、實時規則計算、存儲和分析挖掘功能,以此為基礎建構實時營銷平台、實時風險預警平台進行業務邏輯加工,行内的各個管道系統、信貸系統、IT營運監控系統、營運風險監測通過訂閱方式獲得實時處理後的資料,滿足IT營運實時監控、客戶行為分析、交易反欺詐、授信評審與貸後預警、營運風險監測等方面的業務需求。

案例:恒豐銀行——大資料實時流處理平台

目前的實時資料源主要包括業務系統的應用日志,企業消息總線關聯交易日志,第三方資料公司實時推送資料,網絡裝置、作業系統、中間件日志,資料庫日志,外部網站爬蟲資訊,流處理平台要負責實作以下目标:

●各類基礎資料的實時采集,過濾解析;

●根據業務應用需要提供基礎資料實時加工功能;

●同時支援簡單和複雜業務邏輯規則模型,支援基于流資料的實時分析;

●便于與異構系統內建,實作資料共享,要包含與主流的流計算架構、各類資料庫、前端架構、消息中間件設施、主流接口協定;

●海量資料的持久化存儲和快速檢索;

●提供平台級别的資料管理功能,包括資料脫敏、使用者權限、資料時效管理和分級存儲等方面功能。

挑戰

大資料實時流處理平台在實際實施過程中主要面臨以下技術難點:

1.如何實作流處理系統在可伸縮性、系統容錯、高可用性、彈性部署、差異服務管理、吞吐性能方面的要求。

●平台資源方面:使用實體機伺服器和傳統的虛拟機技術無法根據資料流量和計算任務量實作資源層面快速擴容;對計算、存儲、網絡等資源管理不夠精細,資源申請周期長,資源的可用性低。

●應用架構方面:如果采用傳統的單體應用架構,由于Socket連接配接方式、線程服務模型、鎖沖突、同步IO阻塞等原因,在并發處理能力上先天不足;大資料微服務架構又會面臨程式設計學習和開發成本高,并且架構對異步并行排程、服務品質管理方面支援不足的問題。

●開發體系和工具方面:流處理平台元件繁多,疊代頻率高,服務品質管理更精細,現有的開發體系和工具無法在實施的各個階段實作有力支撐。

2.如何建構高性能、高可用性,覆寫所有業務需求資料源的實時采集、傳輸元件。

商業銀行内部價值最大的流資料就是應用系統及各類裝置每天産生的日志資料,同網際網路公司比,銀行的系統種類多,來源廣,架構平台雜,主要交易系統的産品化程度高,改造風險大,日志規範性差,不同應用的日志路徑、檔案個數、内容、復原規則各不相同,如某重要系統應用,同時列印的交易日志檔案達幾百個;除了應用日志檔案外,用于運維監控的系統實時資源資訊、需要從外部獲得的輿情、資訊資訊都需要資料采集元件提供高性能、高可用性、高安全可靠性的實時采集、傳輸功能。

3.如何提供易于異構系統內建的軟體服務能力。

流資料及其計算處理後的資料最終是要提供給其他應用使用的,這就要求流處理平台提供統一的消息服務能力,滿足異構系統各種內建方式的需求,這些需求可能通過前端直接通路、RPC遠端調用,也可能通過主流的消息中間件、記憶體資料庫,傳統資料庫,也可能通過與其他流處理架構內建。

4.如何應對靈活的業務邏輯變化,降低開發工作量。

基于流資料的業務應用要求流處理平台在資料處理和計算上具有較高的靈活性,在資料解析結構化方面,如日志或者資訊資訊中的某些字段在目前的監控業務模型中沒有具體用處,不做預處理,突然有一天,業務人員發現可以用于實時交易欺詐模型;在計算規則方面,如銀行新開通了信用卡業務,對于客戶全管道行為的分析就要把信用卡的資料加入,業務人員都希望能夠基于提出的規則即時實施,并且能夠處理複雜規則邏輯,平台要在這方面進行支撐,減少上層應用開發工作量。

5.如何對龐大的平台各元件及用戶端提供統一的配置和管理。

雲平台下對應用的計算資源、存儲資源進行精細化管理,應用的節點數增多,可用性提高,随之大大提高了日志采集用戶端的數量,應用日志相對于中間件、資料庫、syslog日志相比在采集任務配置也複雜得多,如何高效管理幾千個日志采集用戶端和爬蟲用戶端,對其運作狀态、采集任務進行實時配置和更新,大規模性的集中部署和更新,如何對其他流計算元件叢集的狀态一緻性進行配置管理,提供友善的流資料處理流程配置功能,也是流處理平台需要解決的問題。

6.如何滿足海量資料的高速存儲、檢索和分析挖掘的需求。

流處理平台要滿足原始資料和解析計算後的資料高速存儲和查詢檢索需求,并在使用時滿足銀行對客戶資料脫敏、使用者權限管理、資料分級存儲的要求,提供內建的資料分析和機器學習工具以便更好地挖掘的資料價值。

實施過程/解決方案

在實際實施過程中,行内針對釋出應用日志和應用監控輸出的規範,将日志輸出的要求納入了從招标到驗收的項目管理整個流程,對建立系統提出了明确的要求,這大大友善了日志采集,提高了流處理的效率,下面主要描述如何從技術上解決上一章提到的六個難點。

●平台架構

通過分析傳統單體應用在并發服務能力、服務品質、運作部署方面的不足,并最終選取技術成熟的akka微服務架構+docker容器雲技術作為平台流計算和資料服務元件的基礎技術架構。

案例:恒豐銀行——大資料實時流處理平台

響應式微服務架構通過消息機制避免共享資源的鎖沖突,降低線程資源需求。同時,将失敗也作為一種消息,實作服務自治,可以實作各個級别的失敗快速恢複,能夠實作功能及服務的靈活打包部署,建構位置透明的叢集服務體系,實作彈性擴容和差異化的硬體資源配置;akka除了具備以上優點外還内嵌了基于netty技術的NIO架構,不需要額外配置Weblogic或者WebSphere等中間件伺服器,降低使用成本,支援更多用戶端連接配接,單節點每秒5000萬消息處理;1GB記憶體250萬Actor,消息傳遞機制實作分布式微服務協同、資料共享,消除資源鎖需求;Actor模型實作多層級自治監管機制,建構安全運作的防火牆和沙箱,微秒級的故障恢複,支援彈性部署多種叢集部署模式,遠端服務透明通路,多種可配置的負載均衡政策。

我們将akka微服務架構的叢集負載,服務監控、故障恢複與彈性部署能力結合恒豐銀行PAAS雲平台采用的docker容器技術對應用級負載、監控、彈性資源配置設定以及快速部署能力相結合,滿足了本節開頭對流計算元件的要求。除了流計算元件,平台使用的flume、kafka、zookeeper、redis等開源元件也實作docker容器化并借助DevOps工具服務,從開發、建構、測試到版本釋出的全流程自動化,中間提供包括計劃、任務配置設定跟蹤、問題跟蹤、文檔管理、版本釋出全過程的項目協作支援。

案例:恒豐銀行——大資料實時流處理平台

我們使用自研微服務架構平台Skyline進行相關元件開發,Skyline以akka為基礎,通過提供zebra腳本語言降低并行程式設計開發難度,能夠對異步并行任務進行監控和排程,實作了對叢集的分布式一緻性和分布式事務的支援。

案例:恒豐銀行——大資料實時流處理平台

●資料采集

在比較了目前主流的開源日志采集元件flume、scribe、logstash之後,我們選取采用Java語言開發,在高可用、資源隔離、二次開發方面具有優勢的flume作為我們的日志采集元件。

在日志收集流程方面,針對不同雲環境設計了不同的采集流程,對于部署在openstack雲環境和部分實體機上的應用,通過在應用伺服器直接部署flume agent實時采集每個節點配置的日志檔案、syslog、程序狀态資訊,實時發送後端的flume 服務端,服務端完成原始資料入庫和初步的過濾解析并發送到kafka消息中間件;對于部署在docker容器環境下應用,因為已經做了日志規範化,主控端上的flume直接利用主控端提供的接口讀取對應鏡像所屬路徑下的日志檔案,直接發送到kafka消息中間件。

案例:恒豐銀行——大資料實時流處理平台

此外,根據實際需要,對flume的用戶端進行開發,增加了source種類,覆寫目前所有應用系統的日志列印類型,修改了用戶端軟體的一些缺陷,設計并實作了不同政策,控制異常情況下對系統資源的占用,修改了agent與zookeeper之間更新配置的方式,利用心跳機制實作對flume agent狀态的監控,利用Jenkins、puppet等工具支援進行大規模用戶端推送、部署。

案例:恒豐銀行——大資料實時流處理平台

為了解決flume服務端收集資料的性能問題,我們對flume服務端進行微服務化拆分,将原來集中在服務端的接收、解析、入庫工作拆分出來,原有的flume服務端用其對loadbalance、failover以及與用戶端之間發送接收事務的支援進行資料接收,建構skyline微服務元件叢集實作解析和入庫的功能,并根據不同級别、不同類型的解析、入庫需求配置設定不同的元件。

除此之外,為了補充采集一些既有系統交易資料和爬取外部網站一些資料,平台提供探針元件和爬蟲元件,并基于zookeeper實作了上述用戶端程式元件的注冊、登出、實時任務配置設定,實作了高可用和水準擴充。

●異構系統內建

流處理平台通過建立自己的分布式實時消息總線與周邊系統內建,該消息總線以Akka的消息處理架構為核心樞紐。

案例:恒豐銀行——大資料實時流處理平台

如上,一方面,通過SockJs、WebSocket、HTTP協定将流資料包裝為各種服務,建構與移動端應用和其他外部系統前後端的消息通道,對應用開發程式員屏蔽各種消息編碼解碼算法細節;另一方面,通過代理元件的編寫和統一的元消息語義,可以将異構系統的kafka、MQ等消息中間件設施和主流的spark streaming流處理架構,當成流處理平台消息總線設施一部分,實作與上述設施和流計算架構的無縫內建;此外,使用者也可以針對特定的資料,定制自己的持久化方案,支援将資料實時寫入主流的資料庫。

●規則計算

為了應對各方面業務對流處理規則的變動,減少使用寫死實作流計算元件的工作量,我們引入了開源的drools規則引擎。Drools規則引擎速度快、效率高,且具有強大的規則沖突處理能力,并且完全開源,使用Java編寫,友善基于其進行開發。

在實際使用時,我們将drools內建為skyline平台的一個計算元件,與我們的kafka消息中間件和redis記憶體資料庫完成适配,将drools的監測資料源改為實時資料,并利用其處理由事件觸發的複雜業務邏輯。為了友善業務人員使用,編輯規則邏輯的方式由開發Java語言風格.drl檔案改為提供可視化話編輯頁面,使用者可以通過在頁面上編寫簡單邏輯組合條件和标準sql的方式配置複雜業務邏輯,并從各方面完善了規則引擎的功能,便于應用使用。

案例:恒豐銀行——大資料實時流處理平台

對于時間觸發類型的流計算規則,如日常的實時交易量統計,并發通路量,客戶當日消費金額,我們使用spark streaming sql功能代替原本需要針對絕大多數資料源和規則邏輯開發的流計算元件,并将查詢結果實時導入記憶體資料庫,提供給規則引擎進行複雜邏輯處理。目前,大部分實時規則的計算時間從資料觸發到計算結果輸出的時間都控制在100ms以内。

流計算過程中需要的其他元件,如資料分發元件、持久化元件、告警推送元件,我們使用skyline平台建構對應流處理叢集,使用zebra腳本語言編寫業務邏輯,滿足相關業務需求。

●服務和任務配置、管理

流處理叢集的服務和任務配置管理主要有三部分:

第一部分是日志采集、交易探針、爬蟲這些用戶端程式。恒豐銀行目前絕大多數應用采用同城雙中心雙活,應用在每個中心的部署單元也是叢集多活形式,應用從傳統實體機環境遷移到雲環境後,節點數增多,與之對應的是日志采集用戶端的增多。目前,恒豐銀行的生産環境已經上線運作了三千多個虛拟機節點,各類測試環境和準生産環境共有六千個節點,對每個虛拟機上的采集用戶端的服務狀态、資源占用情況進行監控,對采集任務的一些參數進行批量或者單獨的更新,如增加/減少路徑,增加檔案黑白名單。對于不能通過日志獲得流資料的既有系統和外部咨詢資料,我們分别開發了探針和爬蟲用戶端程式。這些用戶端程式的服務和任務管理都是利用zookeeper實作的。

案例:恒豐銀行——大資料實時流處理平台

第二部分是基于Skyline平台開發的流計算元件,這一部分我們利用skyline平台的一緻性管理器進行管理,每個元件自帶基于raft協定一緻性管理的接口,管理叢集和各元件叢集間通過消息廣播機制進行通信。

案例:恒豐銀行——大資料實時流處理平台

第三部分是流處理流程的配置,除了之前提到的Streaming Sql和規則引擎元件,我們使用skyline平台開發了一些基礎元件,如分類,資料補全,持久化,脫敏、資料轉換元件,使用者可以使用拖拽方式可視化配置一個流處理過程。

案例:恒豐銀行——大資料實時流處理平台

●資料存儲、分析和挖掘

在有些業務場景下,流處理平台需要将原始的非結構化和半結構化資料存儲起來并提供查詢檢索,如運維業務需要提供事件發生時的各類資源和日志快照資訊;針對解析後的結構化資料,也需要集中存儲,用于統計分析和報表。在這方面,我們使用繼續使用在數倉遷移時引入的企業級大資料平台,引入企業級的大資料平台免去了對大資料平台的運維壓力。

流處理元件可以通過jdbc驅動直接使用标準sql在Hyperbase表上進行資料庫表的相關操作,并且支援上建立全局索引、局部索引,以滿足多種複雜場景的實時寫入、檢索需求,Hyperbase支援全文索引,友善使用者快速檢索自己關心的資訊。流處理平台使用平台提供的Scala語言接口,開發資料挖掘和深度學習的相關模型,進行分布式挖掘和模型訓練。

結果/效果總結

目前,市面上的商業流處理産品大多基于單一應用目的開發,使用商業化産品在采集規模和功能覆寫性、資料開發靈活性上受制約,同時,大部分産品的收費模式都基于節點數或者原始資料流量,而大多數流資料是低價值密度資料,在這類收費模式下很難全面挖掘資料價值。

從技術名額方面來看,恒豐銀行大資料實時流處理平台具有以下優勢:

●資料采集:節點多,部署超過1500個伺服器節點;網絡結構複雜,橫跨多中心所有網段;采集功能覆寫性強,能夠滿足日志、程序資源資訊、接口服務資訊、庫表資訊、外部爬蟲資料實時采集,在日志采集方面覆寫所有日志列印方式,最大支援同時維護三百個日志檔案;任務排程和監控友善,所有任務統一配置,實時更新,支援用戶端自動批量發版,用戶端運作狀态監控完善。

●資料接收和預處理:基于規則引擎和Streaming SQL實作,提供可視化規則配置頁面和拖拽式流程配置,業務人員可以直接配置,不需要程式設計開發,支援複雜規則邏輯,支援彈性擴容,絕大多數基于流資料的邏輯處理時間小于100ms。

●流計算:基于規則引擎和Streaming SQL實作,提供可視化規則配置頁面和拖拽式流程配置,業務人員可以直接配置,不需要程式設計開發,支援複雜規則邏輯,支援彈性擴容,絕大多數基于流資料的邏輯處理時間小于100ms。

●資料存儲和檢索:接收和存儲采取異步處理,在八個存儲節點條件下支援接近100M/S寫入速度,通過自動分表,當月日志中繼資料結合全文檢索檢索皆在3秒以内。

以上技術名額完全滿足上層監控、反欺詐、貸後預警、客戶行為分析、營運風險監控類業務需求對實時資料處理的要求。

從實際應用效果看,恒豐銀行大資料實時流處理平台針對一些典型業務的支撐已經驗證了當初“将實時資料集中采集、集中計算處理、集中釋出訂閱”決策的優勢和正确性,同一份管道系統交易資料可以用于運維監控,可以用于使用者行為分析,可以用于交易反欺詐核驗,可以放在此使用者的貸後預警模型裡,将資料同源系統解耦,不同的業務隻需要響應增加邏輯規則配置即可,而不是像原有模式分别在源系統裡面增加業務,增加開發和投産任務。家庭金融是恒豐銀行新開展的一項以家庭為機關财富管理業務,業務人員設計了較為複雜成員之間各類交易動賬提醒規則,按照以往的模式需要核心增加提醒業務,各管道交易接口可能需要改造,相關系統要協同上線,如果新增管道系統後原有模型還得重新開發、上線;基于流處理平台的處理方案,在流處理元件或者規則引擎中配置規則,關聯各個管道資料源,新增資料源和規則更新可以立即配置,即時生效,大大提高了業務靈活性,降低了開發成本。

企業介紹:

恒豐銀行股份有限公司是12家全國性股份制商業銀行之一,注冊地煙台。

近年來,恒豐銀行穩健快速發展。截至2016年末,恒豐銀行資産規模已突破1.2萬億元,是2013年末的1.6倍;各項存款餘額7682億元,各項貸款餘額4252億元,均比2013年末翻了一番。2014年至2016年累計利潤總額312.17億元,這三年的累計利潤總額為以往26年的累計利潤總額;服務組織架構不斷完善,分支機構數306家,是2013年末的兩倍。

近年來,恒豐銀行屢獲榮譽。在英國《銀行家》雜志釋出的“2016全球銀行1000強”榜單中排名第143位;在香港中文大學釋出的《亞洲銀行競争力研究報告》中位列亞洲銀行業第5位;在中國銀行業協會釋出的“商業銀行穩健發展能力‘陀螺(GYROSCOPE)評價體系’”中,綜合能力排名位列全國性商業銀行第7位,全國性股份制商業銀行前三;榮獲“2016老百姓最喜歡的股份制商業銀行”第二名、“2016年網際網路金融創新銀行獎”、“2016年最佳網上銀行安全獎”、“2016年度創新中國特别獎”等多項榮譽。

作為一家肇始于孔孟之鄉山東的全國性股份制商業銀行,恒豐銀行秉承“恒必成 德緻豐”的核心價值觀,踐行“1112·5556”工程,即:一個願景(打造“精品銀行、全能銀行、百年銀行”)、一個文化(打造“開放、創新、競争、協同、守規、執行”的“狼兔文化”)、一個目标(五年目标是以客戶為中心,以創新為驅動,高效協同,彎道超車,五年内進入全國性股份制商業銀行第二方陣;十年目标是要打造一個國際金融控股集團)、兩個政策(“植根魯蘇,深耕成渝,拓展中部六省和海西,進軍京滬廣深”的區域政策和“四輪驅動、兩翼齊飛”的經營政策)、“五化”強行戰略(國際化、資訊化、精細化、科技化、人才化)、“五力”工作方針(忠誠力、執行力、目标力、風險經營力、恒久發展力)、五個引領(人才引領、科技引領、創新引領、效率引領、效益引領)、六大綜合能力(價值分析能力、風險鑒别能力、定價能力、創新能力、調研能力、學習能力);大力實施“12345”行動綱領,即:“1”是做金融綜合解決方案的提供商,“2”是金融雲平台和大資料平台,“3”是數字銀行、交易銀行、銀行的銀行,“4”是龍頭金融、平台金融、家庭金融、O2O金融等四大金融創新業務模式,“5”是投行、資管、平台、人才盤點和以“One Bank”為核心的績效評價體系等五大戰略落地工具,緻力于做“知識和科技的傳播者、管道和平台的建設者、金融綜合解決方案的提供者”,力求打造令人矚目、受人尊敬的商業銀行,為客戶和社會提供效率最高、體驗最佳的綜合金融服務。

繼續閱讀