WOT董明鑫:容器技術(shù)在雪球的實(shí)踐
原創(chuàng)【51CTO.com原創(chuàng)稿件】2018年5月18-19日,由51CTO主辦的全球軟件與運(yùn)維技術(shù)峰會(huì)在北京召開(kāi)。此次峰會(huì)圍繞人工智能、大數(shù)據(jù)、物聯(lián)網(wǎng)、區(qū)塊鏈等12大核心熱點(diǎn),匯聚海內(nèi)外60位一線專家,是一場(chǎng)高端的技術(shù)盛宴,也是***IT技術(shù)人才學(xué)習(xí)和人脈拓展不容錯(cuò)過(guò)的平臺(tái)。
在“開(kāi)源與容器技術(shù)”分會(huì)場(chǎng),雪球 SRE 工程師董明鑫帶來(lái)了《容器技術(shù)在雪球的實(shí)踐》的主題分享,會(huì)后,51CTO記者根據(jù)董明鑫在WOT2018全球軟件與運(yùn)維技術(shù)峰會(huì)的演講內(nèi)容進(jìn)行了整理。
【講師簡(jiǎn)介】
董明鑫,雪球 SRE 工程師,主要負(fù)責(zé)保障雪球穩(wěn)定性、提升資源利用率及提高開(kāi)發(fā)效率等。關(guān)注容器生態(tài)圈的技術(shù)發(fā)展。
業(yè)務(wù)的發(fā)展需要容器技術(shù)
雪球最初是一個(gè)投資者社區(qū)。用戶在雪球可以關(guān)注全市場(chǎng)所有的投資品類,還可以基于行情進(jìn)行交流,同時(shí)也可以快速獲取相關(guān)資訊。
有很多股民在雪球交流,甚至基于在雪球獲得的信息直接作出投資決策,這時(shí),他們就有一個(gè)強(qiáng)烈的需求:購(gòu)買股票!于是雪球與國(guó)內(nèi)券商合作推出了滬深A(yù)股交易的業(yè)務(wù)。由于互聯(lián)網(wǎng)企業(yè)大部分都是在港美股上市,所以雪球還推出了港美股券商雪盈證券,滿足用戶交易港美股的需求。此外,雪球還做了持牌的基金代銷機(jī)構(gòu)蛋卷基金。
基于社區(qū),雪球業(yè)務(wù)衍生出一些其他商業(yè)化的項(xiàng)目:滬深A(yù)股交易、港美股交易、基金銷售、私募孵化器等。隨著業(yè)務(wù)的發(fā)展,不同業(yè)務(wù)之間受到影響的概率比較高,雪球希望業(yè)務(wù)之間不被相互打擾,為了滿足這種隔離的需求,雪球發(fā)現(xiàn)容器技術(shù)其實(shí)比較合適,因?yàn)槿萜鞅旧礴R像比較小,比較靈活,啟動(dòng)速度快,相比虛擬機(jī),更適合雪球的業(yè)務(wù)發(fā)展,經(jīng)過(guò)比較,雪球最終選擇了Docker。
在運(yùn)行過(guò)程中,雪球發(fā)現(xiàn),使用Docker需要解決的問(wèn)題主要有三個(gè):網(wǎng)絡(luò)連通性、多節(jié)點(diǎn)的服務(wù)部署更新、以及優(yōu)秀的監(jiān)控方案。
在實(shí)踐中演進(jìn)
雪球在初期的網(wǎng)絡(luò)模式是一個(gè)二層互通的方案,這個(gè)方案的優(yōu)點(diǎn)是與其它基礎(chǔ)設(shè)施直接可達(dá),并且性能很高。缺點(diǎn)是管理復(fù)雜,需要管理 IP 地址和 MAC 地址;規(guī)模受限,容易引發(fā)網(wǎng)絡(luò)風(fēng)暴;網(wǎng)絡(luò)隔離實(shí)現(xiàn)復(fù)雜。
在服務(wù)部署方面,雪球嘗試了虛擬機(jī)。虛擬機(jī)的優(yōu)勢(shì)一是與原有基礎(chǔ)設(shè)施相比遷移成本低,二是相比物理機(jī)啟動(dòng)快,沒(méi)有虛擬化的損耗,三是滿足了隔離的需求。缺點(diǎn)是遷移、擴(kuò)容繁瑣;管理相對(duì)復(fù)雜,主要靠文檔記錄;基本沒(méi)有流程控制和權(quán)限控制。
面對(duì)這些缺點(diǎn),雪球希望做一個(gè)平臺(tái),實(shí)現(xiàn)容器的物理機(jī)管理、容器的管理,以及IP和MAC地址和流程控制的管理。于是,雪球變更了發(fā)布流程,如下圖所示。
發(fā)布流程
經(jīng)過(guò)一段時(shí)間的使用,雪球發(fā)現(xiàn)自研的容器管理平臺(tái)雖然實(shí)現(xiàn)了流程控制與權(quán)限控制,并且將代碼與環(huán)境固化,使多版本鏡像管理方便了很多,部署效率和擴(kuò)縮容效率都有所提升,但是,流程控制邏輯與機(jī)器管理、網(wǎng)絡(luò)管理之間耦合嚴(yán)重,而且,無(wú)法實(shí)現(xiàn)自動(dòng)選擇物理機(jī)和自動(dòng)分配容器 IP,沒(méi)有自愈功能。于是,雪球引入了Swarm,做了一個(gè)三層部署的模式。如下圖所示。
網(wǎng)絡(luò)模式 Downward Default
后期,雪球又對(duì)此進(jìn)行了優(yōu)化,更加自助化的流程解放了運(yùn)維,加入了更好的調(diào)度方案,支持多機(jī)房多云環(huán)境。
***,雪球引入kubernetes,每一個(gè)項(xiàng)目里可能有多個(gè)互聯(lián)網(wǎng)數(shù)據(jù)中心(IDC),每一個(gè)IDC有不同的集群(Cluster),為每一個(gè)項(xiàng)目分配一個(gè)命名空間(Namespace),有自己的部署(Deployment)。由于Kubernetes本身的解決方案比較全,而雪球也已經(jīng)有了很多解決方案,例如日志、負(fù)載均衡、監(jiān)控等。如何才能更低成本的引入Kubernetes,而且讓開(kāi)發(fā)盡量不要感知到,***的辦法是做合約的兼容性,最終,雪球只使用了Kubernetes的Deployment和HPA。
董明鑫***表示,雪球目前擁有一千多個(gè)容器,項(xiàng)目數(shù)量大概有一百多個(gè),規(guī)模并不是很大。但是得益于容器技術(shù),雪球部署的效率非常高,雪球的開(kāi)發(fā)人員只有幾十個(gè),但是每個(gè)月的發(fā)布次數(shù)高達(dá)兩千多次。
以上內(nèi)容是51CTO記者根據(jù)雪球 SRE 工程師董明鑫在WOT2018全球軟件與運(yùn)維技術(shù)峰會(huì)的采訪內(nèi)容整理,更多關(guān)于WOT的內(nèi)容請(qǐng)關(guān)注51cto.com。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】