偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

微服務(wù)、容器、DevOps的三角戀看得清嗎?

開發(fā) 架構(gòu)
容器的普及,帶來了微服務(wù)架構(gòu)和DevOps的高速發(fā)展。

[[354435]]

 容器的普及,帶來了微服務(wù)架構(gòu)和DevOps的高速發(fā)展。

1 微服務(wù)的弊端

1.1 測試、發(fā)布工作量劇增

單體應(yīng)用拆分成多個(gè)微服務(wù)后,雖能實(shí)現(xiàn)快速開發(fā)迭代,但帶來更大測試和運(yùn)維部署的成本。

  1. 很多業(yè)務(wù)早期就是一個(gè)大的單體Web應(yīng)用,測試和運(yùn)維時(shí),只需把Web應(yīng)用打WAR包,部署到Tomcat完事
  2. 拆成微服務(wù)后,很多業(yè)務(wù)需求就需同時(shí)修改多個(gè)服務(wù)的代碼,那么這些服務(wù)都要打包、測試和發(fā)布上線,還要測試這些服務(wù)接口的功能,最后發(fā)布上線多個(gè)系統(tǒng),測試和運(yùn)維工作量增都劇增。這個(gè)時(shí)候就需要有辦法能夠減輕測試和運(yùn)維的負(fù)擔(dān),我在上一講給出的解決方案是DevOps。

DevOps可理解為開發(fā)和運(yùn)維的結(jié)合,服務(wù)的開發(fā)者不再只負(fù)責(zé)服務(wù)的代碼開發(fā),還要負(fù)責(zé)服務(wù)的測試、上線發(fā)布甚至故障處理等全生命周期過程,就能把測試和運(yùn)維從微服務(wù)拆分后所帶來的復(fù)雜工作中解放。

DevOps要求開發(fā)、測試和發(fā)布流程自動化,這就需保證開發(fā)人員將自己本地部署測試通過的代碼和運(yùn)行環(huán)境,能夠復(fù)制到測試環(huán)境,測試通過后再復(fù)制到線上環(huán)境發(fā)布。雖然看上去就是復(fù)制代碼,但實(shí)際上本地環(huán)境、測試環(huán)境及線上環(huán)境往往是隔離,軟件配置環(huán)境差異很大,導(dǎo)致開發(fā)、測試和發(fā)布流程割裂。

1.2 機(jī)器初始化復(fù)雜度劇增

彈性擴(kuò)縮容時(shí)不同微服務(wù)所要求軟件運(yùn)行環(huán)境差異帶來的機(jī)器初始化復(fù)雜度的提升。拆分后的微服務(wù)相比原來大單體應(yīng)用更靈活,經(jīng)常要根據(jù)實(shí)際訪問量做在線擴(kuò)縮容,而且通常會采用在公有云上創(chuàng)建的ECS擴(kuò)縮容。

這又給運(yùn)維帶來挑戰(zhàn),因?yàn)楣性粕蟿?chuàng)建的ECS通常只包含基本os環(huán)境,微服務(wù)運(yùn)行依賴的軟件配置等需運(yùn)維單獨(dú)初始化,因不同微服務(wù)的軟件配置依賴不同,比如Java服務(wù)依賴JDK,就需在ECS安裝JDK,而且可能不同微服務(wù)JDK版本也不同,服務(wù)部署的初始化工作十分繁瑣。

 2 還好有你:容器

容器技術(shù)解決了本地、測試、線上環(huán)境的隔離,解決部署服務(wù)初始化繁瑣的問題。

容器,即Container可翻譯成集裝箱,在港口把貨物用集裝箱封裝起來,然后經(jīng)過貨輪從海上運(yùn)輸?shù)搅硪粋€(gè)港口,再在港口卸載后通過大貨車運(yùn)送到目的地。如此貨物便可在任何地方流轉(zhuǎn)時(shí),都封裝在集裝箱,無需根據(jù)是在貨輪還是大貨車而對貨物重新裝配。

軟件的容器也就這么個(gè)作用,它封裝的是軟件的運(yùn)行環(huán)境。容器本質(zhì)是Linux里的進(jìn)程,但容器通過Namespace和Cgroups,可有自己的root文件系統(tǒng)、網(wǎng)絡(luò)配置、進(jìn)程空間,甚至自己的用戶ID空間,如此容器里的進(jìn)程就像運(yùn)行在宿主機(jī)上的另外一個(gè)單獨(dú)的os內(nèi),從而實(shí)現(xiàn)與宿主機(jī)os里運(yùn)行的其他進(jìn)程隔離。

Docker即是基于Linux內(nèi)核的Cgroups、Namespace實(shí)現(xiàn)進(jìn)程的封裝和隔離。

雖然容器解決了應(yīng)用程序運(yùn)行時(shí)隔離問題,但要想實(shí)現(xiàn)應(yīng)用能從一臺機(jī)器遷移到另外一臺機(jī)器上還能正常運(yùn)行,就必須保證另外一臺機(jī)器上的os一致,而且應(yīng)用程序依賴的各種環(huán)境也必須一致。Docker鏡像就解決了這個(gè)痛點(diǎn)。

即Docker鏡像不僅可打包應(yīng)用程序本身,而且還可打包應(yīng)用程序的所有依賴,甚至包含整個(gè)os。這樣在本機(jī)上運(yùn)行通過的應(yīng)用程序,就可使用Docker鏡像把應(yīng)用程序文件、所有依賴的軟件以及os都打包成一個(gè)鏡像,可在任何一個(gè)安裝了Docker的地方運(yùn)行。

Docker鏡像解決了DevOps中微服務(wù)運(yùn)行的環(huán)境難以在本地環(huán)境、測試環(huán)境以及線上環(huán)境保持一致的難題。如此一來,開發(fā)就可以把在本地環(huán)境中運(yùn)行測試通過的代碼,以及依賴的軟件和操作系統(tǒng)本身打包成一個(gè)鏡像,然后自動部署在測試環(huán)境中進(jìn)行測試,測試通過后再自動發(fā)布到線上環(huán)境上去,整個(gè)開發(fā)、測試和發(fā)布的流程就打通了。

無論使用內(nèi)部物理機(jī)還是公有云的機(jī)器部署服務(wù),都可利用Docker鏡像封裝微服務(wù)運(yùn)行環(huán)境,從而屏蔽機(jī)器內(nèi)部物理機(jī)和公有云機(jī)器運(yùn)行環(huán)境的差異,實(shí)現(xiàn)同等對待,降低運(yùn)維復(fù)雜度。

 3 微服務(wù)容器化實(shí)踐

Docker解決了服務(wù)運(yùn)行環(huán)境遷移問題,因?yàn)樵谑褂肈ocker鏡像時(shí)并非把業(yè)務(wù)代碼、依賴的軟件環(huán)境以及os直接打包鏡像,而是利用Docker鏡像的分層機(jī)制,在每層編寫Dockerfile逐層打包鏡像。

因?yàn)殡m然不同微服務(wù)依賴的軟件環(huán)境不同,但還是存在相同,因此打包Docker鏡像時(shí),可以分層設(shè)計(jì)、逐層復(fù)用,減少每層鏡像文件大小。

 4 業(yè)務(wù)案例 

看看生產(chǎn)環(huán)境如何使用Docker鏡像。某Docker鏡像分為四層。


  • 基礎(chǔ)環(huán)境層

          定義操作系統(tǒng)運(yùn)行的版本、時(shí)區(qū)、語言、yum源、TERM等

  • 運(yùn)行時(shí)環(huán)境層

          定義了業(yè)務(wù)代碼的運(yùn)行時(shí)環(huán)境,比如Java代碼的運(yùn)行時(shí)環(huán)境JDK的版本。

  • Web容器層

           定義了業(yè)務(wù)代碼運(yùn)行的容器的配置,比如Tomcat容器的JVM參數(shù)

  • 業(yè)務(wù)代碼層

           定義了實(shí)際的業(yè)務(wù)代碼的版本,比如是V4業(yè)務(wù)還是blossom業(yè)務(wù)。

