簡體   English   中英

使用Docker擴展微服務

[英]Scaling microservices using Docker

我已經創建了一個Node.js(Meteor)應用程序,我正在研究未來處理擴展的策略。 我將我的應用程序設計為一組微服務,我現在正在考慮在生產中實現它。

然而,我想要做的是在一個服務器實例上運行許多微服務,以便在使用少量資源時最大限度地利用資源。 我知道容器對此很有用,但我很好奇是否有辦法創建一個動態擴展的容器集合,我可以:

  • 編寫命令,例如“如果運行此應用程序的容器達到> 80%CPU /其他限制指標,則在此服務器上設置另一個應用程序容器”,
  • 如果需要額外的容器,請提供並准備其他服務器,
  • 這些容器之間的負載平衡連接(這是否會影響服務器負載平衡,例如,減少與較少容器的服務器的連接?)

我已經研究過AWS EC2,Docker Compose和nginx,但我不確定我是否正朝着正確的方向前進。

調查Kubernetes和/或Mesos,你永遠不會回頭。 它們是根據您的目標量身定制的。 您應該關注的兩個組件是:

  1. 服務發現:這允許相互依賴的服務(微服務“A”呼叫“B”)相互“發現”。 它通常使用DNS完成,但在其上面具有注冊功能,可以處理在實例縮放時發生的情況。

  2. 調度:在Docker-land中,調度不是關於CRON作業,它意味着容器如何按各種方式擴展和“打包”到服務器中,以最大限度地有效利用可用資源。

實際上有幾十個選項:Docker Swarm,Rancher等也是競爭對手。 像亞馬遜這樣的許多雲供應商也提供具有這些功能的專用服務(例如ECS)。 但是Kubernetes和Mesos正在成為標准選擇,所以如果你至少從那里開始,你就會成為一個好公司。

度量標准可以通過Docker API (以及很酷的博客文章 )收集,並且通常用於此。 修補DAPI和docker堆棧工具(compose / swarm / machine)可以提供很多工具來有效地擴展微服務架構。

我可以建議贊成Consul在這種資源感知系統中管理發現。

我們使用AWS來托管我們的miroservices應用程序,並使用ECS(AWS docker service)來容納不同的API。

在此背景下,我們使用AWS自動縮放功能來管理規模和擴展。 檢查一下

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM