付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、25講微服務(wù)為什么要容器化?專欄前的章,我主要給你講解了微服務(wù)架構(gòu)的基礎(chǔ)組成以及在具體實踐過程中的會遇到和解決案,這些是掌握微服務(wù)架構(gòu)最基礎(chǔ)的知識。從今天開始,進步深微服務(wù)架構(gòu)進階的內(nèi)容,也就是微服務(wù)與容器、DevOps之間的關(guān)系。它們?nèi)齻€雖然分屬于不同領(lǐng)域,但卻有著千絲萬縷的關(guān)系,可以說沒有容器的普及,就沒有微服務(wù)架構(gòu)的蓬勃發(fā)展,也就沒有DevOps今天的盛其道。之后我還會具體分析它們?nèi)咧g是如何緊密聯(lián)系的,今天先來看微服務(wù)為什么要容器化。微服務(wù)帶來單體應(yīng)拆分成多個微服務(wù)后,能夠?qū)崿F(xiàn)快速開發(fā)迭代,但隨之帶來是測試和運維部署的成本的。相信拆分微服務(wù)的利弊你早已熟能詳,我講個具體的例。業(yè)務(wù)早期
2、就是個的單體Web應(yīng),在測試和運維的時候,只需要把Web應(yīng)打成個的WAR包,部署到Tomcat中去就了。后來拆分成多個微服務(wù)之后,有的業(yè)務(wù)需求需要同時修改多個微服務(wù)的代碼,這時候就有多個微服務(wù)都需要打包、測試和上線發(fā)布,個業(yè)務(wù)需求就需要同時測試多個微服務(wù)接的功能,上線發(fā)布多個系統(tǒng),給測試和運維的作量增加了很多。這個時候就需要有辦法能夠減輕測試和運維的負擔(dān) 我在上講給出的解決案是DevOps。DevOps可以簡單理解為開發(fā)和運維的結(jié)合,服務(wù)的開發(fā)者不再只負責(zé)服務(wù)的代碼開發(fā),還要負責(zé)服務(wù)的測試、上線發(fā)布甚故障處理等全命周期過程,這樣的話就把測試和運維從微服務(wù)拆分后所帶來的復(fù)雜作中解放出來 D vO
3、p 要求開發(fā) 測試和發(fā)布的流程必須動化,這就需要保證開發(fā)員將本地部署測試通過的代碼和運環(huán)境,能夠到測試環(huán)境中去,測試通過后再到線上環(huán)境進發(fā)布。雖然這個過程看上去好像代碼樣簡單,但在現(xiàn)實時,本地環(huán)境、測試環(huán)境以及線上環(huán)境往往是的,配置環(huán)境的差異也很,這也導(dǎo)致了開發(fā)、測試和發(fā)布流程的割裂。且還有個問題是,拆分后的微服務(wù)相原來的單體應(yīng)更加靈活,經(jīng)常要根據(jù)實際的量情況做擴縮容,且通常會采在公有云上創(chuàng)建的ECS來擴縮容。這給微服務(wù)的運維帶來另外個,因為公有云上創(chuàng)建的ECS通常只包含了基本的操作系統(tǒng)環(huán)境,微服務(wù)運依賴的配置等需要運維再單獨進初始化作,因為不同的微服務(wù)的配置依賴不同,如Java服務(wù)依賴了JD
4、K,就需要在ECS上安裝JDK,且可能不同的微服務(wù)依賴的JDK版本也不相同,般情況下新的業(yè)務(wù)可能依賴的版本較新如JDK 8,有些舊的業(yè)務(wù)可能依賴的版本還是JDK 6,為此服務(wù)部署的初始化作分繁瑣。容器技術(shù)的誕恰恰解決了上這兩個問題,為什么容器技術(shù)可以解決本地、測試、線上環(huán)境的,解決部署服務(wù)初始化繁瑣呢?下我就以業(yè)界公認(rèn)的容器標(biāo)準(zhǔn)Docker為例,來看看Docker是如何解決這兩個問題的。DockerDocker是容器技術(shù)的種,事實上已經(jīng)成為業(yè)界公認(rèn)的容器標(biāo)準(zhǔn),要理解Docker的作原理先得知道容器。容器翻譯英的Conta ner詞,Conta ner可以翻譯成集裝箱。都知道,集裝箱的作就是,在
5、港把貨物集裝箱封裝起來,然后經(jīng)過貨輪從海上到另個港,再在港卸載后通過貨運送到的地。這樣的話,貨物在世界的任何地流轉(zhuǎn)時,都是在集裝箱封裝好的,不需要根據(jù)是在貨輪上還是貨上對貨物進重新裝配。同樣,在的世界,容器也起到了相同的作,只不過它封裝的是的運環(huán)境。容器的本質(zhì)就是L nux操作系統(tǒng)的進程,但與操作系統(tǒng)中運的般進程不同的是,容器通過Namespace和Cgroups這兩種機制,可以擁有的root件系統(tǒng)、的絡(luò)配置、的進程空間,甚是的戶ID空間,這樣的話容器的進程就像是運在宿主機上的另外個單獨的操作系統(tǒng)內(nèi),從實現(xiàn)與宿主機操作系統(tǒng)運的其他進程。Docker也是基于L nux內(nèi)核的Cgroups、Nam
6、espace機制來實現(xiàn)進程的封裝和的,那么Docker為何能把容器技術(shù)推向個新的度呢?這就要從Docker在容器技術(shù)上的項創(chuàng)新Docker鏡像說起。雖然容器解決了應(yīng)程序運時,但是要想實現(xiàn)應(yīng)能夠從臺機器遷移到另外臺機器上還能正常運,就必須保證另外臺機器上的操作系統(tǒng)是致的,且應(yīng)程序依賴的各種環(huán)境也必須是致的。Docker鏡像恰恰就解決了這個痛點,具體來講,就是Docker鏡像不光可以打包應(yīng)程序本身,且還可以打包應(yīng)程序的所有依賴,甚可以包含整個操作系統(tǒng)。這樣的話,你在你本機上運通過的應(yīng)程序,就可以使Docker鏡像把應(yīng)程序件、所有依賴的以及操作系統(tǒng)本身都打包成個鏡像,可以在任何個安裝了Docker的
7、地運。Docker鏡像解決了DevOps中微服務(wù)運的環(huán)境難以在本地環(huán)境、測試環(huán)境以及線上環(huán)境保持致的難題。如此來,開發(fā)就可以把在本地環(huán)境中運測試通過的代碼,以及依賴的操作系統(tǒng)本身打包成個鏡像,然后動部署在測試環(huán)境中進測試,測試通過后再動發(fā)布到線上環(huán)境上去,整個開發(fā)、測試和發(fā)布的流程就打通了。同時,論是使物理機還是公有云的機器部署服務(wù),都可以利Docker鏡像把微服務(wù)運環(huán)境封裝起來,從機器物理機和公有云機器運環(huán)境的差異,實現(xiàn)同等對待,降低了運維的復(fù)雜度。微服務(wù)容器化實踐Docker能幫助解決服務(wù)運環(huán)境可遷移問題的關(guān)鍵,就在于Docker鏡像的使上,實際在使Docker鏡像的時候往往并不是把業(yè)務(wù)代
8、碼、依賴的環(huán)境以及操作系統(tǒng)本身直接都打包成個鏡像,是利Docker鏡像的分層機制,在每層通過編寫Docker e件來逐層打包鏡像。這是因為雖然不同的微服務(wù)依賴的環(huán)境不同,但是還是存在的相同之處,因此在打包Docker鏡像的時候,可以分層設(shè)計、逐層復(fù),這樣的話可以減少每層鏡像件的。下我就以的業(yè)務(wù)Docker鏡像為例,來實際講解下產(chǎn)環(huán)境中如何使Docker鏡像。正如下這所描述的那樣,微博的Docker鏡像致分為四層?;A(chǔ)環(huán)境層。這層定義操作系統(tǒng)運的版本、時區(qū)、語、yum源、TERM等。運時環(huán)境層。這層定義了業(yè)務(wù)代碼的運時環(huán)境,如Java代碼的運時環(huán)境JDK的版本。Web容器層。這層定義了業(yè)務(wù)代碼運
9、的容器的配置,如Tomcat容器的JVM參數(shù)。業(yè)務(wù)代碼層。這層定義了實際的業(yè)務(wù)代碼的版本,如是V4業(yè)務(wù)還是som業(yè)務(wù)。這樣的話,每層的鏡像都是在上層鏡像的基礎(chǔ)上添加新的內(nèi)容組成的,以如下:V4鏡像為例,V4業(yè)務(wù)的Docker e件內(nèi)容FROM代表了上層鏡像件是“tomcatfeed:jdk8.0.40 tomcat7.0.81 g1 dns”,從名字可以看出上層鏡像包含了Java運時環(huán)境JDK和Web容器Tomcat,以及Tomcat的版本和JVM參數(shù)等;ADD就是要在這層鏡像添加的件, 這主要包含了業(yè)務(wù)的代碼和配置等;RUN代表這層鏡像啟動時需要執(zhí)令;WORKDIR代表了這層鏡像啟動后的作錄
10、。這樣的話就可以通過Docker e件在上層鏡像的基礎(chǔ)上完成這層鏡像的制作??偨Y(jié)今天我給你講解了微服務(wù)拆分后相于傳統(tǒng)的單體應(yīng)所帶來的兩個問題,個是測試和發(fā)布作量的,另個是在彈性擴縮容時不同微服務(wù)所要求的運環(huán)境差異帶來的機器初始化復(fù)雜度的,Docker利Docker鏡像對運環(huán)境的完美封裝正好解決了這兩個問題。正是因為Docker可以做到處通過、到處運,所以對業(yè)務(wù)的價值極,解決了以前應(yīng)程序在開發(fā)環(huán)境、測試環(huán)境以及產(chǎn)環(huán)境之間的移植難,極提了運維動化的平,也為DevOps理念的流和業(yè)務(wù)上云提供了基礎(chǔ)??扇萜骰脑鞂ξ⒎?wù)是分必要的,但Docker也不是“銀彈”,同樣會產(chǎn)新的復(fù)雜度問題,如引Docker
11、后舊的針對物理機的運維模式就法適應(yīng)了,需要種新的針對容器的運維模式。所以接下來,我將分三期,給你詳細講解微服務(wù)容器化后FROM regist/weibo rd content/tomcat feed:jdk8.0.40 tomcat7.0.81 g1 dns ADD confs /data1/confs/ADD node pool /data1/node pool/ ADD authconfs /data1/authconfs/ ADD perties /data1/ ADD watperties /data1/ADD 200.sh /data1/weibo/bin/200.sh ADD 50
12、3.sh /data1/weibo/bin/503.shADD catalina.sh /data1/weibo/bin/catalina.sh ADD server.xml /data1/weibo/conf/server.xmlADD perties /data1/weibo/conf/perties ADD ROOT /data1/weibo/webapps/ROOT/RUNod +x /data1/weibo/bin/200.sh /data1/weibo/bin/503.sh /data1/weibo/bin/catalina.sh WORKDIR /data1/weibo/bin該
13、如何運維。思考題Docker的概念乍看與虛擬機有些類似,你認(rèn)為它們不同之處嗎?分別適合什么應(yīng)場景?歡迎你在留區(qū)寫的思考,與我起。精選留xw11235師,分布式事務(wù)還沒講2018-10-18 20 47作者回復(fù)這部分內(nèi)容考慮了下專欄篇幅和內(nèi)容的重要性,挑選了最核的講,更深度的內(nèi)容后可以考慮再寫些,看家反饋2018-10-19 21 37郁前遇到最頭疼2018-10-19 14 15作者回復(fù)就是docker宿主機的防墻如何優(yōu)雅處理!你的是docker什么絡(luò)模式?2018-10-19 21 33虛機是個操作系統(tǒng),docker是操作系統(tǒng)內(nèi)的進程,虛機占有資源多,啟動慢,但最多只能有個,但是docker
14、可以有成千上萬。2018-10-18 08 27效果更好,臺物理機啟動的虛機數(shù)量波波安產(chǎn)和測試的配置件不樣。鏡像怎么解決應(yīng)配置2018-11-16 13 11。步亮師你好,請教個問題。在服務(wù)器移植問題呢?2018-11-15 13 37驅(qū)動下,docker是否能較容易地解決不同(x86,arm,m ps)下的web應(yīng)的波波安服務(wù)器虛擬化解決的核問題是資源調(diào)配,容器解決的核問題是應(yīng)開發(fā) 測試和部署2018-11-15 13 36L amdocker本質(zhì)上還是依賴于L nux的內(nèi)核,所以遷移的時候還是要求系統(tǒng)內(nèi)核致2018-10-25 08 49Sa ydocker的動化運維和之前說的微服務(wù)治理是要相互結(jié)合的吧?2018-10-21 09 23郁br dge模式,在開了防墻時,同臺宿主
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GA 1408-2017 警帽 禮儀大檐帽》專題研究報告
- 《GA 758-2008 9mm警用轉(zhuǎn)輪手槍》專題研究報告
- 中學(xué)社團指導(dǎo)教師職責(zé)制度
- 養(yǎng)老院入住老人遺物保管與處理制度
- 企業(yè)內(nèi)部培訓(xùn)與發(fā)展規(guī)劃制度
- 交通管制與疏導(dǎo)方案制度
- 2026湖北省定向重慶大學(xué)選調(diào)生招錄備考題庫附答案
- 2026湖南郴州莽山旅游開發(fā)有限責(zé)任公司面向社會招聘40人備考題庫附答案
- 2026福建泉州石獅市鳳里街道中心幼兒園春季招聘備考題庫附答案
- 2026西藏自治區(qū)定向選調(diào)生招錄(70人)參考題庫附答案
- 旅居養(yǎng)老可行性方案
- 燈謎大全及答案1000個
- 老年健康與醫(yī)養(yǎng)結(jié)合服務(wù)管理
- 中國焦慮障礙防治指南
- 1到六年級古詩全部打印
- 心包積液及心包填塞
- GB/T 40222-2021智能水電廠技術(shù)導(dǎo)則
- 兩片罐生產(chǎn)工藝流程XXXX1226
- 第十章-孤獨癥及其遺傳學(xué)研究課件
- 人教版四年級上冊語文期末試卷(完美版)
- 工藝管道儀表流程圖PID基礎(chǔ)知識入門級培訓(xùn)課件
評論
0/150
提交評論