互聯網技術架構給我們的啟示
據阿里官方公布的數據,2013年“雙11”這一天,天貓、淘寶成交額共計350.19億元,相當于10月全國日均消費額的一半,較去年的191億元增長83%。支付寶交總交易筆數達到1.88億筆,其中無線支付達到4518萬筆,分別是去年同一天的1.77倍和5倍。
參照央行發布的2013年第二季度支付體系運行數據,二季度全國銀行卡消費業務筆數約為30.6億筆,平均每天約3400萬筆,那么支付寶“雙11”1天的支付筆數就相當于二季度全國的POS機交易量的5.5倍,也相當于國際支付機構Paypal一個月的支付量,比肩Visa全球日刷卡量。
作為一名商業銀行IT從業人員,筆者一直關注阿里、騰訊、Google等互聯網企業的技術路線、技術架構和技術管理理念,探究其如何能夠支持如此的業務創新和技術保障能力。
一、幾個基本計算機理論與模型
1.分布式系統。
包括分布式操作系統、分布式程序設計語言及其編譯系統、分布式文件系統和分布式數據庫系統等。
Google在構建搜索系統時,第一次將分布式系統和互聯網結合起來,用分布式系統來解決互聯網問題。Google的分布式系統設計有幾個重要的特征:視失敗為常態;重視橫向伸縮性;預測性能,追求低延遲,廉價的硬件和軟件,推崇重用,靈活設計,加入足夠的監測點和調試功能來幫助日后的調試,優先虛擬計算。 Google的這些設計思想,成為互聯網應用開發事實上的標準和規范。
2.CAP:一致性理論。
CAP理論(C: Consistency 一致性,A: Availability 可用性,P: Tolerance of network Partition 分區容忍性)指出,一個分布式系統不可能滿足一致性、可用性和分區容錯性這3個需求,最多只能同時滿足其中的兩個需求。因此應用系統的關注點不同,采用的策略也是不一樣的,只有準確把握了應用需求,才有可能利用好CAP理論。對互聯網應用,可用性與分區容忍性優先級要高于數據一致性。
3.ACID 和 BASE 模型。
ACID 是指在數據庫管理系統中事務具有的4個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。在數據庫系統中,一個事務是由一系列數據庫操作組成的一個完整的邏輯過程。事務的核心思想就是為了保證數據的一致性。ACID 模型被引申為強調數據一致性的開發理念,被銀行、證券等機構廣泛采用。
BASE 則是另外一個理念和思路,Basically Available 為基本可用,Soft-state 為軟狀態/柔性事務,Eventual Consistency 為最終一致性。BASE模型完全不同于ACID模型。犧牲高一致性,獲得可用性。對一個“基本可用”系統來說,需要把系統中的所有功能點進行優先級的劃分,對于系統內部的狀態,采用一種柔性的策略,假如系統內分布了3個功能模塊,允許它們在某一時刻3個模塊的狀態可以不一致。然后通過業務和技術的手段,例如采用異步機制或者批處理方式,來保證系統通過柔性狀態一致來獲得可用性。當前互聯網應用在業務允許范圍里普遍參考 BASE 模型來進行系統設計。
4.SOA 面向服務架構。
是一種松散耦合的架構理念和模型,針對粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用。
二、互聯網應用的技術基礎
1.基于x86服務器集群和開源軟件搭建技術設施,分布式架構+開源軟件是其基本特征。
X86服務器是互聯網應用基本計算資源,例如Google、阿里等公司,每個數據中心動輒部署上萬臺、幾十萬臺和百萬臺X86服務器,進行動態資源調度。開源操作系統Linux、開源web服務器Apache、開源數據庫MySQL、開源腳本語言Php/Perl……這些著名的開源軟件支撐了互聯網公司發展。開源軟件的發展同樣離不開互聯網發展的支持。初期的開源軟件代碼缺陷和設計缺陷很多,正是通過應用發現軟件缺陷、不斷修補的方式,既支持了互聯網公司的發展,又促進了開源軟件的發展。從對開源軟件的使用和修改開始,互聯網公司就逐步積累和掌握了自主研發能力。
2.積極進取的創新精神。
以阿里巴巴為例,短短幾年先后自主開發了如下技術產品:分布式文件系統和分布式存儲、搜索引擎技術、分布式計算、分布式機房、消息中間件、分布式鎖管理、虛擬化和計算資源調度;Apache和Nginx等開源軟件定制、Java虛擬機調優(JVM)、開源數據庫調優;文件系統優化、網卡協議棧優化、操作系統資源隔離、操作系統資源管理、操作系統內存優化、虛擬化軟件底層研發;低功耗處理機、協處理器輔助應用、數據中心省電技術、新一代存儲技術、新一代網卡應用。
3.基于場景的需求分析和應用開發。
總結阿里巴巴開發的原則如下:SOA服務化,所有系統采取服務化模式,系統之間進行必要的分拆和隔離,通過服務調用和消息通知的方式進行協同;BASE和ACID相結合,能夠采取BASE模式的業務一定是異步方式,而核心的賬務信息一定是采取實時方式,保證ACID;無單點設計、可監控、可測試、可回滾、可禁用、短事務與柔性事務、異步設計、無狀態、使用成熟技術、業務分等級、業務可降級、多數據中心部署。
4.平臺化建設理念,提高開發效率和系統質量。
蘋果公司的App store提供標準的開發平臺,全球開發者可以充分發揮自己的聰明才智,開發個性化的應用,并通過蘋果應用商店發布。蘋果公司向開發者提供了應用程序開發框架,以方便開發者的開發工作。開發框架包含三類組件:應用程序接口庫、開發工具和測試模擬器。
5.自動化部署和運維體系。
阿里巴巴開發了一套資產信息采集程序和采集流程,將服務器、網絡設備、存貯等資產信息,采集到數據庫中。應用系統不再關心具體的資源信息,無論資產還是資源都是處于動態的變化中。通過資產信息和資源的變更流程,資產信息,硬件信息和應用信息的任何變更,必須通過系統進行變更記錄,詳細記錄每個設備的生命周期里的各種變化。變更流程和工作流系統對接,通過工作流系統進行分級審批之后,才能進行相應的變更。以自動化采集為核心的資產管理體系,主動監控確保資源池一致性,保證資產信息的準確性。對資源進行回收和重新分配的時候,先要確保資源的狀態。對于資源的數據,必須采取主動監控的做法,確保數據的可靠性,其具體做法是每天對設備的信息進行重新抓取,并與數據庫里的狀態進行匹配,發現不一致的數據,報警并鎖定資源,不允許對資源進行任何操作。通過這種自動化的方式,杜絕人為錯誤,確保資產數據和資源池信息的數據一致性,是資源池可信的重要保證。
6.成本控制意識和自主掌控能力。
互聯網企業的IT成本控制意識較強,面對激烈的市場競爭和客戶體驗的需求,需要敏捷的技術反應,完全依賴通用技術和國際大名牌的IT設備和軟件供應商無法滿足這類需求。開源和廉價的X86服務器是最佳的選擇。短短幾年時間,互聯網公司的技術研發能力和研發速度,明顯強于老牌的IT公司。這是一種以市場需求為導向,以客戶體驗為基礎,以技術架構創新為手段,引領業務和技術創新的新模式。
三、商業銀行應用系統的技術基礎
1.通用信息技術和商業化軟件是基礎,集中式系統部署。
多數商業銀行信息化建設遵循通用信息技術的路線,即采用商業化的大、中、小型計算機硬件系統及其配套的編程語言、操作系統、中間件工具軟件和數據庫,進行集中式部署。例如采用IBM大型機和P系列服務器、Unix操作系統、Oracle或DB2數據庫等,采用Cisco公司網絡設備和EMC等公司的存貯設備。銀行的各種應用基本運行在這樣的技術平臺上。最近幾年,隨著云計算理念的普及和X86服務器性能和可用性的不斷提升,已經出現規模性部署X86服務器,構建云環境的趨勢。
2.面臨完全依賴供應商的被動局面。
商業銀行在信息技術支持和保障能力、技術進步和創新能力、技術采購議價能力、設備升級周期和擴容、成本控制等方面,很大程度上依賴信息技術供應商。從歷史看,商業銀行應用系統大多采用三層架構:服務層、應用層和數據層,最近幾年逐步加入ESB層。每層采用雙機或集群技術支撐業務應用。早期以縱向(scale-up)升級擴容為主,現在逐步采用橫向(scale-out)擴容方式或虛擬化方式。這種歷史發展過程中形成的架構和技術路線,很難適應發展迅速的互聯網時代應用需求。
3.交易系統突出資金安全和核算的準確性,數據一致性要求高,客戶體驗差。
從模擬手工流程一路走來,商業銀行信息化建設始終圍繞內部業務管理、經營和風險控制的目標。應用系統存在存在如下問題:一是煙囪式結構,渠道不統一,整合性差;二是應用范圍小,非企業級;三是標準不一致和數據質量差;四是著眼銀行內部流程,對外客戶體驗不佳;五是網上銀行和手機銀行等具有互聯網特征的應用,仍然構建在傳統的技術架構上,其應用系統也主要是把柜面應用搬到網上銀行和手機銀行之上而已。
四、5點啟示
1.用互聯網的思維,認真思考和規劃商業銀行的信息化建設工作。
互聯網的創新正快速改變人們行為習慣、思維習慣,改變整個社會。銀行的生存和發展離不開外部的世界,銀行不去適應這種社會的變革,就會落后甚至淘汰。時下互聯網金融和金融互聯網的討論和創新如火如荼,顯著地影響人們的金融習慣,勢必引起銀行業重大變革。面對這樣洶涌的互聯網浪潮和變化越來越快的世界,我們必須要有危機感。
2.引入分布式架構和開源軟件,構建集中式和分布式共存的架構體系。
從應對市場的整體效果看,互聯網分布式架構明顯優于商業銀行傳統集中式架構,核心差別在于兩類不同的應用架構理念,以及兩類不同的技術團隊管理、支持方式。因此,從應用入手,著手調整商業銀行傳統的技術架構和供應商管理方式,制定商業銀行的技術架構設計規范和部署策略,實現架構的科學管理。
3.突出核心能力,理性看待“去IOE”。
僅從技術角度看,“去IOE”的實質是分布式架構和集中式架構、開源軟件和商用軟件的選擇問題,各自的利弊見仁見智。商業銀行IT從業人員的核心競爭力主要體現在對銀行業務理解,以及對信息技術的熟練應用和應用架構設計能力,用信息化支持、推動和引領業務創新。
4.從設備供應商向服務供應商轉型。
著名的IT公司要加快從設備供應商向服務供應商轉型,成為用戶可信賴的戰略合作伙伴。從采購成本、服務水平、硬件和軟件能力、安全和掌控能力等方面看,用戶對諸如IBM、Oracle、EMC等國際著名公司的滿意度不斷下降,隨之出現“去IOE”的呼聲和行動。商業銀行新一輪信息化建設為供應商轉型提供了一個很好的機會,供應商可以和一些商業銀行建立戰略合作聯盟,成立專門的行業隊伍,搜集需求,優化升級通用技術和軟件,及時解決用戶實際遇到的問題,順應并引領互聯網時代的技術需求。
5.積極主動與互聯網公司開展合作。
當前互聯網公司已經取得了豐碩的成果,不但在業務創新上領先于傳統行業,而且在新技術研究和應用中也積累了豐富的經驗,在云計算、分布式系統和大數據處理等技術上領先傳統IT廠商,并且還在不斷加大投入,以保持技術優勢。商業銀行要開始與先進的互聯網公司開展深入合作,學習和吸收可能為銀行所用的新業務模式和新技術,進一步拓寬業務思路,拓展技術視野和選擇范圍。
【文章來源:架構師之旅微信公眾號】