摘要:?jiǎn)柲芊裾勔幌卵咐自剖褂玫倪^(guò)程其實(shí)最初的時(shí)候,迅雷團(tuán)隊(duì)對(duì)是懷有謹(jǐn)慎的態(tài)度的。三調(diào)度算法是迅雷云定制優(yōu)化的。迅雷在使用這方面一直沒(méi)有把數(shù)據(jù)層面交給迅雷云之外的系統(tǒng)。
非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/201256
曾金龍就職于迅雷網(wǎng)絡(luò),是國(guó)內(nèi)覆蓋面最廣的“迅雷P2P引擎”核心研發(fā)成員。他畢業(yè)于中山大學(xué),具有計(jì)算機(jī)科學(xué)碩士學(xué)位,他的研究方向是P2P網(wǎng)絡(luò)、音視頻傳輸和CEP系統(tǒng)。曾金龍對(duì)Docker技術(shù)有著深入的理解,是國(guó)內(nèi)較早將Docker引入到實(shí)際軟件開(kāi)發(fā)、測(cè)試和部署中的人。他在2015年出版了《Docker開(kāi)發(fā)實(shí)踐》一書。
問(wèn):作為迅雷P2P引擎的核心開(kāi)發(fā)成員,能否談一下當(dāng)時(shí)開(kāi)發(fā)的經(jīng)歷以及克服了哪些困難?
我一開(kāi)始工作的時(shí)候就進(jìn)入到了一家在P2P領(lǐng)域NO.1的公司,而且還是核心團(tuán)隊(duì),所以壓力非常大。我發(fā)現(xiàn),現(xiàn)實(shí)的P2P依然處在第一代P2P的水平,和研究上的P2P有很大差異。我們?cè)诟咝@锩嫜芯康氖歉鞣N結(jié)構(gòu)化的P2P,叫做第二代P2P。這就意味著即便我是以P2P為研究方向來(lái)到了迅雷,但一切都是歸零的。這是理想與現(xiàn)實(shí)之間的差異,對(duì)我個(gè)人而言是個(gè)困難。
開(kāi)發(fā)上的困難有兩個(gè)方面,一是新做的項(xiàng)目往往配置基礎(chǔ)環(huán)境會(huì)耗費(fèi)大量的時(shí)間,而且開(kāi)發(fā)不會(huì)碰到的問(wèn)題在測(cè)試和運(yùn)營(yíng)那里會(huì)“莫名其妙”地出現(xiàn),所以容器是解決程序員痛點(diǎn)的好技術(shù)。另外就是迅雷云是全國(guó)最大的P2P數(shù)據(jù)平臺(tái),所以里面有非常多分工不同的服務(wù)器,有打洞的Punch服務(wù)、有索引的Hub服務(wù)、跟蹤的Tracker服務(wù)以及CDN管理服務(wù)等,而且處理的數(shù)據(jù)量非常大。讓公司各個(gè)事業(yè)群的項(xiàng)目組合理管理和使用這些集群確實(shí)不容易,而大多數(shù)問(wèn)題都來(lái)自不正確的使用,所以我們必須為各個(gè)事業(yè)群提供更為易用的服務(wù)和更加統(tǒng)一的接口。所以我們后面在迅雷云引入了Docker。
問(wèn):能否談一下迅雷云使用Docker的過(guò)程?
其實(shí)最初的時(shí)候,迅雷團(tuán)隊(duì)對(duì)Docker是懷有謹(jǐn)慎的態(tài)度的。不能因?yàn)閯e人說(shuō)好我們就用,需要先試,真的好我們才敢用,嘗到甜頭我們才愿意用。一開(kāi)始我們用Docker來(lái)加快團(tuán)隊(duì)之間的協(xié)作效率,因?yàn)橥ㄟ^(guò)它部署的環(huán)境可以一次構(gòu)建到處使用,所以開(kāi)發(fā)、測(cè)試和部署都能夠在一個(gè)非常一致的環(huán)境中進(jìn)行,這是很初級(jí)的用法。隨著對(duì)這個(gè)模式的認(rèn)可,迅雷內(nèi)部越來(lái)越多的團(tuán)隊(duì)接納了我們的建議,于是迅雷、迅雷看看、迅雷游戲都采用了Docker,引入到了開(kāi)發(fā)、測(cè)試和部署中。
后面我們的服務(wù)器項(xiàng)目基本就遷移到了Docker之上。當(dāng)然,一開(kāi)始大家對(duì)Docker的安全性都會(huì)有所顧慮,但其實(shí)大多數(shù)顧慮都是因?yàn)閷?duì)Docker不夠理解而產(chǎn)生的。有了內(nèi)部產(chǎn)品線的支持,我們后面把迅雷云部分服務(wù)器資源用Docker重新部署。迅雷云本身就是一個(gè)非常高效的集群系統(tǒng),現(xiàn)在引入Docker是為了讓資源使用更加便捷。因?yàn)檠邪l(fā)人員的流動(dòng)性比較高,不是所有的開(kāi)發(fā)者對(duì)迅雷云內(nèi)部資源的使用都熟悉,所以我們現(xiàn)在就是借助Docker去為各個(gè)業(yè)務(wù)的開(kāi)發(fā)提供一套更普適的接口。
問(wèn):迅雷云在容器方面做了哪些優(yōu)化和調(diào)整?
一是整合現(xiàn)有的集群,將部分集群更改為Docker集群,特別是新增部分。二、由于迅雷云是一個(gè)重?cái)?shù)據(jù)、輕業(yè)務(wù)的云,所以在數(shù)據(jù)管理方面,像Docker的Data volumes和Data volume containers這種簡(jiǎn)單的方式還是不能夠滿足,所以我們主要還是以迅雷云自己的管理系統(tǒng)為主。為了能夠讓Docker之上的業(yè)務(wù)更好地使用我們的集群,我們添加了適配層。三、調(diào)度算法是迅雷云定制優(yōu)化的。最后,我們有自建的私有倉(cāng)庫(kù),提供常用鏡像,讓我們的開(kāi)發(fā)更加快速。
問(wèn):Adrian Cockcroft是云技術(shù)社區(qū)中的思想家之一,他將微服務(wù)與Docker的結(jié)合視為一種顛覆,認(rèn)為這種開(kāi)發(fā)方式會(huì)極大提高開(kāi)發(fā)團(tuán)隊(duì)敏捷性和適應(yīng)性。請(qǐng)問(wèn)迅雷云團(tuán)隊(duì)是否有這方面的實(shí)踐?對(duì)于這方面的技術(shù)融合你有什么樣的建議?
微服務(wù)是把一個(gè)原本很復(fù)雜的服務(wù)解耦拆解為一些相對(duì)功能單一的服務(wù),這在迅雷云內(nèi)部是一直都非常提倡的。我們認(rèn)為一個(gè)服務(wù)專心做好一件事是最好的,這對(duì)解耦、易用、升級(jí)都非常有好處。迅雷內(nèi)部把Hub服務(wù)和Tracker服務(wù)都進(jìn)行了分解和抽象,提供給各個(gè)項(xiàng)目組。Hub本身是很復(fù)雜的,但我們的服務(wù)接口卻是個(gè)位數(shù),包括對(duì)CDN資源服務(wù)的使用方面我們也是重構(gòu)了一套更加簡(jiǎn)單易用的服務(wù)。
有一點(diǎn)很遺憾的是我覺(jué)得迅雷云里面做得最好的微服務(wù)并沒(méi)有使用到Docker,也就是我們的“水晶計(jì)劃”。這主要是因?yàn)槲覀兊墓?jié)點(diǎn)是各種客戶端設(shè)備,但我們的設(shè)計(jì)宗旨依然是遵循微服務(wù)的。水晶計(jì)劃的節(jié)點(diǎn)是各種各樣的設(shè)備,差異性非常大。但沒(méi)有關(guān)系,在用戶那里,它就是可靠的CDN。我個(gè)人覺(jué)得微服務(wù)加上Docker是非常合適的,因?yàn)槲⒎?wù)很重要的一點(diǎn)就是解耦,而采用容器技術(shù)來(lái)解耦隔離是非常恰當(dāng)?shù)?。再進(jìn)一步考慮到服務(wù)的擴(kuò)容和遷移的話,微服務(wù)設(shè)計(jì)加上Docker作為載體也是非常合適的。我的建議就是,一個(gè)服務(wù)一個(gè)容器,或者說(shuō)一種服務(wù),一類容器,這樣一一對(duì)應(yīng)地去部署。
問(wèn):Docker的image和安全問(wèn)題一直都受到關(guān)注,特別在去年的出現(xiàn)的ShellShock和Heartbleed問(wèn)題之后,請(qǐng)問(wèn)在Docker的安全方面你是否有哪些經(jīng)驗(yàn)可以分享?
其實(shí),越多人使用的技術(shù)越安全,但一旦不安全造成的損失也非常大。迅雷在使用Docker這方面一直沒(méi)有把數(shù)據(jù)層面交給迅雷云之外的系統(tǒng)。即便是Docker使用迅雷云的數(shù)據(jù),也是通過(guò)我們的適配層,而通過(guò)適配層接進(jìn)來(lái)的操作是要經(jīng)過(guò)授權(quán)的,對(duì)使用能力也要進(jìn)行限制,同時(shí)操作都是可跟蹤和統(tǒng)計(jì)的。另外就是對(duì)用戶的授權(quán)管理,嚴(yán)格規(guī)范的管理在安全方面很有必要。還有就是做好隔離工作,不僅僅是通過(guò)內(nèi)核的Namespace/cgroup,同時(shí)也可以在不同層面隔離,比如VM和容器的隔離等。
問(wèn):在ClusterHQ最近的一項(xiàng)調(diào)查中顯示,只有38%的IT專業(yè)人士在生產(chǎn)環(huán)境中使用容器,人們對(duì)于容器技術(shù)使用的顧慮包括安全、數(shù)據(jù)管理、IT人員技能、永久存儲(chǔ)與可靠性等問(wèn)題。你認(rèn)為以Docker為代表的容器技術(shù)面臨的最大阻礙是什么?是否在不遠(yuǎn)的未來(lái)有望跨越技術(shù)應(yīng)用的鴻溝?
我覺(jué)得當(dāng)前容器技術(shù)面臨的最大阻力是安全問(wèn)題和管理工具。安全性一直是企業(yè)使用容器所擔(dān)心的問(wèn)題,而另一個(gè)問(wèn)題就是管理工具,特別是對(duì)集群的管理?,F(xiàn)有的集群管理工具,比如Kubernetes,并不是很好上手,對(duì)于很多運(yùn)維人員而言,特別是對(duì)一些小企業(yè)來(lái)說(shuō),運(yùn)維人員可能并沒(méi)有深入地去學(xué)習(xí)這些工具怎么使用。所以如果這些工具的部署配置和使用能夠非常簡(jiǎn)單,那么容器在實(shí)際生產(chǎn)中可能會(huì)越來(lái)越廣泛。
這種情況有些類似于ISO/OSI的參考模型和TCP/IP協(xié)議模型,前者從設(shè)計(jì)上而言是很優(yōu)秀的,但后者卻成了事實(shí)標(biāo)準(zhǔn),為什么?因?yàn)楹?jiǎn)單。所以一門好技術(shù),不但要技術(shù)本身好,而且要做到讓別人更好地接納也很重要。Docker相對(duì)于以前的諸如lxc的系統(tǒng)是一個(gè)進(jìn)步,我希望Docker能繼續(xù)做好整個(gè)工具鏈,讓Docker集群更加平易近人。
問(wèn):Docker, CoreOS, 以及其他業(yè)界成員一起創(chuàng)立了“開(kāi)放容器計(jì)劃(OCP)”,你認(rèn)為OCP的成立對(duì)于軟件開(kāi)發(fā)行業(yè)會(huì)造成什么影響?
Docker和CoreOS這對(duì)競(jìng)爭(zhēng)對(duì)手握手言和,一起成立OCP,對(duì)于整個(gè)容器生態(tài)圈而言是一個(gè)非常重大的利好。因?yàn)镺CP可以讓容器技術(shù)更加統(tǒng)一化,如果所有的容器都遵循一套標(biāo)準(zhǔn),那么使用容器的開(kāi)發(fā)者就省了很多麻煩。而且有了統(tǒng)一的標(biāo)準(zhǔn),就意味著在不同平臺(tái)上的容器也可以相互遷移,Docker的鏡像可以遷移到CoreOS上,反之亦然。破除各自為陣,容器技術(shù)會(huì)變得更加易用,同時(shí)也會(huì)加快其在產(chǎn)業(yè)上的應(yīng)用。
問(wèn):Docker和CoreOS各自都具有哪些優(yōu)勢(shì)?它們的結(jié)合會(huì)帶來(lái)哪些好處?
Docker更想去做一個(gè)以容器為中心的服務(wù)平臺(tái),所以它給用戶提供了很多便利的操作,還包括一些集群管理工具鏈。CoreOS則更加側(cè)重容器本身的標(biāo)準(zhǔn)化,CoreOS的開(kāi)放標(biāo)準(zhǔn)更能夠促進(jìn)容器的開(kāi)放,這也是OCP的宗旨,此外,CoreOS在安全性和可組合性上也做得更好。它們的結(jié)合可以取二者優(yōu)勢(shì),彌補(bǔ)各自不足。
問(wèn):Docker最新發(fā)布的“Docker試驗(yàn)性發(fā)布”是一次有趣的嘗試,請(qǐng)問(wèn)你是否使用過(guò)上面的實(shí)驗(yàn)性功能?你覺(jué)得這個(gè)系統(tǒng)的發(fā)布對(duì)于Docker來(lái)說(shuō)有哪些好處?
如果你指的是out-of-process volume plugins,我有了解但沒(méi)有使用過(guò)。在對(duì)數(shù)據(jù)方面采用插件的形式,讓用戶自己去適配不同的存儲(chǔ)系統(tǒng)是非常有必要的,所以我覺(jué)得這個(gè)功能非常有用。我在上面也提到了,我們迅雷云就寫了一套適配層去操作我們自己的數(shù)據(jù)系統(tǒng)。所以后面我們團(tuán)隊(duì)會(huì)去深入地理解這個(gè)功能,然后跟進(jìn)。
問(wèn):學(xué)習(xí)Docker的進(jìn)階過(guò)程有哪幾個(gè)階段?你希望程序員們以怎樣的方式使用《Docker開(kāi)發(fā)實(shí)踐》這本書?
我覺(jué)得學(xué)習(xí)Docker有三個(gè)階段。第一個(gè)階段是對(duì)Docker本身功能的使用,也就是入門層,你要理解什么是鏡像、容器、Registry、Dockerfile等,了解這些對(duì)象的基本操作,能夠構(gòu)建出自己的應(yīng)用環(huán)境來(lái)。第二個(gè)階段是能夠駕馭Docker集群。這個(gè)階段你需要學(xué)習(xí)和使用Docker相關(guān)的工具,比如Kubernetes、Shipyard、Machine+Swarm+Compose等,根據(jù)不同的需求,需要使用不同的工具。第三個(gè)階段就是發(fā)現(xiàn)和解決這些工具里面的問(wèn)題,為自己的場(chǎng)景深度定制。
我覺(jué)得程序員可以從兩個(gè)方面來(lái)使用好《Docker開(kāi)發(fā)實(shí)踐》這本書,一方面可以把它當(dāng)做開(kāi)發(fā)手冊(cè),因?yàn)檫@本書的內(nèi)容幾乎涵蓋了Docker所有的知識(shí)點(diǎn),我們對(duì)其內(nèi)容進(jìn)行了很系統(tǒng)地梳理。所以當(dāng)你對(duì)Docker有什么疑問(wèn)的時(shí)候,把《Docker開(kāi)發(fā)實(shí)踐》放在電腦前面,隨手翻一翻基本就可以解決。另一方面,可以作為案例引導(dǎo)。這本書后面兩篇甄選了當(dāng)前經(jīng)典的應(yīng)用場(chǎng)景,一步步帶領(lǐng)讀者把服務(wù)搭建起來(lái),并且把可能遇到的問(wèn)題都標(biāo)出來(lái),教讀者如何解決。所以,讀者也可以參照本書的案例去更好更快地在實(shí)際生產(chǎn)中使用Docker,提升效率、少走彎路。
問(wèn):《Docker開(kāi)發(fā)實(shí)踐》的高級(jí)篇對(duì)Docker生態(tài)圈做了非常翔實(shí)的介紹和實(shí)踐,為什么要對(duì)Docker生態(tài)圈著墨如此之多?對(duì)于這部分內(nèi)容的遴選你有什么樣的標(biāo)準(zhǔn)和原則?
Docker本身的操作其實(shí)很簡(jiǎn)單,如果復(fù)雜的話,Docker就不會(huì)像今天這樣成功。然而我所知道的市面上之前所有關(guān)于Docker的書籍,都是把基礎(chǔ)操作寫了一大篇,然后堆砌一些案例,就成了一本書,我認(rèn)為這是在浪費(fèi)讀者的錢和時(shí)間?;A(chǔ)的東西寫成幾章是合理的,寫成一本書就是打腫臉充胖子了。我們?cè)凇禗ocker開(kāi)發(fā)實(shí)踐》中把這些內(nèi)容進(jìn)行了壓縮,不想去濫竽充數(shù),也不會(huì)去浪費(fèi)筆墨。
上面我提到的Docker面臨的阻礙很大一點(diǎn)就是它的工具鏈不完善和不易用。你會(huì)發(fā)現(xiàn)在網(wǎng)絡(luò)上程序員求助最多的也是Docker生態(tài)圈的實(shí)踐,因?yàn)镈ocker做得還不夠好,稍微不小心就犯錯(cuò)。所以,既然基礎(chǔ)篇不該講那么多,而且生態(tài)圈又是使用Docker的開(kāi)發(fā)者心中的痛點(diǎn),那么我就著重筆墨去寫這部分,讓大家少走彎路。這部分內(nèi)容看上去有些散,每一章都是講一個(gè)工具或者是一組工具,但是書中選的Kubernetes、Shipyard等都是我們最需要的和最熱點(diǎn)的工具,而且它們的構(gòu)建又相對(duì)復(fù)雜。所以,我遴選的原則就是,重要又是難點(diǎn)的,我就選。所以這就成了《Docker開(kāi)發(fā)實(shí)踐》中的高級(jí)篇。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26440.html
摘要:月日,以引領(lǐng)智能變革為主題的百度云智峰會(huì)在上海開(kāi)幕。中國(guó)云市場(chǎng)的需求與傳統(tǒng)產(chǎn)業(yè)轉(zhuǎn)型是密切相關(guān)的。今年的百度云智峰會(huì)發(fā)布了不少產(chǎn)品和合作案例,其在傳統(tǒng)產(chǎn)業(yè)的大幅落地非常引人注目。對(duì)率先化的技術(shù)公司百度來(lái)說(shuō),這條路確實(shí)是它的菜。亞馬遜在23歲這年取得了斐然的成績(jī)——美國(guó)時(shí)間9月4日早盤,亞馬遜股價(jià)開(kāi)盤后上漲突破每股2050.27美元,突破萬(wàn)億市值。在它的成功路上,偶然建立的AWS是不能不提的一筆...
摘要:核心對(duì)名字空間的支持完全隔離了工作環(huán)境中應(yīng)用程序的視野,包括進(jìn)程樹(shù)網(wǎng)絡(luò)用戶與掛載文件系統(tǒng),而核心的提供資源隔離,包括存儲(chǔ)器與網(wǎng)絡(luò)。因此更為輕量快速和易于管理。 docker 如日中天,這不是單純的炒概念,docker 確確實(shí)實(shí)解決了開(kāi)發(fā)與運(yùn)維的痛點(diǎn),因此在企業(yè)開(kāi)發(fā)中得到了非常廣泛的使用,本文對(duì)于 docker 的這些基本知識(shí)點(diǎn)再做一些簡(jiǎn)單回顧。 什么是 docker 根據(jù) wikip...
摘要:騰訊云在年底決定開(kāi)發(fā)容器產(chǎn)品隨后組建容器技術(shù)團(tuán)隊(duì)并進(jìn)行技術(shù)選型通過(guò)對(duì)不同編排工具的分析對(duì)比最終選擇作為容器編排引擎并且迅速在年初推出容器解決方案為用戶提供托管的一站式服務(wù)。但是騰訊云最終選擇了現(xiàn)在看來(lái)這個(gè)選擇無(wú)比正確。Kubernetes 很火,一大批互聯(lián)網(wǎng)公司早已領(lǐng)先一步,搭建起專有的 PaaS平臺(tái),傳統(tǒng)企業(yè)們看到的 Kubernetes的趨勢(shì),亦不甘落后,在試水的道上一路狂奔。雖然,Ku...
摘要:介紹教程里使用的是容器化的一款輕量級(jí)的多用戶下載工具,可以下載磁力等。再通過(guò)實(shí)現(xiàn)文件的下載預(yù)覽和共享,讓我們的離線下載更加多用途化。隨著迅雷遠(yuǎn)程離線下載的關(guān)閉,某度網(wǎng)盤不開(kāi)會(huì)員又沒(méi)速度,下載一些冷門資源的時(shí)候,看著幾kb甚至幾B的情況是不是很絕望? 別擔(dān)心,小編教大家如何自建網(wǎng)盤,擺脫限速和無(wú)法遠(yuǎn)程離線下載的限制。 ? 介紹 教程里使用的是容器化的 Aria2 - 一款輕...
摘要:目前,騰訊內(nèi)部業(yè)務(wù)運(yùn)行環(huán)境基本全部實(shí)現(xiàn)了容器化,在技術(shù)大會(huì)中,騰訊云高級(jí)產(chǎn)品經(jīng)理劉永峰曾發(fā)表演講時(shí)代,公有云面臨的挑戰(zhàn)和機(jī)遇。本文中劉永峰展望了容器技術(shù)在游戲云的應(yīng)用。 容器技術(shù)是一種輕量級(jí)虛擬化技術(shù),能夠以很細(xì)的粒度,虛擬化獨(dú)立的系統(tǒng)運(yùn)行環(huán)境。這就意味著,一臺(tái)物理的服務(wù)器,或者是一臺(tái)云上面的虛擬服務(wù)器,能夠同時(shí)運(yùn)行成百上千個(gè)獨(dú)立的容器?;谟螒蛐袠I(yè)短平快的鮮明特點(diǎn), 每一個(gè)游戲世界里面,每...
閱讀 1852·2023-04-25 21:50
閱讀 2477·2019-08-30 15:53
閱讀 813·2019-08-30 13:19
閱讀 2804·2019-08-28 17:58
閱讀 2531·2019-08-23 16:21
閱讀 2781·2019-08-23 14:08
閱讀 1442·2019-08-23 11:32
閱讀 1502·2019-08-22 16:09