久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

微服務架構(三): 部署

 云端素館 2018-09-03

工作中使用了微服務架構,接下來的一段時間里,,我會寫一系列的文章來介紹微服務架構,,同時我也會在github上寫一個microservices的應用框架(地址會在后續(xù)文章給出)。

這篇文章主要講述了部署一個微服務架構的應用有哪些可選方案,。

翻譯和整理自:

  • http:///patterns/deployment/single-service-per-host.html
  • http:///patterns/deployment/multiple-services-per-host.html
  • http:///patterns/deployment/service-per-vm.html
  • http:///patterns/deployment/service-per-container.html
  • http:///patterns/deployment/service-deployment-platform.html
  • http:///patterns/deployment/serverless-deployment.html

一,、單主機單服務


在一臺主機上部署一個服務。

這種方法的優(yōu)點包括:

  • service實例互相分離
  • 沒有資源請求沖突或者依賴版本沖突的風險
  • 一個service實例只能消耗最多一臺主機的資源
  • 很容易監(jiān)控,、管理,、重新部署

缺點:

  • 資源利用率可能不如單主機多服務高


二、單主機多個服務


在一臺主機(物理機或者虛擬機)上運行多個不同服務的實例,。

有幾種不同的方法來把一個服務部署在一臺共享的主機上,,包括:

  • 把每個service實例部署成JVM實例,。
  • 把多個service實例部署在同一個JVM里。

這種模式的優(yōu)點:

  • 比單主機單服務有更好的資源利用

這種模式的缺點:

  • 有資源需求沖突的風險
  • 有依賴版本沖突的風險
  • 難以限制一個service實例的資源使用
  • 難以監(jiān)控每個服務的資源使用情況

三,、單虛擬機單服務


把服務打包成一個虛擬機的Image,,然后部署在一個單獨的VM上。

這種模式的優(yōu)點:

  • 可以直接通過提高虛擬機個數(shù)的方式來做scale,,Amazon Autoscaling Groups(譯者注: 不了解的可以去看看AWS的一些基礎知識)甚至可以根據負載做自動化的調節(jié)
  • VM包含了構建這個service的所有技術細節(jié),,所有的service都用同樣的方法來開始和停止
  • 每個service實例是分離的
  • VM會限制一個service實例所消耗的CPU和內存資源
  • 例如AWS這樣的IaaS解決方案提供了一個成熟的、有很多特性的基礎設置來部署和管理虛擬機,,比如說,,Elastic Load Balancer、Autoscaling Groups

這種模式的缺點:

  • 構建一個VM的Image比較花時間

四,、每個容器一個Service


(譯者注:不了解容器的,,可以去看看我之前的Docker系列文章: http://blog.csdn.net/u012422829/article/details/54930799。 我工作的項目中也是這樣部署的,。)

把service打包成(Docker)容器的Image,, 然后把service實例部署成一個容器。現(xiàn)在有幾個Docker集群管理的解決方案,, 包括 Kubernetes(k8s),、 Marathon/Mesos、 Amazon EC2 Container Service(ECS),。


這種模式的優(yōu)點:

  • 可以直接通過改變容器實例的方式來做scale
  • 容器包含了構建這個service的所有技術細節(jié),,所有的service都用同樣的方法來開始和停止
  • 每個service實例是分離的
  • 容器會限制一個service實例所消耗的CPU和內存資源
  • Container構建和啟動很快。

這種模式的缺點:

  • 部署容器的基礎設置不如部署VM的基礎設置豐富,。

五,、Serverless架構的方式


使用一個隱藏了任務服務器的概念的部署的基礎設施,。這個基礎設施拿到你的service的代碼,,然后運行,。為了使用這種方式部署,你需要打包你的代碼,,把它上傳到基礎設施,,然后描述你想要的性能指標,。

這個部署的基礎設施由公有云提供商來操作,。它一般使用容器或者虛擬機的方式來分離服務,,但是這些細節(jié)你并不需要知道,。你不需要負責管理操作系統(tǒng)等等?,F(xiàn)在有一些不同的serverless部署的環(huán)境: AWS Lambda,、Google Cloud Functions,、 Azure Functions,, 他們提供了類似的功能,,但是AWS有最豐富的功能,。

一個AWS Lambda function是一個無狀態(tài)的組件,,它被調用去處理事件。 要創(chuàng)建一個AWS Lambda function,, 你需要把你的代碼打包成一個ZIP文件,然后上傳到AWS Lambda,。你同時還要指定這個處理事件的function的名字以及它的資源使用限制,。

當事件產生的時候,,AWS Lambda找到你的function的空閑實例,,然后調用處理的function,。 

有四種方法來調用一個Lambda function。

一種選擇是你配置你的Lambda function,,使它對別的AWS service(比如S3, DynamoDB)所產生的事件(比如S3 bucket上創(chuàng)建了一個新的object,、DynamoDB上有條數(shù)據被刪除等等)進行響應。

另一種方法是配置AWS Lambda Gateway,,把HTTP 請求路由到lambda function上。 AWS Gateway把一個HTTP請求轉化成一個事件對象,, 然后調用lambda function,,然后根據lambda function的返回值生成HTTP響應,。

你也可以通過AWS Lambda Web Service API明確調用Lambda function,。你調用Lambda function的應用提供一個JSON對象,,傳給Lambda function,, web service會把結果返回給你,。

第四種方法是使用CRON的方式周期性調用。比如說,,你可以告訴AWS每5分鐘調用一次你的Lambda function,。


這種模式的優(yōu)點:

  • 不需要關心底層架構,只要關注代碼
  • 非常有彈性,,根據負載自動scale
  • 只要為請求數(shù)付錢,, 便宜

這種模式的缺點:

  • 這種架構比VM或者容器有更多的限制。比如說,,AWS只支持很少幾種語言,,只適用于部署響應請求的無狀態(tài)應用,,你不能部署一個長期運行的有狀態(tài)的應用如數(shù)據庫,、消息代理
  • 輸入源有限制。比如說AWS Lambda不能訂閱一個像RabbitMQ那樣的消息代理
  • 應用必須快速啟動,。Serverless 架構不適用于花很多時間啟動的service
  • 高延遲的風險,。基礎設施在為你的function啟動一個instance,、function 初始化的時間可能比較長,。當突發(fā)的、大量請求進來的時候,,一開始會比較緩慢,。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多