




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Docker和微服務(wù)技術(shù)的崛起作為一名軟件開發(fā)者或技術(shù)愛好者,像“微服務(wù)”和“Docker”這樣的術(shù)語已經(jīng)不絕于耳,但你是否仍然不明白為什么會(huì)有這么多相關(guān)的炒作?SOA“簡史”在 2000 年初,我們目睹了面向服務(wù)架構(gòu)(Service Oriented Architecture,SOA)的崛起,這是一種非常流行的軟件架構(gòu)設(shè)計(jì)范式。簡而言之,SOA 是一種軟件架構(gòu)模式,用于構(gòu)建大型的企業(yè)應(yīng)用程序,這些應(yīng)用程序通常要求集成多種服務(wù),而每種服務(wù)使用不同的平臺和編程語言來構(gòu)建,并通過通用的通信機(jī)制進(jìn)行交互。以下是面向服務(wù)架構(gòu)(SOA)的簡單圖示:關(guān)鍵點(diǎn)1. SOA 是大型軟件產(chǎn)品(如企業(yè)應(yīng)用程序)的首
2、選。2. SOA 側(cè)重于將多個(gè)服務(wù)集成到單個(gè)應(yīng)用程序中,而不是強(qiáng)調(diào)模塊化應(yīng)用程序。3. 在 SOA 中,用于服務(wù)間交互的通用通信機(jī)制被稱為企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)。4. 基于 SOA 的應(yīng)用程序本質(zhì)是單體。也就是說,單個(gè)應(yīng)用程序?qū)影擞脩艚缑婊虮硎緦?、業(yè)務(wù)邏輯或應(yīng)用程序?qū)?,以及?shù)據(jù)庫層,這些全部都集成到一個(gè)平臺中。關(guān)于“單體架構(gòu)”讓我們以網(wǎng)店為例。我們知道,很多電商網(wǎng)站都可以通過多種設(shè)備訪問,所以這些網(wǎng)站通常都為筆記本電腦和移動(dòng)設(shè)備提供了不同的用戶界面。我們也知道,多個(gè)操作或服務(wù)彼此依賴,以確保應(yīng)用程序的正常運(yùn)行。其中一些服務(wù)負(fù)責(zé)創(chuàng)建賬號、顯示產(chǎn)品
3、目錄、建立和驗(yàn)證購物車、生成賬單、確認(rèn)訂單、完成支付等。在單體應(yīng)用程序中,所有這些服務(wù)都在同一個(gè)應(yīng)用程序?qū)由线\(yùn)行,因此這個(gè)電子商務(wù)網(wǎng)站的軟件架構(gòu)如下所示:缺點(diǎn)1. 很顯然,隨著服務(wù)數(shù)量的增加,應(yīng)用程序的規(guī)模將不斷增長。這可能會(huì)讓構(gòu)建和維護(hù)應(yīng)用程序代碼庫的開發(fā)人員不堪重負(fù)。2. 難以更新當(dāng)前的技術(shù)棧,即使是在當(dāng)前技術(shù)棧中修改一點(diǎn)內(nèi)容也會(huì)是一場噩夢。3. 每一項(xiàng)變更都要求開發(fā)人員重建整個(gè)應(yīng)用程序,十分浪費(fèi)資源。4. 隨著客戶群的增加,我們將有更多的請求需要,這將需要更多的資源。因此,建立可擴(kuò)展的產(chǎn)品時(shí)至關(guān)重要的。對于單體應(yīng)用程序,我們只能在一個(gè)方向上進(jìn)行伸縮,即垂直伸縮,而不是水平伸縮。這意味著我
4、們可以通過添加更多硬件資源(如內(nèi)存和 CPU)在單臺計(jì)算機(jī)上擴(kuò)展應(yīng)用程序,但橫向擴(kuò)展(跨多臺計(jì)算機(jī))仍然是一項(xiàng)挑戰(zhàn)。救星“微服務(wù)”來了!微服務(wù)架構(gòu)可以被認(rèn)為是對 SOA 的特殊化,也是一種可以克服單體架構(gòu)缺陷的替代模式。在微服務(wù)架構(gòu)中,我們專注于將應(yīng)用程序模塊化,將其分解成較小的獨(dú)立服務(wù),這些服務(wù)可獨(dú)立于其他服務(wù)或整個(gè)應(yīng)用程序本身而構(gòu)建、部署、伸縮和維護(hù)。這些獨(dú)立服務(wù)被稱為微服務(wù),因此這種架構(gòu)被稱為微服務(wù)架構(gòu)。關(guān)鍵點(diǎn)1. 微服務(wù)架構(gòu)和 SOA 雖然不一樣,但它們確實(shí)存在一些相似之處。微服務(wù)架構(gòu)被稱為 SOA 的變體,甚至是 SOA 的一種特殊化。換句話說,SOA 可以被認(rèn)為是微服務(wù)架構(gòu)的超集。
5、2. 人們之所以能夠在這些架構(gòu)之間找到相似性,主要是因?yàn)樗鼈兌紝W⒂跇?gòu)建具有松散耦合的服務(wù)。這些服務(wù)具有明確的界限,并且每個(gè)服務(wù)都具有獨(dú)立的功能集。3. 不同之處在于,SOA 可能意味著其他很多東西。例如,SOA 適用于單體架構(gòu),重點(diǎn)是將系統(tǒng)集成在一個(gè)應(yīng)用程序中,并確保代碼的可復(fù)用性。但對微服務(wù)架構(gòu)來說并不是這樣的,微服務(wù)架構(gòu)的重點(diǎn)是通過構(gòu)建獨(dú)立服務(wù)和確保產(chǎn)品的可伸縮性來模塊化應(yīng)用程序。優(yōu)點(diǎn)1. 引入關(guān)注點(diǎn)分離的理念,在軟件應(yīng)用程序開發(fā)中實(shí)現(xiàn)敏捷,不管是在簡單的還是復(fù)雜的領(lǐng)域。2. 微服務(wù)的獨(dú)立能力或獨(dú)立性帶來了以下好處:· 將開發(fā)人員分成小團(tuán)隊(duì)來降低復(fù)雜性,每個(gè)小團(tuán)隊(duì)負(fù)責(zé)構(gòu)建和維護(hù)
6、一個(gè)或多個(gè)服務(wù)。· 允許部署分塊,而不是每次發(fā)生變更都要重新構(gòu)建整個(gè)應(yīng)用程序,以此來降低風(fēng)險(xiǎn)。· 增量更新或升級一個(gè)或多個(gè)服務(wù)的技術(shù)棧,而不是在一個(gè)時(shí)間點(diǎn)更新整個(gè)應(yīng)用程序,以此降低維護(hù)難度。· 可以使用任意的編程語言來構(gòu)建服務(wù),除此之外,還可以為每個(gè)給定服務(wù)維護(hù)單獨(dú)的數(shù)據(jù)模型。3. 可以構(gòu)建全自動(dòng)的部署機(jī)制,確保個(gè)體服務(wù)的部署、服務(wù)管理和自動(dòng)伸縮。技術(shù)的演變除了軟件架構(gòu)模式的發(fā)展之外,我們還看到 Docker 和 Kubernetes 等新技術(shù)的出現(xiàn),用于支持我們的軟件基礎(chǔ)設(shè)施,實(shí)現(xiàn)對可伸縮產(chǎn)品和服務(wù)的高效管理。我們已經(jīng)從硬件虛擬化發(fā)展到容器化?;蛟S
7、你會(huì)想,這意味著什么?讓我們借助下圖來理解 IT 基礎(chǔ)設(shè)施領(lǐng)域的發(fā)展:第一張圖顯示的是一臺物理機(jī)器或一臺硬件服務(wù)器。通常,我們在構(gòu)建應(yīng)用程序時(shí)使用的是宿主操作系統(tǒng)提供的資源,在部署應(yīng)用程序時(shí)也使用了相同的模式。但如果你想擴(kuò)展應(yīng)用程序該怎么辦呢?在某些時(shí)候,你可能需要另一臺硬件服務(wù)器。而隨著數(shù)量不斷增加,成本和其他資源(如硬件和能源消耗)也會(huì)隨之增加。此外,你可能會(huì)想,是否有必要在任何時(shí)候都使用所有的硬件資源和操作系統(tǒng)?當(dāng)然不是。既然這樣,那么為什么還需要這么龐大的基礎(chǔ)設(shè)施呢?這個(gè)問題促成了硬件虛擬化的發(fā)展,于是虛擬機(jī)(VM)出現(xiàn)了,我們通過虛擬機(jī)來優(yōu)化 IT 基礎(chǔ)設(shè)施。如你在第二張圖中看到的,
8、虛擬機(jī)具有自己的客戶操作系統(tǒng),運(yùn)行在單個(gè)物理機(jī)或宿主操作系統(tǒng)中。我們因此能夠運(yùn)行多個(gè)應(yīng)用程序,而無需安裝大量物理機(jī)。宿主操作系統(tǒng)可以確保在不同虛擬機(jī)之間進(jìn)行系統(tǒng)性的資源分配和負(fù)載均衡。虛擬機(jī)降低了軟件維護(hù)的難度和成本,不過仍然可以進(jìn)一步優(yōu)化。例如,并非所有的應(yīng)用程序在客戶操作系統(tǒng)環(huán)境中都會(huì)按預(yù)期運(yùn)行。此外,即使是運(yùn)行簡單的進(jìn)程,客戶操作系統(tǒng)也需要大量資源。這些問題促成了下一個(gè)創(chuàng)新:容器化。與特定于操作系統(tǒng)的虛擬機(jī)不同,容器特定于應(yīng)用程序,因?yàn)楦虞p量級。此外,虛擬機(jī)可以運(yùn)行多個(gè)進(jìn)程,而容器作為單個(gè)進(jìn)程運(yùn)行。于是:1. 我們可以在物理機(jī)上運(yùn)行多個(gè)容器,或者甚至可以考慮在單個(gè)虛擬機(jī)上運(yùn)行容器。無論
9、是哪種情況,它都可以解決應(yīng)用程序相關(guān)的問題。2. 容器化與虛擬化之間并不是競爭關(guān)系,而是一種互補(bǔ),用以進(jìn)一步優(yōu)化 IT 軟件基礎(chǔ)設(shè)施。Docker我們已經(jīng)了解了 IT 軟件基礎(chǔ)設(shè)施的演變,接下來可能想知道如何實(shí)現(xiàn)之前討論過的微服務(wù)架構(gòu)和容器化?答案是:Docker。Docker 是全球領(lǐng)先的軟件容器化平臺,它將微服務(wù)封裝進(jìn)我們所說的 Docker 容器,然后進(jìn)行獨(dú)立的維護(hù)和部署。每個(gè)容器都將負(fù)責(zé)一個(gè)特定的業(yè)務(wù)功能。為了更深入了解 Docker,讓我們以前面討論過的電子商務(wù)網(wǎng)站為例。我們知道它擁有多項(xiàng)業(yè)務(wù)和服務(wù),例如創(chuàng)建賬號、顯示產(chǎn)品目錄、建立和驗(yàn)證購物車等。在微服務(wù)架構(gòu)中,所有這些都可以視為微
10、服務(wù)并封裝在 Docker 容器中。但是,為什么要這樣做?其中一個(gè)原因是為了確保開發(fā)和生產(chǎn)環(huán)境之間的一致性。例如,假設(shè)有三位開發(fā)人員正在開發(fā)此應(yīng)用程序,他們每個(gè)人都有自己的開發(fā)環(huán)境。其中一個(gè)開發(fā)人員可能在他的機(jī)器上運(yùn)行 Windows 操作系統(tǒng),而第二個(gè)開發(fā)人員可能運(yùn)行 Mac OS,第三個(gè)開發(fā)人員會(huì)更喜歡基于 Linux 的操作系統(tǒng)。他們每個(gè)人都需要花費(fèi)數(shù)小時(shí)的時(shí)間將應(yīng)用程序安裝到各自的開發(fā)環(huán)境中,并且需要做額外的工作將它們部署到云端。這一過程并不那么順暢,在將這些應(yīng)用程序部署到云基礎(chǔ)設(shè)施上時(shí),他們之間總是會(huì)發(fā)生摩擦。借助 Docker,可以使應(yīng)用程序獨(dú)立于主機(jī)環(huán)境。因?yàn)椴捎昧宋⒎?wù)架構(gòu),所以現(xiàn)在可以將每個(gè)服務(wù)封裝到 Docker 容器中。Docker 容器是輕量級的,并且資源是隔離的,通過它可以構(gòu)建、維護(hù)、發(fā)布和部署應(yīng)用程序。優(yōu)點(diǎn)1. Docker 是一款非常流行的軟件,有強(qiáng)大的社區(qū)支持,并專門為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村衛(wèi)浴維修合同范本
- 專業(yè)護(hù)欄安裝合同范本
- 住建部合同范本0204
- 北京農(nóng)村土地租賃合同范本
- 兼職app推廣合同范本
- 交房質(zhì)量糾紛合同范本
- 公司貸款抵押合同范本
- 全國青島版信息技術(shù)七年級下冊專題二第6課《閱讀材料 濾鏡》教學(xué)設(shè)計(jì)
- 包裝木箱合同范本
- 劇團(tuán)戲服贈(zèng)與合同范本
- 建設(shè)工程質(zhì)量檢測方案-技術(shù)標(biāo)部分
- 大學(xué)英語詞匯表(5500)個(gè)單詞
- 駕駛員疲勞駕駛監(jiān)測系統(tǒng)
- 裝飾公司項(xiàng)目融資計(jì)劃書
- 《憲法學(xué)》2023-2024期末試題及答案(試卷號2106)
- 護(hù)士服裝文化與護(hù)理課件
- 2023年建筑業(yè)10項(xiàng)新技術(shù)
- 遼寧省沈陽市名校2024屆中考數(shù)學(xué)全真模擬試題含解析
- DB5105T 63-2023合江真龍柚生產(chǎn)技術(shù)規(guī)程
- 一崗雙責(zé)評價(jià)細(xì)則范本
- 古典文獻(xiàn)的???下)
評論
0/150
提交評論