国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

貓頭鷹的深夜翻譯:分布式系統Toolkit模式

hiyayiji / 1520人閱讀

摘要:根本上來說,這意味著不僅要將整個應用程序分解,而且要將任何一個服務器中的各個部分分解為多個模塊化容器,這些容器易于參數化和重復使用。在中,這種模塊化容器服務的實施者是。一個是指一組共享文件系統,內核命名空間和地址的一組容器。

過去幾年容器逐漸成為了打包和部署代碼的流行的方式。容器鏡像解決很多現有的打包和部署工具所帶來的問題,初次以外,還為我們提供了構建分布式應用的全新的思路。就如SOA提倡將應用拆分為模塊化的內聚的服務,容器應當進一步提倡將這些服務拆分為緊密協作的模塊化容器。通過構建應用邊界,容器使用戶能夠使用模塊化,可重用的組件構建其服務,從而使得服務比單機容器構建的應用程序更可靠,更具可擴展性并且構建速度更快。

從VM向容器的演變從各種角度來說就如同當年從單機應用轉化為模塊化的面向對象的應用程序。容器鏡像提供的抽象層與面向對象編程中類的抽象邊界有很大的共同點,而且也提高了開發者的效率和程序的質量。就像正確的編碼方式是將關注點分離為模塊化對象一樣,在容器中打包應用程序的正確方法是將關注點分離為模塊化容器。根本上來說,這意味著不僅要將整個應用程序分解,而且要將任何一個服務器中的各個部分分解為多個模塊化容器,這些容器易于參數化和重復使用。這就像現代語言中的標準語言庫,大多數應用程序開發人員可以將由其他人編寫的模塊化容器組合在一起,并使用更高質量的組件更快地構建應用程序。

從模塊化容器方面進行思考的好處很多,特別是模塊化容器提供以下內容:

加快應用的開發,因為容器可以在團隊甚至是大型社區之間進行復用

支持敏捷團隊,因為容器邊界是一個天然的邊界,劃分給各個團隊。

支持關注點分離,并專注于開發特定功能從而減少復雜的依賴和不可測試組件。

從模塊化容器構建應用程序意味著考慮協作提供服務容器的共生組,而不是一個容器提供一個服務。在Kubernetes中,這種模塊化容器服務的實施者是Pod。一個Pod是指一組共享文件系統,內核命名空間和IP地址的一組容器。Pod在K8s集群中是調度的基本單位,正是因為Pod中容器的共生特性要求它們共同安排在同一臺機器上,而可靠地實現這一點的唯一方法是將容器組作為原子調度單元。

當你從Pod的角度思考時,自然會出現一些模塊化應用程序開發的通用模式,這些模式會多次重復出現。我相信,隨著我們在Kubernetes的開發中向前發展,將會發現更多這些模式,但這里有三個我們常見的模式:

例子1:Sidecar容器

Sidecar容器拓展并且加強主容器,他們融合當前已有的容器并且將它們完善。舉個例子,假設有一個運行這Nginx web應用的容器。添加另一個容器將文件系統與git倉庫同步,在容器間共享文件系統,從而實現git的提交并部署。但是這種模塊化實現使得git同步器可以交給另一個容器開發,并且跨不同的web服務器復用。因為這種模塊化,你只需要編寫并測試單個git同步應用并且提供給多個應用使用。而如果有別的團隊開發了這個工具,你甚至不需要重復開發。

例子2:Ambassador容器

Ambassador容器代理外界至本地的連接。比如,現在有一個Redis集群,包含多個讀者和單個寫者。 你可以創建一個Pod,包含主應用和Redis ambassador容器。ambassador容器作為代理分離讀寫請求分別交給對應的服務器。因為這兩個容器共享一個網絡命名空間,即他們共享一個IP地址,因此主應用可以用localhost訪問ambassador服務,無需通過服務發現。從主應用的視角來看,就仿佛在localhost上連接了redis集群。這種方式非常方便,不僅因為不同的團隊可以管理自己的組件,而且因為在開發環境中,你可以跳過代理,直接連接到Redis集群上。

例子3:Adapter容器

Adapter容器標準化輸入輸出。假設現在需要監控N個應用,每個應用可能使用了不同的方法來輸出監控數據(比如JMX, StatsD等)。但是每個監控系統都希望用一個一致的數據模型來管理收集的數據。通過使用Adapter模式來組合容器,你可以創建一個pod將應用容器和適配器容器組合起來,從而將同質的監控數據轉化為單個同一個的表現形式。同樣的,因為這些Pod共享命名空間和文件系統,這兩個容器間的協作簡單明。

Refrence

Sidecar Pattern
Ambassador Pattern

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/33128.html

相關文章

  • 頭鷹深夜翻譯:你需要了解數據庫名詞

    摘要:讀取出數據時,將此版本號一同讀出,之后更新時,對此版本號加一。此時,將提交數據的版本數據與數據庫表對應記錄的當前版本信息進行比對,如果提交的數據版本號大于數據庫表當前版本號,則予以更新,否則認為是過期數據。 前言 很多人都在討論數據的指數型增長,以及我們將會有比想象的還要大的數據量。但是,很少有人從數據庫的角度談論這個問題。隨著數據量的暴漲,數據庫也需要隨之升級。這也是為什么既要了解如...

    wangym 評論0 收藏0
  • 頭鷹深夜翻譯:Java 2D Graphics, 簡單仿射變換

    摘要:什么是仿射變換一組設備無關的坐標被用來將所有的坐標信息傳遞給對象。對象作為對象狀態的一部分。類代表一個的仿射變化,將一組的坐標進行線性映射到另一組保留了平行關系和豎直關系的坐標中。 什么是仿射變換 一組設備無關的坐標被用來將所有的坐標信息傳遞給Graphics2D對象。AffineTransform對象作為Graphics2D對象狀態的一部分。該對象定義了如何將用戶空間的坐標轉化為設備...

    whinc 評論0 收藏0
  • 頭鷹深夜翻譯:持久化容器存儲

    摘要:如果我們的容器使用,文件如下在這個例子中,我們可以重復創建和銷毀,同一個持久存儲會被提供給新的,無論容器位于哪個節點上。 前言 臨時性存儲是容器的一個很大的買點。根據一個鏡像啟動容器,隨意變更,然后停止變更重啟一個容器。你看,一個全新的文件系統又誕生了。 在docker的語境下: # docker run -it centos [root@d42876f95c6a /]# echo H...

    tianhang 評論0 收藏0
  • 頭鷹深夜翻譯:持久化容器存儲

    摘要:如果我們的容器使用,文件如下在這個例子中,我們可以重復創建和銷毀,同一個持久存儲會被提供給新的,無論容器位于哪個節點上。 前言 臨時性存儲是容器的一個很大的買點。根據一個鏡像啟動容器,隨意變更,然后停止變更重啟一個容器。你看,一個全新的文件系統又誕生了。 在docker的語境下: # docker run -it centos [root@d42876f95c6a /]# echo H...

    xiao7cn 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<