軟件體系結(jié)構(gòu)對于用戶而言并不可見,,并且使其不引人注意。 但是糟糕的軟件體系結(jié)構(gòu)可能導致程序的繁瑣程度增加,,并使程序難以修改,。 較高的內(nèi)部質(zhì)量(在這種情況下為可靠的軟件體系結(jié)構(gòu))可以更快地交付新功能。 什么是軟件架構(gòu),? 程序的軟件體系結(jié)構(gòu)是程序系統(tǒng)的結(jié)構(gòu),,它由軟件元素,這些軟件元素的屬性以及兩者之間的關(guān)系組成,。 因此,,可以說程序的軟件體系結(jié)構(gòu)定義了程序的結(jié)構(gòu)和行為。 但是,,它與定義所有結(jié)構(gòu)和所有行為無關(guān),。 它僅與那些被認為是重要的元素有關(guān)。 重要的元素是具有長久影響的元素,例如主要的結(jié)構(gòu)元素,,與基本行為相關(guān)的那些元素以及具有重要意義的元素,,例如可靠性和可伸縮性。 通常,,體系結(jié)構(gòu)不關(guān)心這些軟件元素的細節(jié),。 有多種軟件架構(gòu): · 客戶端-服務(wù)器架構(gòu) · 面向?qū)ο蟮募軜?gòu) · 域驅(qū)動程序體系結(jié)構(gòu) · 洋蔥架構(gòu) · 面向方面的架構(gòu) · 面向服務(wù)的架構(gòu) · 微服務(wù)架構(gòu) · Lambda架構(gòu) · 基于組件的架構(gòu) · 事件驅(qū)動架構(gòu)
> Kinds of architecture software (src: cazton/consulting/enterprise/software-architectur 兩層和三層架構(gòu)兩層架構(gòu) 在這里,您可以直接在客戶端和服務(wù)器之間進行通信,,而無需中介,。 它分為兩部分,客戶端應(yīng)用程序和數(shù)據(jù)庫,。 客戶端向服務(wù)器發(fā)送請求,,然后服務(wù)器在服務(wù)器上處理該請求并發(fā)回數(shù)據(jù)。 意思是,,客戶端處理Presentation層(應(yīng)用程序接口)和Application層(邏輯操作),,而服務(wù)器系統(tǒng)處理數(shù)據(jù)庫層。 三層架構(gòu) 三層體系結(jié)構(gòu)分為三個部分: 表示層(客戶端層),,應(yīng)用程序?qū)樱I(yè)務(wù)層)和數(shù)據(jù)庫層(數(shù)據(jù)層),。 表示層 表示層是應(yīng)用程序的最頂層。 這是使用軟件時看到的層,,或稱為接口,。 該層將用戶根據(jù)鍵盤操作和鼠標單擊提供的信息傳遞給應(yīng)用程序?qū)印?/p> 應(yīng)用層稱為業(yè)務(wù)層,因為在這里我們發(fā)現(xiàn)邏輯控件和功能來處理從表示層和數(shù)據(jù)庫層接收的數(shù)據(jù),。 最后,,數(shù)據(jù)庫層是存儲數(shù)據(jù)的層。 它包含連接到數(shù)據(jù)庫并執(zhí)行所需的所需操作的方法,。 那么,,現(xiàn)實生活中的兩層和三層架構(gòu)的例子是什么? 您在網(wǎng)絡(luò)上訪問的電子商務(wù)是兩層體系結(jié)構(gòu)的一個示例,。 當您訪問Web上的電子商務(wù)時,,您將請求直接發(fā)送到服務(wù)器,然后服務(wù)器發(fā)回數(shù)據(jù),。 您在網(wǎng)絡(luò)上訪問的電子商務(wù)是兩層體系結(jié)構(gòu)的一個示例,。 另一方面,三層體系結(jié)構(gòu)是您可以在智能手機上訪問的電子商務(wù),。 訪問它時,,您正在處理表示層。 然后,,當您用鼠標單擊進行操作時,,它將傳遞到應(yīng)用程序?qū)印?存儲您的操作數(shù)據(jù)的是數(shù)據(jù)庫層。 什么是Docker? Docker是供開發(fā)人員使用容器構(gòu)建,,部署和運行應(yīng)用程序的開源,。 Docker被用作操作系統(tǒng)的虛擬化,服務(wù)器,,甚至是Web服務(wù)器。 Docker包裝了應(yīng)用程序及其庫以及對容器的依賴關(guān)系,。 然后,,將容器內(nèi)置到可以復(fù)制并共享到任何地方的圖像中。 這使得可以在所有PC上打開應(yīng)用程序/網(wǎng)站,。 Docker與虛擬機 但是首先,,什么是虛擬機? 虛擬機是一個完全類似于計算機的系統(tǒng),。 這樣就可以運行其他計算機上的內(nèi)容以及一臺計算機上的硬件,。 它必須具有底層操作系統(tǒng)。 由于它們都是系統(tǒng)的虛擬化,,因此Docker和Virtual Machine有何不同,? 如上所述,Docker只能使用容器來存儲許多應(yīng)用程序,,這使其更有效,,更快速地訪問。 與Docker不同,,虛擬機將變得笨重且難以維護,。 這解釋了為什么開發(fā)人員通常在其開發(fā)過程中使用Docker。 然后,,我們可以在生產(chǎn)階段在每個應(yīng)用程序上實現(xiàn)服務(wù)器,。 雖然…..實際上只使用Docker也足夠了! 這是兩者之間的其他區(qū)別:操作系統(tǒng)支持,,安全性,,可移植性和性能。 · 操作系統(tǒng)支持
> Docker vs VM (src: geekflare/docker-vs-virtual-machine/) 如上圖所示,,虛擬機具有其來賓操作系統(tǒng),,而Docker共享主機操作系統(tǒng)。 它使虛擬機比Docker重,。 · 安全 由于虛擬機不共享操作系統(tǒng),,因此它在主機內(nèi)核中具有很強的隔離性。 與Docker相比,,它更安全,。 當攻擊者訪問Docker上的一個容器時,這意味著他已經(jīng)克服了所有容器。 · 可移植性 Docker容器沒有任何獨立的操作系統(tǒng),,因此可以輕松移植,。 當容器移植到其他操作系統(tǒng)時,它可以立即啟動,。 另一方面,,虛擬機具有獨立的操作系統(tǒng),因此由于其大小,,將很難移植并且要花費大量時間,。 · 性能 Docker的重量更輕,使其運行速度比虛擬機快,。 那為什么要使用Docker,? · Docker可以更有效地利用系統(tǒng)資源。 Docker使用的內(nèi)存少于虛擬機,。 · Docker可以加快軟件交付周期,。 Docker使開發(fā)人員可以輕松實現(xiàn)新版本的軟件,甚至回滾到以前的版本,。 · Docker輕巧,,可移植且自成體系。 · Docker作為微服務(wù)架構(gòu)非常出色,。 容器非常適合微服務(wù)方法和敏捷開發(fā)過程,。 Docker架構(gòu) > Visualization of Docker's architecture (src: nickjanetakis/blog/understanding-how-the- Docker守護程序是在我們的主機操作系統(tǒng)上運行的瘦身服務(wù)。 Docker守護程序本身公開了REST API,。 許多不同的工具都可以通過此API與守護程序?qū)υ挕?我們使用Docker CLI作為命令行工具來與Docker守護進程進行對話,。 Docker上的條款 要了解Docker,您應(yīng)該首先了解以下術(shù)語: · Docker守護程序 Docker守護程序是操作系統(tǒng)主機中的一項服務(wù),。 它用于構(gòu)建,,部署和運行Docker的容器。 用戶無法立即使用Docker守護程序,。 要使用Docker守護程序,,用戶請使用Docker客戶端作為中間人或CLI。 1. Docker鏡像 Docker映像是一個只讀模板,。 該模板實際上是一個操作系統(tǒng)或許多應(yīng)用程序中已安裝的操作系統(tǒng),。 我們只需要使用一個Docker鏡像就可以創(chuàng)建許多Docker容器。 2. Docker容器 Docker容器可以視為一個文件夾,。 它是由Docker守護程序制成的,。 以后可以構(gòu)建此容器,以便生成可用于創(chuàng)建新Docker容器的Docker映像,。 3. Docker注冊表 Docker注冊表是一組私有或公共的Docker映像,。 我們可以在Docker Hub中訪問Docker注冊表,。我們可以在此處推送或拉出自己的映像。 4. Docker /容器編排 Docker / Container Orchestration是容器生命周期的一項活動,,尤其是在一個更大且動態(tài)的環(huán)境中,。 開發(fā)人員可以使用許多容器編排來控制和自動化許多活動,例如 · 容器的啟動和停止過程,。 · 將功能從容器公開給用戶或其他容器,。 · 零停機時間部署新版本的容器。 · 自動或手動清潔,。 Docker是一個客戶端-服務(wù)器架構(gòu) 我們可以說Docker是一個客戶端-服務(wù)器應(yīng)用程序,。 守護程序是服務(wù)器,CLI是許多客戶端之一,。 也有許多第三方客戶。 我們可以使用客戶端來管理守護程序的許多不同組件,,例如映像,,容器,網(wǎng)絡(luò)和數(shù)據(jù)量,。 了解Docker的術(shù)語后,,我們現(xiàn)在可以看看客戶端如何與Docker主機進行對話
> Visualization of how client talks to the Docker host (src: nickjanetakis/blog/understa · 左側(cè)的客戶端是我們運行各種Docker命令的地方。 可以將其安裝在我們的操作系統(tǒng)上,。 · Docker主機是運行Docker守護程序的服務(wù)器,。 客戶端和守護程序不必位于同一操作系統(tǒng)上。 · Docker注冊表以查找和下載Docker映像 容器編排 容器編排是基于多個集群上微服務(wù)的自動管理和調(diào)度應(yīng)用程序個人工作的過程,。 它專注于管理容器及其動態(tài)環(huán)境的生命周期,。 為什么我們需要容器編排? 容器編排用于自動執(zhí)行以下任務(wù): · 配置和計劃容器,。 · 容器的部署,。 · 容器的可用性。 · 根據(jù)運行它們的容器來配置應(yīng)用程序,。 · 擴展容器以平均平衡整個基礎(chǔ)架構(gòu)中的應(yīng)用程序工作負載,。 · 容器之間的資源分配。 · 容器的負載平衡,,流量路由和服務(wù)發(fā)現(xiàn),。 · 容器的健康監(jiān)控。 · 確保容器之間的交互,。 容器編排如何工作,? 首先,配置文件告訴容器編排工具如何在容器之間聯(lián)網(wǎng)以及將日志存儲在何處,。 然后,,編排工具將容器部署調(diào)度到群集中,,并確定該容器的最佳主機。 確定主機后,,編排工具將管理容器的生命周期,。 容器編排工具可以在運行容器的任何環(huán)境中工作。 用于管理,,擴展和維護容器化應(yīng)用程序的工具稱為協(xié)調(diào)器,。 最常見的協(xié)調(diào)器是Kubernetes和Docker Swarm。 Docker Swarm與Kubernetes Docker Swarm可以在容器從其他容器中找到現(xiàn)有容器映像時運行應(yīng)用程序,,并將容器部署在筆記本電腦,,服務(wù)器或云(公共云或私有云)上。 另一方面,,Kubernetes允許通過容器編排引擎進行容器集群,。 Kubernetes具有聲明式管理,因此一點也不復(fù)雜,。 它也是開源的,,因此可以在任何地方運行。 我們什么時候使用Docker Orchestration,? 少量用戶使用的簡單的容器化應(yīng)用/網(wǎng)絡(luò)并不需要編排,。 但是,如果您擁有具有許多功能的復(fù)雜應(yīng)用程序,,那么編排就可以解決,。 這是我們使用編排的時間: · 當我們的應(yīng)用程序很復(fù)雜時。 如果我們的應(yīng)用程序涉及兩個以上的容器,,則最好使用編排,。 · 當我們的應(yīng)用程序?qū)ι炜s性和彈性有很高的要求時。 協(xié)調(diào)器讓我們平衡負載并旋轉(zhuǎn)容器以滿足需求,。 它確定系統(tǒng)的狀態(tài),,而不是手動編碼對變化的條件的所有反應(yīng)。 · 當您想充分利用現(xiàn)代CI / CD技術(shù)時,。 編排系統(tǒng)支持使用藍/綠部署或滾動升級的應(yīng)用程序的部署模式,。 如何設(shè)置Docker · 下載并安裝Docker Desktop · 為Mac安裝Docker · 為Windows安裝Docker 2.測試Docker版本 打開終端并運行 docker --version
> Check Docker version. src: docs.docker/get-started/ 3.測試您好世界Docker映像
> Run hello-world. src: docs.docker/get-started/ 4.列出您下載到計算機上的hello-world映像 docker image ls 5.列出hello-world容器
> List of hello-world container. src: docs.docker/get-started/ 以下是一些您可以使用的Docker命令:
> Docker commands (src: guru99/docker-tutorial.html#8) 結(jié)論 Docker是一個用于開發(fā),交付和運行應(yīng)用程序的開放平臺,。 Docker使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,,從而可以快速交付軟件。 通過使用Docker,,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間的延遲,。 |
|
來自: 新用戶0175WbuX > 《待分類》