天天看點

微服務流程的部署政策

作者:低代碼聯盟
微服務架構師提出了可用于部署微服務的不同類型的模式。每個設計都為不同的功能和非功能需求提供解決方案

微服務是當下的趨勢。企業正在轉向雲原生架構,并将其大型應用程式分解為更小、獨立的子產品,稱為微服務。這種架構提供了更多的靈活性、可維護性和可操作性,更不用說更好的客戶滿意度了。

微服務流程的部署政策

有了這些額外的優勢,架構師和營運工程師也面臨着許多新的挑戰。早些時候,他們管理一個應用程式;現在他們不得不管理很多。每個應用程式也需要自己的支援服務,如資料庫、LDAP 伺服器、消息隊列等。是以,利益相關者需要考慮不同的部署政策,以便可以很好地部署整個應用程式,同時保持其完整性并提供最佳性能。

主要分享低代碼、微服務、容器化、SAAS‬、系統架構方面的的‬内容‬‬,希望‬大家‬點贊‬,評論,關注‬。

部署模式

微服務架構師提出了可用于部署微服務的不同類型的模式。每個設計都為不同的功能和非功能需求提供解決方案。

是以微服務可以用多種程式設計語言或架構編寫。同樣,它們可以用相同程式設計語言或架構的不同版本編寫。每個微服務都包含幾個不同的服務執行個體,例如 UI、資料庫和後端。微服務必須可獨立部署和擴充。服務執行個體必須互相隔離。該服務必須能夠快速建構和部署自身。必須為服務配置設定适當的計算資源。部署環境要靠譜,服務要有監控。

每個主機多個服務執行個體

為了滿足本節開頭提到的需求,我們可以想到一個方案,我們可以在一台主機上部署多個服務的服務執行個體。主機可以是實體的或虛拟的。是以,我們在共享主機上運作來自不同服務的許多服務執行個體。

我們可以通過不同的方式來做到這一點。我們可以将每個執行個體作為一個 JVM 程序來啟動。我們還可以啟動多個執行個體作為同一個JVM 程序的一部分,有點像 Web 應用程式。我們還可以使用腳本通過一些配置來自動化啟動和關閉過程。配置将具有不同的部署相關資訊,例如版本号。

通過這種方法,可以非常有效地利用資源。

微服務流程的部署政策

每個主機的服務執行個體

在許多情況下,微服務需要自己的空間和明确分離的部署環境。在這種情況下,它們無法與其他服務或服務執行個體共享部署環境。可能存在資源沖突或稀缺的機會。當使用相同語言或架構編寫但具有不同版本的服務無法共存時,可能會出現問題。

在這種情況下,服務執行個體可以部署在它自己的主機上。主機可以是實體機或虛拟機。

在這種情況下,不會與其他服務發生任何沖突。該服務保持完全隔離。VM 的所有資源都可供服務使用。它可以很容易地被監控。

這種部署模式的唯一問題是它會消耗更多資源。

每個虛拟機的服務執行個體

在許多情況下,微服務需要自己的、獨立的部署環境。微服務必須健壯并且必須快速啟動和停止。同樣,它也需要快速更新和降級。它不能與任何其他服務共享任何資源。它不能與其他服務發生沖突。它需要更多的資源,并且必須将資源适當地配置設定給服務。

在這種情況下,服務可以建構為VM 映像并部署在 VM 中。

擴充可以快速完成,因為新的 VM 可以在幾秒鐘内啟動。所有 VM 都有自己的計算資源,這些資源會根據微服務的需要進行适當配置設定。不會與任何其他服務發生任何沖突。每個 VM 都被适當地隔離并且可以獲得負載平衡的支援。

微服務流程的部署政策

每個容器的服務執行個體

在某些情況下,微服務非常小。他們執行時消耗的資源非常少。但是,它們需要隔離。不得有任何資源共享。他們又一次負擔不起同地辦公,并且有可能與其他服務發生沖突。如果有新版本,它需要快速部署。可能需要部署相同的服務但具有不同的釋出版本。該服務必須能夠快速擴充。它還必須能夠在幾毫秒内啟動和關閉。

在這種情況下,可以将服務建構為容器映像并部署為容器。

在這種情況下,該服務将保持隔離狀态。不會有任何沖突的機會。可以根據服務的計算需求來配置設定計算資源。該服務可以快速擴充。容器也可以快速啟動和關閉。

無伺服器部署

在某些情況下,微服務可能不需要知道底層部署基礎設施。在這些情況下,部署服務外包給第三方供應商,通常是雲服務提供商。業務對底層資源完全無動于衷;它隻想在平台上運作微服務。它根據每次服務調用從平台消耗的資源向服務提供商付款。服務提供商選擇代碼并為每個請求執行它。執行可能發生在任何正在執行的沙箱中,例如容器、VM 或其他任何東西。它隻是隐藏在服務本身之外。

服務提供商負責供應、擴充、負載平衡、修補和保護底層基礎設施。許多流行的無伺服器産品示例包括AWS Lambda、Google Functions 等。

無伺服器部署平台的基礎設施非常有彈性。該平台擴充服務以自動吸收負載。消除了管理低級基礎設施所花費的時間。由于微服務提供商隻為每次調用消耗的資源付費,是以費用也降低了。

服務部署平台

微服務也可以部署在應用部署平台上。通過提供一些進階服務,這些平台清楚地抽象出了部署。服務抽象可以處理非功能性和功能性需求,例如服務執行個體的可用性、負載平衡、監控和可觀察性。應用程式部署平台是完全自動化的。它使應用程式部署非常可靠、快速和高效。

此類平台的示例有Docker Swarm、Kubernetes 和Cloud Foundry,後者是一種 PaaS 産品。

結論

微服務部署選項和産品在不斷發展。可能會有更多的部署模式效仿。上面提到的許多這些模式都非常流行,并且被大多數微服務提供商使用。他們非常成功和可靠。但是随着範式的變化,管理者正在考慮創新的解決方案。

主要分享低代碼、微服務、容器化、SAAS‬、系統架構方面的的‬内容‬‬,希望‬大家‬點贊‬,評論,關注‬。

繼續閱讀