如此每層鏡像都基于上層添加新內(nèi)容,比如V4業(yè)務(wù)的Dockerfile

  1. FROM registry.intra.xxx.com/xxx_rd_content/tomcat_feed:jdk8.0.40_tomcat7.0.81_g1_dns 
  2. ADD confs /data1/confs/ 
  3. ADD node_pool /data1/node_pool/ 
  4. ADD authconfs /data1/authconfs/ 
  5. ADD authkey.properties /data1/ 
  6. ADD watchman.properties /data1/ 
  7. ADD 200.sh /data1/xxx/bin/200.sh 
  8. ADD 503.sh /data1/xxx/bin/503.sh 
  9. ADD catalina.sh /data1/xxx/bin/catalina.sh 
  10. ADD server.xml /data1/xxx/conf/server.xml 
  11. ADD logging.properties /data1/xxx/conf/logging.properties 
  12. ADD ROOT /data1/xxx/webapps/ROOT/ 
  13. RUN chmod +x /data1/xxx/bin/200.sh /data1/xxx/bin/503.sh /data1/xxx/bin/catalina.sh 
  14. WORKDIR /data1/xxx/bin 
  • FROM代表上層鏡像文件為tomcat_feed:jdk8.0.40_tomcat7.0.81_g1_dns”,可見該層包含了Java運(yùn)行時(shí)環(huán)境JDK和Web容器Tomcat及Tomcat版本和JVM參數(shù)等
  • ADD,即要在該層鏡像添加的文件,主要包含業(yè)務(wù)的代碼和配置
  • RUN,該層鏡像啟動時(shí)需要執(zhí)行的命令
  • WORKDIR,該層鏡像啟動后的工作目錄。如此便可通過Dockerfile基于上層鏡像完成該層鏡像制作

 5 總結(jié)

正是因?yàn)镈ocker可做到一處通過、到處運(yùn)行,對業(yè)務(wù)價(jià)值極大,解決了以前應(yīng)用程序在開發(fā)環(huán)境、測試環(huán)境及生產(chǎn)環(huán)境間移植難,提高了運(yùn)維自動化水平,也為DevOps理念的流行和業(yè)務(wù)上云提供了基礎(chǔ)。

當(dāng)然Docker也會帶來新問題,如舊的針對物理機(jī)的運(yùn)維模式就無法適應(yīng)了,需要一種新的針對容器的運(yùn)維模式。

 

責(zé)任編輯:姜華 來源: JavaEdge
相關(guān)推薦

2011-02-13 17:14:15

LinuxApacheNginx

2018-01-23 15:42:39

SalesforceOracleIBM

2019-04-30 14:17:56

中關(guān)村零售業(yè)創(chuàng)業(yè)者

2021-09-28 09:34:23

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)人工智能

2017-04-26 13:50:26

深度學(xué)習(xí)圖像超清應(yīng)用

2015-09-25 11:35:56

2021-02-21 14:05:02

區(qū)塊鏈比特幣安全

2024-07-26 08:45:54

2016-12-20 09:36:31

DevOps監(jiān)控微服務(wù)

2021-08-30 07:16:45

商業(yè)技術(shù)團(tuán)隊(duì)

2016-10-20 13:36:28

WebRTC瀏覽器服務(wù)器

2024-01-24 13:08:00

2021-10-19 10:09:21

三角形個(gè)數(shù)數(shù)組

2018-03-02 15:54:37

三角形主機(jī)比特幣

2022-03-16 14:27:49

CSS三角形前端

2021-07-30 06:58:27

python實(shí)現(xiàn)三角函數(shù)

2018-02-28 17:50:56

容器微服務(wù)團(tuán)隊(duì)

2022-02-16 08:21:28

CSS三角邊框動畫SVG
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號