《專家觀察 | 喬融:“Docker容器云在金融行業(yè)的運(yùn)用”》要點(diǎn):
本文介紹了專家觀察 | 喬融:“Docker容器云在金融行業(yè)的運(yùn)用”,希望對您有用。如果有疑問,可以聯(lián)系我們。
嘉賓介紹:喬融
公司職務(wù):成都精靈云科技有限公司CTO
大會演講速記
今天四個方面開始講.
第一個是金融業(yè)對容器云的需求和目前的痛點(diǎn),第二個是解決方案,第三個是容器PaaS平臺,第四個是案例分享.
金融業(yè)轉(zhuǎn)向云的話有一些需求,首先是政策的需求,金融云的監(jiān)管機(jī)構(gòu)要求在十三五規(guī)模末期所有的互聯(lián)網(wǎng)相關(guān)業(yè)務(wù)必須上云,傳統(tǒng)業(yè)務(wù)至少50%上云,這是一些政策要求,還有外部因素.
首先就是互聯(lián)網(wǎng),比如阿里、京東這些對傳統(tǒng)金融挑戰(zhàn)是很大的,他們的特點(diǎn)是快速擴(kuò)容、快速上線、快速迭代,目前有一個說法叫去IOE,就相當(dāng)于把以前的IDM這些慢慢的去掉,逐漸用開源的產(chǎn)品,這就是一波新的私有云建設(shè)的浪潮,目前不管是從單體或者面向服務(wù)的應(yīng)用都有一個趨勢,要轉(zhuǎn)向微服務(wù)的應(yīng)用.
傳統(tǒng)金融IT行業(yè)的痛點(diǎn),首先是現(xiàn)在目前很多金融行業(yè)他們的應(yīng)用都還是一個單體應(yīng)用,剛才我也聽有些嘉賓說了,一個應(yīng)用可能達(dá)3G或者4G的樣子,這樣一個大的應(yīng)用部署效率是非常慢的,與其說你要對這個應(yīng)用進(jìn)行升級,或者部署,以及要維穩(wěn)效率是非常差的.
還有傳統(tǒng)開發(fā)模式,一般單體的傳統(tǒng)開發(fā)模式都是有瀑布式模式,特點(diǎn)首先是做設(shè)計(jì),設(shè)計(jì)完以后開發(fā),研發(fā)人員開發(fā)按照以后交給測試人員測試,這樣有一個問題,研發(fā)的時候測試人員沒有什么事兒干,交給測試人員以后研發(fā)的人員沒有什么事兒,最后有問題大家一起,變成一團(tuán)亂的感覺.
傳統(tǒng)開發(fā)模式還有風(fēng)險(xiǎn),很多都是你開發(fā)一個功能,等你這個要功能都好了,在一起集成到一個主分支上,周期性有點(diǎn)長,而且會把其他已有的功能破壞掉,傳統(tǒng)的模式可能你測試是再一個環(huán)境,真正的生產(chǎn)環(huán)境部署又是性外一個環(huán)境,不可避免有些環(huán)境會有問題,還有你搭建也比較費(fèi)事.
還有一個問題,是業(yè)務(wù)的需求動態(tài)變化,比如說我們春節(jié)搶紅包,平時搶紅包沒有春節(jié)大,但是突然一個時候需求訪問量猛增,如果你以前部署到一個傳統(tǒng)的架構(gòu)上,它以前的物理設(shè)備以及算法可能不能滿足同時的需求,為了解決這些問題,就提出了這個解決方法,去解決剛才的痛點(diǎn).
三種方法去解決問題,一個是微服務(wù)化,還有一個是DevOps,還有一個容器云平臺,那我們倒過來看一下怎么解決問題的,單體部署效率,升級與回滾,我們劃分成微服務(wù),這個后面會詳細(xì)講.
傳統(tǒng)的開發(fā)模式有一些問題,完全可以通過DevOps解決,DevOps其實(shí)就是一個持續(xù)集成持續(xù)部署的過程,業(yè)務(wù)需求動態(tài)變化如果現(xiàn)在采用微服務(wù)以及容器變化工具,我們一般容器變化工具都有一個動態(tài)伸縮的功能,也很好解決這個問題.我們來詳細(xì)的看一下DevOps到底是什么東西,怎么解決這些問題.
DevOps最早的概念就是持續(xù)集成,持續(xù)發(fā)布,其實(shí)是早于微服務(wù)的概念,其實(shí)現(xiàn)在目前這個流程相當(dāng)于是結(jié)合了容器的流程,就說當(dāng)一個研發(fā)人員把代碼提交以后,然后再后臺就會自動的運(yùn)行靜態(tài)檢查,比如檢查它的代碼有沒有什么語法格式以及他的格式是不是正確,這是最基本的檢查,還有測試,之后會編譯進(jìn)行打包鏡像,生成鏡像以后會放到測試的鏡像倉庫里,會觸發(fā)一輪新的測試環(huán)境的部署.
部署好以后會自動化的測試,測試好環(huán)境以后如果沒有什么問題,通過率達(dá)到我們試點(diǎn)的要求,它會到生產(chǎn)環(huán)境的倉庫里去,在生產(chǎn)環(huán)境的倉庫里會在生產(chǎn)環(huán)境上進(jìn)行部署,剛才我們說了即使測試環(huán)境部署以后,生態(tài)環(huán)境還是有必要測試一下,因?yàn)檫@個生產(chǎn)環(huán)境不管是不是容器,其實(shí)還是有可能有微笑的差別,負(fù)責(zé)的說生態(tài)環(huán)境還是需要進(jìn)行一些測試的,如果生態(tài)環(huán)境沒有問題我們可以采用發(fā)布的形式來升級某一個微服務(wù),這樣可以在很快的頻率做一個小程度的升級,達(dá)到不停業(yè)務(wù)的作用.
剛才說了一個傳統(tǒng)的CICD的步驟,其實(shí)要實(shí)現(xiàn)CICD有一個重要的問題,就是智能化,很多公司想做CICD,就是持續(xù)升級和發(fā)布但是他們在這塊就被卡住了,因?yàn)槌掷m(xù)集成是要求頻度很快的集成,如果沒有強(qiáng)大的制動化系統(tǒng)做是不可以的,自動化有一個原則,你是盡量把所有的操作都進(jìn)行自動化,包括靜態(tài)檢查還有所有的測試都需要自動化,以及自動化的管理系統(tǒng),因?yàn)槲覀冊趯?shí)踐中發(fā)現(xiàn)你的測試已經(jīng)很完善了,但是工程師還是不愿意去跑,就是你的測試管理系統(tǒng)不夠自動化,有可能是說你這個測試管理系統(tǒng)沒有做到夠智能化,手動測試就不負(fù)責(zé)的提交了.交付的時候我們也可以自動化部署也可以自動化,最后是升級維穩(wěn)也可以實(shí)現(xiàn)自動化.
工具很多了,這是我自己比較熟悉的,里面有很多持續(xù)集成的工具,也是開源的,還有Pytohon自帶了很多的庫,開源的自動化也是基于它做的,還有Selenium,Ansible,還有容器編排工具.
強(qiáng)調(diào)自動化以后你就可以做持續(xù)集成,持續(xù)集成一般的步驟就是提交以前自己要測一測,提交以后可以做靜態(tài)檢查,沒有問題以后可以構(gòu)建,比如生成一個應(yīng)用程序這些都是可以的,構(gòu)建好以后可以部署到測試環(huán)境,然后對你的新功能進(jìn)行測試,測試以后還要回歸測試,最后保證你這個新提交的代碼不會把已有的功能破壞掉.
說到持續(xù)集成,跑這么多的測試,有一個主要的目的就是不管誰的代碼提交不要把你已有的主分支破壞掉,持續(xù)集成是你的主分支在任何情況都可以發(fā)布,如果有一邊把你的主分支搞壞了,你就不是解決新開發(fā)的功能,而是解決已有的問題.
一般生產(chǎn)環(huán)境還有一些條件,比如你的持續(xù)幾次的百分之百自動化通過率,還有系統(tǒng)集成測試,可能需要幾個部門的領(lǐng)導(dǎo)批準(zhǔn)才能自動化的部署,我們現(xiàn)在有些客戶就覺得他的功能不是目前很重要的功能,而是可以先嘗試自動化部署,自動化持續(xù)集成發(fā)布這幾塊做到以后,傳統(tǒng)的DevOps可以說是實(shí)現(xiàn),可以快速的進(jìn)行一個產(chǎn)品的迭代發(fā)布,但是這樣其實(shí)可以解決一些效率的問題.
但是沒有完全解決,因?yàn)槲覀冋f了還有單體自己的問題,那么單體的問題解決最好的辦法就是微服務(wù)化,大家可能聽的比較多了,我概括的起來說一下它的特點(diǎn),什么叫微服務(wù)化?就是一個服務(wù)只做一件事,每個微服務(wù)化是一個松耦和緊耦的東西,微服務(wù)可以部署在任何節(jié)點(diǎn)上,任何機(jī)器上,是沒有要求的.
當(dāng)然他們之間通過API進(jìn)行通信,一般一個微服務(wù)只要定義好API以后就可以被分到一個小的器物上進(jìn)行開發(fā),開發(fā)的過程每個team可以開發(fā)多個微服務(wù),但是不能說一個微服務(wù)可以流動的開發(fā),如果你的庫文件和你的微服務(wù)沒有什么關(guān)系,你盡量的要把庫文件去掉,要保持微服務(wù)的警惕性.
我們看,一個微服務(wù)有一些特點(diǎn),一個特點(diǎn)是它可以被部署到不同的機(jī)器上,這是一個跨平臺的,以及它包含盡量少的文件,這是第二個,微服務(wù)其實(shí)和目前的Docker容器結(jié)合是一個很好的結(jié)合點(diǎn),看看什么是Docker.
Docker是一種容器技術(shù),這個概念已經(jīng)早就有了,只是最近兩年把它開源出來以后才變得這么火,容器技術(shù)我們可以看這邊傳統(tǒng)的容器虛擬化技術(shù),第一代虛擬化技術(shù)其實(shí)就是我們以前用的Hypervisor,這種虛擬化技術(shù)有它的好處,這種虛擬化技術(shù)有點(diǎn)沖,它占的資源比較多,所以說我們看看 ?是容器虛擬化技術(shù),它沒有自己的操作系統(tǒng),你宏觀的看其實(shí)你的容器技術(shù)可以看作是一個輕量級的虛擬機(jī).
由于說它的這些特性,那么它占的資源非常少,它其實(shí)也是跨平臺的,你可以說你在一個機(jī)器上做的鏡像,也可以跑到一個跨平臺的,剛才我們說你在生產(chǎn)和測試環(huán)節(jié)中平臺不一樣的問題,還是可以和它的配置文件一起打包,容易實(shí)現(xiàn)高可用.
我現(xiàn)在介紹一下我們公司的產(chǎn)品叫EcOS,我們自己開發(fā)了一個調(diào)度工具,市面上比較知名的開源編排工具有Dockers這些東西,我們考慮有一些用戶定制化比較強(qiáng),我們整個是一個容器調(diào)度引擎的平臺,除了支持我們自己的開發(fā)引擎我們還支持K8S,是一個開源的容器引擎.
在我們?nèi)萜髟破脚_上我們實(shí)現(xiàn)哪些功能?我們有持續(xù)集成,持續(xù)發(fā)布,我們自己開發(fā)的一個完全自己的持續(xù)集成發(fā)布,還有存儲管理,存儲管理我們集成了EBS等這些存儲插件,可以直接以塊巡視的方式訪問網(wǎng)絡(luò)存儲,我們還有自己的監(jiān)控系統(tǒng),日志系統(tǒng)以及服務(wù)編排,還有一些網(wǎng)絡(luò)管理,網(wǎng)絡(luò)管理我們也是基于開源的網(wǎng)絡(luò),做了一點(diǎn)點(diǎn)二次開發(fā),我們做了以后我們性能測試中,如果你的裸機(jī)的網(wǎng)速155兆每秒,我們的測試結(jié)果135兆每秒.
我們這個環(huán)境可以跑在虛擬機(jī)上,或者說你跑裸機(jī)也可以,都是沒有關(guān)系的,這是我們內(nèi)部平臺的一些鏡面,第一頁是主機(jī)上的容器狀態(tài)等.今天我們的主題是說Docker容器在金融行業(yè)的應(yīng)用,目前有很多的銀行要求做深度POC,其實(shí)我們也有一些客戶是完全落地的客戶.
我給大家分享一下落地的客戶到底是什么需求,它的需求其實(shí)就是比較通用的,需要把它所有的環(huán)境全部適應(yīng)化,把單體服務(wù)放到容器里,有可能有的時候它的訪問需求是變化的.有的時候可能它的訪問量很少,但是有的時候達(dá)到百萬級的訪問量,對于它的需求我們地區(qū)一些解決方案,我們把環(huán)境分為生產(chǎn)環(huán)境和測試環(huán)境,而且生產(chǎn)環(huán)境可以部署在兩個地方的生產(chǎn)環(huán)境,部署兩個地方以后用一個智能的方式實(shí)現(xiàn)負(fù)載均衡.生產(chǎn)環(huán)境就是你下面存儲是Ceph存儲,你可以在同城或者同實(shí)驗(yàn)室對它的ceph進(jìn)行備份,遠(yuǎn)端還需要一個備份,保證雙重備份,即使有一個實(shí)驗(yàn)室完全掛掉對業(yè)務(wù)也沒有影響.
這是解決方案的邏輯架構(gòu)圖,最下面的是EcOS容器云平臺,這一層是MySQL數(shù)據(jù)庫集群,通過我們的存儲插件直接訪問ceph,這里面一套都是開源的,這一層是他們繼續(xù)跑的應(yīng)用,這一層是以微服務(wù)的方式跑起來,跑起來以后就用我們的容器編排工具來對它的容器的使用進(jìn)行實(shí)施的操控,每個容器,當(dāng)你容器達(dá)到一定的使用率的時候,比如我們設(shè)了限制,你CPU達(dá)到80%,內(nèi)存到80%.某一個資源達(dá)到這個消耗以后就會自動的擴(kuò)容一個微服務(wù)的容器數(shù)量,這樣就達(dá)到剛才說的可以滿足動態(tài)的需求變化的一個問題.
我們使用etcdCantid,上面采用了雙重負(fù)載均衡的方式,右面是客戶自己使用的其他開源工具,有一些自動化恢復(fù)的管理.
這是我們產(chǎn)品的API來支持他們的持續(xù)集成持續(xù)發(fā)布,這就是那幅圖的具體實(shí)現(xiàn),當(dāng)有代碼提交以后,我們的環(huán)境監(jiān)測到提交了這個就會自動的跑一些靜態(tài)檢查,去編譯部署,最后生產(chǎn)環(huán)境會升級,現(xiàn)在關(guān)心這個事情的很多,但是真正落地以后他們目前還沒有把太核心的跑上來,更多跑的是一些做試水的環(huán)節(jié).謝謝大家.
文章來自微信公眾號:云計(jì)算開源產(chǎn)業(yè)聯(lián)盟
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4142.html