2019年6月20日,由Rancher Labs(如下簡稱Rancher)主辦的第三屆企業容器創新大會(Enterprise Container Innovation Conference, 如下簡稱ECIC)在北京喜來登大酒店盛大舉行。本屆ECIC規模宏大,全天共設置了17場主題演講,吸引了近千名容器技術愛好者參加,超過10000名觀衆在線上直播平臺觀看了本次盛會。數據庫
來自Rancher、阿里雲、百度雲、平安科技、中國聯通、飛貸金融科技、中國人壽、SmartX、華泰保險、廈門航空、JFrog、新東方、Cisco等十多家企業的技術負責人出席了本屆ECIC,現場帶來關於企業容器項目實踐經驗的精彩分享,爲參會的容器技術愛好者帶來企業容器化的經驗分享。安全
飛貸金融科技副總裁陳定瑋網絡
大會現場,飛貸金融科技做爲金融行業數據庫容器化的典型案例,爲現場的容器愛好者帶來了題爲《金融領域數據庫生產容器化及Istio應用》的實踐經驗分享。架構
對於飛貸金融科技而言,生產容器化及數據庫應用的難點在於,如何針對金融領域生產容器化及數據庫容器應用進行實踐創新,如何結合研發及業務場景落地,提高資源利用效率、提高產品研發、運維管理效率。併發
飛貸金融科技副總裁陳定瑋表示:「金融行業數據具備相較於其餘行業更爲嚴格的安全高標準,在安全合規的狀況下用飛貸自研中間件,解決金融領域DB應用場景難題,帶來10x的DB交付效率,極致的彈性擴容能力。」 運維
演講實錄分佈式
飛貸金融科技成立於2010年,是移動信貸總體技術服務商。咱們以科技創新做爲企業發展的動力,在科技創新的道路上不斷前行。微服務
2011年到2015年,飛貸作的是傳統的小微金融業務。2015年,咱們決定進行線上互聯網化轉型。到2017年,咱們整個公司進行了戰略升級,爲金融行業客戶提供互聯網服務。迄今爲止,飛貸爲人保、北京銀行、華潤信託、通聯支付等多家金融行業企業提供了全鏈路的科技服務。高併發
2018年,咱們登上了美國《時代週刊》,被《時代週刊》稱爲「全球金融科技最佳實踐」。同年,咱們還拿到了世界銀行和G20共同推出的首屆全球小微金融獎最高榮譽——「年度產品創新」鉑金獎。性能
接下來,我會和你們詳細介紹一下,飛貸做爲一家互聯網金融科技企業,是怎樣和容器化相結合,又是怎麼在業務上應用容器化的。
飛貸應用容器化與前面分享的企業一致,一樣也是基於整個企業的容器化應用。值得一提的是,飛貸作的是金融領域,因此咱們對安全、對容錯、對高恢復的部分相較於其餘行業的企業而言更加在乎。咱們關注的不只僅是應用,更多的會關注到如何迅速地進行災難的恢復。
咱們利用容器進行了總體的架構部署,從你們比較熟悉的DevOps,到我稍後會重點介紹的DB Mesh的部分。咱們劃分了幾大平臺,包括容器化平臺、產品研發平臺和數據平臺。下面的是應用安全、數據安全、網絡安全、容器安全、運維安全等部分。容器對咱們而言幫助很是大,如今咱們的RD都是基於容器Kubernetes作應用開發。在這一部分,飛貸在金融領域已經達到了領先的水平。
下圖是飛貸的容器發展路線圖。咱們從2015年開始研究容器,2016年開始投產在RD環境上。在當時咱們還沒能徹底選定Kubernetes仍是另一個容器技術,因此暫時停留在RD階段。2017年,Kubernetes技術愈來愈成熟、愈來愈穩定,咱們就把總體的方向往Kubernetes方向進行遷移。到了今年,咱們的生產環境已經能夠大量運用容器技術進行多個方向上的應用了。
剛纔Rancher的CEO梁勝博士提到,如今Rancher已經能夠作到多K8S集羣管理和部署,多數據中心。這是和咱們的業務發展比較貼合的。咱們提供基於飛貸的金融雲服務,同時咱們有多租戶集羣管理的業務需求。目前,咱們已經能夠針對K8S多集羣進行應用服務、中心服務、數據庫服務等多個方向的多集羣管理,一樣,咱們也能夠作到多租戶網絡隔離。
從客戶的角度來講,在客戶和咱們合做以前或者是過程中,他們先前可能並不瞭解小貸的業務運營是這樣的,因此銀行會把他們的總體服務放在咱們公司,飛貸就變成了一家金融雲廠商。而飛貸的特殊之處就在於,咱們專一於和咱們業務發展相關的內容,咱們爲客戶提供的不是一個總體的平臺,而是應用。
剛纔提到的全部內容都是和容器息息相關的,容器的特性包括安全審計、動態存儲、高可用灰度發佈等等,咱們把容器的特性應用到了飛貸生產環境上,而且發揮到了極致。
下圖是飛貸容器化的平臺組件。不管是咱們的RD仍是外面的人員,飛貸會爲他們提供應用商店,他們要作什麼事情,就在咱們的管理平臺點擊一下,咱們會自動生產一個容器的應用幫他們進行處理。咱們鏡像倉庫的部分是在一塊兒的。
除了這幾個部分,咱們還有Prometheus和Jenkins,這些體系和咱們研發的相關度比較高,如今飛貸能實現自動集成、自動打包、自動發佈和自動部署,這是咱們研究了兩年多的平臺組件成果。
飛貸爲何要讓DB容器化?由於微服務部分的應用層已經發展得比較好了,可是對於DB而言還有不少的問題。假如DB宕機了,我想要迅速恢復這個DB,讓業務生產可以正常運行,咱們須要花費多長的時間呢?若是DB很是大,這個啓動時間是很是久的。這就是爲何銀行或者是大型金融機構沒有小型機,不敢用開源的MySQL或者是MangoDB等資料庫,由於他們要保證安全和持續運做,這是一個比較大的挑戰。
這就是我今天要重點講述的幾個問題,爲何要MySQL容器化?MySQL容器化安全穩定嗎?容器化MySQL的具體實現是樣的?
咱們剛纔介紹了飛貸要作多集羣管理的容器,裏面存在一些限制以及要求。第一,會涉及很是複雜的網絡結構;第二,故障要頻繁地切換,咱們認爲這在金融行業是很是重要的一個部分,由於一旦發生故障,金融行業的業務基本上就會停擺了;第三,要控制容量大小;第四則是要依賴網絡存儲。
咱們之因此要作這個部分,有三個方面的緣由。第一,咱們須要實現標準化快速部署,由於應用快速部署完以後,若是DB部署很慢的話,對於咱們而言,總體效率仍是同樣地低,這是站在總體效率的部分而言的;第二就是微服務場景,咱們如今的系統已是所有爲服務化進行終端的調整,在這種場景下,若是數據場景不能微服務化,那我上層所作的內容毫無心義,咱們不但願數據庫成爲業務彈性伸縮以及管理的短板;第三就是MySQL服務化、自動化、網絡化和智能化的需求。
咱們進行MySQL容器化的效果很明顯。第一,咱們能夠實現高效彈性伸縮、擴容、備份、導入、導出、恢復、快照、遷移;第二,咱們能夠實現總體數據庫的性能監控和審計;第三,分佈式存儲、資源、數據多副本能夠實現實時同步。咱們在大數據應用的部分可能和通常的公司也有所區別,咱們生產環境的一些數據和大數據實時數據是拆分開的,但咱們作到了實時同步;第四就是計算資源分佈式,多節點,技術設施高可用;第五是擁有故障自愈的功能。個人MySQL若是宕機,咱們能夠迅速恢復。
下圖是咱們MySQL DB的架構,底下的應用服務對應的是中間件,咱們全部的中間件對應每個單獨的庫。咱們爲了實現DB容器,把庫作到了很是大的空間壓縮,而且把庫進行了容量限制,這樣纔有可能在庫故障的時候,能夠迅速的啓動它。這部分考驗了咱們總體的業務運做部分,數據分表分庫的能力、讀寫分離的能力。而這部分都是經過咱們自行研發的中間件完成的。若是沒有咱們自行研發的中間件,DB Mesh這部份內容是咱們也沒法完成的。
以上基本就是飛貸DB的網絡發散圖,架構特徵包括幾個部分,一是高併發、低延遲,每秒10000事務處理,延遲小於100毫秒;二是支持IDC多活;三是支持數據路由;四是能夠自動化或者人格化決策切換;五是數據多副本。
截至目前,飛貸的DB量級是PB級別的,咱們大概是十幾個PB這種應用數量,可對外同步實施,故障容器數目大於二分之一能夠自動回覆,這就是爲何咱們要作DB Mesh的緣由。
另外一部分是關於咱們容器化整合Istio的,右邊是咱們生產應用的圖形界面,能夠看到註冊進去以後,咱們就能夠進行自動追蹤,瞭解庫的健康程度。可是裏面還有一些小問題,當DB斷掉再恢復以後,這個服務就不見了,須要再次手工注入。關於這個問題,咱們研究了Istio的不少文檔,但尚未克服這一問題。因此在DB這一部分,咱們只作到在生產的時候,一開始能夠注入,可是當它掛掉以後,咱們仍是須要手工處理,暫時沒有辦法自動恢復。
而在應用和管理服務的部分,咱們已經作到了徹底自動化,整合Istio實現微服務Service Mesh,實現了微服務訪問、安全加固、控制、觀察。服務追蹤、限速、熔斷、調度、負載等部分。
以上是飛貸總體服務的應用部署,從應用服務到中間件,這是咱們總體部署的發佈圖,因此如今咱們的RD人員基本上只負責開發,開發以後,全部一切都經過咱們的平臺去進行集成、發佈和管理,上了生產環境以後,也會由咱們的運維來處理,不會由RD來處理。在這一點上,咱們作的還比較符合銀行的要求。
最後,我想介紹一下飛貸容器化帶來的成果:
第一是提高飛貸總體生產力。飛貸80%的基礎運維都是自動化的;其次,交付能力也有所提高,一小時咱們能夠交付上百套的服務應用,目前來講有上千臺容器在咱們整個生產環境上面運做,若是咱們沒有進行微服務容器化的話,微服務架構部署時間會很是長;最後一個是咱們具有生產環境上數百個MySQL的實例,這也是咱們的一個容器化成果;
第二就是研發和擴展,能夠按照容器的pod、物理主機節點、機櫃及數據中心級別作擴展,這塊咱們也結合了不少CMDB的內容,但在這裏就不詳表了;
第三是IT成本的投入,這也是咱們企業比較關注的一個內容,咱們以前的私有云是用CloudStack做爲平臺去搭建的,如今咱們所有換成了容器。這大約節約了咱們40%的資源,節省了60%的人力投入。之前咱們要部署一個應用還須要提供虛擬主機在RD上面部署,如今容器一鍵部署就能夠完成了。另外項目研發投入時間也節省了40%,由於部署應用之類的內容如今已經不須要RD人員來處理了,都是由咱們平臺自動化處理的;
第四是安全、敏捷、高效,這部分業餘數據的全量備份咱們也是分鐘級的,咱們的庫縮得足夠小,因此咱們能夠在幾分鐘內迅速備份;第二在容災故障的時候,咱們的業務運用一鍵恢復也是分鐘級的,數據快照是秒級的,資源利用率提高10倍,數據庫交付能力提高近百倍,咱們整個應用有上百個MySQL節點,若是一個個部署很是慢,咱們如今已經把鏡像作起來了,因此部署是很是迅速的;
最後一點是運維變得很是簡單,自動化、極致的、彈性容器的調度,灰度發佈、預發佈、藍綠部署、持續交付。