Azure Service Fabric Mesh:一個構建任務關鍵型微服務的平臺

weixin_33961829發表於2018-12-24

本文要點

  • Azure Service Fabric Mesh(目前處於預覽階段)是一個完全託管的服務,它使你可以使用“無伺服器”方法構建、部署和管理由執行在容器中的多語言服務組成的應用程式。
  • Azure Service Fabric Mesh通過使用Envoy Proxy構建的軟體定義網路(SDN)功能提供了智慧訊息路由,使得服務發現和微服務之間的路由成為可能。
  • Azure Service Fabric有三項公共服務:Service Fabric Azure叢集服務、Service Fabric獨立服務和Azure Service Fabric Mesh服務。
  • Service Fabric Mesh主要是一個應用程式平臺,它首先從終端工程師那裡抽象出了業務流程,然後新增了可以供你在應用程式中使用的智慧訊息傳遞路由和儲存。
  • Service Fabric 平臺有一個內建的、高可用的、低延遲的記憶體內持久化狀態儲存。你可以通過程式設計式資料結構(Dictionary和Queues)使用這個儲存,或作為附加的卷磁碟使用。

今年早些時候,Azure釋出了Service Fabric Mesh的預覽版,這個平臺面向的是那些不希望承擔執行底層編排平臺操作責任的微服務開發人員。Chacko Daniel是微軟的首席技術經理,同時也是Service Fabric Azure叢集服務和Azure Service Fabric Mesh服務的所有者。最近,InfoQ對他進行了採訪,探討了這項服務與現有的平臺即服務(PaaS)和容器基礎設施即服務(CIaaS)解決方案(如Cloud Foundry何Kubernetes)的關係。

InfoQ:歡迎來到InfoQ!您能向我們的讀者簡單地介紹下自己嗎?

Chacko:我叫Chacko Daniel,是微軟Azure超大規模計算團隊的首席專案經理。我已在Azure Service Fabric團隊工作了10年。我是平臺執行時和Service Fabric Clusters與Service Fabric Mesh兩項Azure服務的服務所有者。

InfoQ:您能否為不太熟悉雲技術的讀者解釋一下Azure Service Fabric是什麼?

Chacko:AzureAzure Service Fabric是一個分散式計算平臺,它使構建、部署和操作始終處於開啟狀態的任務關鍵型微服務應用程式(容器化和非容器化)變得更容易。開發人員可以專注於構建微服務,而Service Fabric平臺解決了諸如應用程式的生命週期管理、編排、可用性和可伸縮性等難題。
該平臺還具有內建的、高可用的、低延遲的持久化記憶體內狀態儲存。開發人員可以通過程式設計式資料結構(Dictionary和Queues)使用這個儲存,或作為附加的卷磁碟使用。
Azure Service Fabric是開源的,可以在Windows和Linux上執行,你既可以在本地使用它,也可以在雲中使用它——這是一個很棒的混合解決方案,可以支援要求很高的“原生雲”應用程式。
Azure Service Fabric有三項公共服務:Service Fabric Azure叢集服務、Service Fabric獨立服務和Azure Service Fabric Mesh服務。

\"\"

Service Fabric不僅可以供大規模的微軟服務使用,如Azure SQL DB、Intune、Azure Cosmos DB、Azure Event Hubs和Bing,也可以供成千上萬的企業客戶使用,如Citrix Systems、Alaska Airlines、Honeywell、BMW和Societe Generale以及SI(系統整合商)\u0026amp;ISV(獨立軟體供應商,如Accenture和OSISoft)。

InfoQ:新的Azure Service Fabric Mesh與Azure Service Fabric Clusters有何不同?

Chacko:我們在Azure中提供了兩種Service Fabric服務——Service Fabric Clusters和Service Fabric Mesh(預覽版),用於在Azure中部署和管理應用程式。
Service Fabric Cluster為你提供了一個可靠的、可伸縮的VM叢集,這些VM執行著Service Fabric執行時,你可以通過一個高可用的叢集端點向其中部署和管理應用程式/服務(容器化或非容器化)。Service Fabric執行時基於它與底層Azure基礎設施的整合來做出服務配置決策,保證它們的可靠性。
在使用Azure Service Fabric Clusters時,你不僅需要以管理員身份訪問叢集,還需要訪問組成叢集的VM。你可以選擇使用VM SKU來滿足你的要求,你可以決定要根據哪些網路安全規則和自動伸縮規則來伸縮叢集。你可以設定Service Fabric執行時和VM作業系統自動升級。藉助這個服務,你只需為使用的VM、儲存和網路資源付費,Service Fabric執行時實際上是免費的。它非常適合需要完全控制基礎設施的客戶/ISV。
Azure Service Fabric Mesh目前處於預覽階段,它是一個完全託管的服務,它使你可以使用“無伺服器”方法構建、部署和管理由執行在容器中的多語言服務(例如任何語言、任何作業系統)組成的應用程式。開發人員只需要指定他/她的應用程式/服務所需的資源,如容器的數量、容器的大小、網路屬性、自動伸縮規則等,系統負責提供和管理所需的基礎設施。這種方法使得開發人員可以只關注應用程式/服務,而不是基礎設施。
Service Fabric Mesh還通過軟體定義網路(SDN)功能(基於Envoy Proxy構建)提供智慧訊息路由,簡化了服務發現和微服務之間的路由。在即將到來的預覽更新中,我們計劃啟用其他SDN功能,如斷路器、重試、SSL終止、藍/綠部署以及使用託管服務標識簡化安全。這裡,你可以使用我前面提到的由Service Fabric提供的有狀態功能。這裡有一個關於Service Fabric Mesh的2分鐘的視訊,它彙總介紹了這裡的部分資訊。

InfoQ:Azure Service Fabric Mesh與一些讀者可能熟悉的技術,例如Cloud Foundry、Kubernetes或Docker(通過Docker Compose配置),是什麼關係?

Chacko:所有這些技術都非常類似,它們都編排或部署容器。Azure支援你提到的所有平臺,所以你可以使用自己喜歡的技術棧。
至於其他Service Fabric服務,藉助於Service Fabric Mesh,我們將繼續致力於成為一個應用程式平臺,首先抽象出所需的容器編排,並新增可以在應用程式中使用的智慧訊息傳遞路由和儲存。你可以使用一組宣告性策略部署和管理自己的應用程式,這些策略包括你需要的容量和網路、你希望如何伸縮、路由訊息、管理證書,平臺不僅將編排容器,還將負責管理基礎設施並執行它。
在使用Service Fabric Mesh時,除非你檢視平臺日誌,否則你甚至不知道Service Fabric是為服務提供支撐的底層平臺,就像你不知道Service Fabric在Azure資料庫和其他服務中使用一樣。它使開發人員不必考慮編排器和其他低層管理服務。

InfoQ:您能介紹下Service Fabric平臺的可伸縮性嗎

Chacko:儘管我們在內部執行了大量的測試,使用人工工作負載在內部對服務施加壓力,但是,我將從實證方面來回答這個問題。大多數流行的Azure服務都使用了Service Fabric平臺,比如Cosmos DB、IOT Hub、Event Hub、Azure SQL DB、Intune、Event Grid。每個Azure SQLDB事務在Service Fabric中都是一個複製操作,Azure中有數百萬個SQL DB。每個CosmosDB寫也是一個類似的複製操作,EventHub使用Service Fabric每天處理2萬億條訊息,諸如此類。大多數人/公司都太可能需要超過Azure中這些使用數百萬核的大型服務的規模。
該平臺不僅具有高度可伸縮性,而且還提供零停機應用程式滾動升級、安全性、內建的健康監控、跨地域叢集的能力等等。*這裡*有一段Mark Russinovich的演講視訊,他是Azure的CTO,他展示了Service Fabric的伸縮和部署速度。在不到兩分鐘的時間裡,他在3500個節點的Linux叢集上部署和執行了100萬個容器。
Service Fabric是一項每天都要經過實戰測試的技術。

InfoQ:服務網格是當前一個熱門的新興話題嗎?名稱有點類似,那麼Azure Service Fabric Mesh與Linkerd、Istio和Cilium等服務網格技術是什麼關係呢?

Chacko:服務網格是關於連線服務和實現網路原語的,包括服務發現和快速、安全、可靠的服務到服務通訊。Linkerd、Envoy和Cilium是網路代理,它們可以作為服務網格部署在Kubernetes或Service Fabric之類的編排器上。Istio等專案則允許你連線、保護、控制和觀察服務,並使用Envoy提供了第7層(L7)網路功能。
Azure Service Fabric Mesh還允許你連線、部署、保護和管理服務,並在底層使用Envoy為Windows和Linux容器提供L7功能。然而,它不僅僅是一個服務網格——它是一個構建、部署、擴充套件和操作基於微服務的應用程式的應用程式平臺。

InfoQ:Azure平臺提供了一系列部署選項——Azure Service Fabric Mesh的主要用例是什麼?我為什麼要選擇在這裡構建和部署,而不是另一個Azure產品上,比如AKS或Azure Functions?

Chacko:Azure提供了多種計算選項來滿足不同的客戶用例。最終,我們希望客戶能夠成功地使用他們的首選技術棧、體系結構和/或已有的投資。
如果你正在為事件驅動的場景尋找一種無伺服器的計算體驗,那麼鑑於其程式設計模型(基於觸發器來響應發生在其他服務中的活動,基於繫結來方便地連線到不同的服務),我會推薦Azure Functions。
同樣,如果你來自Linux生態系統,並且正在構建容器化的應用程式,那麼你將使用Azure Kubernetes Service(AKS)。另外,我們還發現使用Red Hat Linux的客戶正在遷移到Azure上的OpenShift。
如果你想要Windows/.Net或微服務, Service Fabric是一個很好的選擇,Service Fabric Mesh提供了無伺服器的全託管風格,讓你可以將任何容器化的工作負載、Linux或Windows部署到Azure上。雖然Service Fabric可以用作容器編排器,但是它的優點在於它的程式設計模型,而且它是專門為在Azure中大規模構建、部署和操作微服務應用程式而設計的。
我們從2018年7月起就開始預覽Azure Service Fabric Mesh,我們看到客戶正在利用這種“無伺服器”服務,現代化/升級他們當前的應用程式(Windows或Linux),並把它們遷移到Azure上,或者將新的多語言應用程式部署到Azure。

InfoQ:非常感謝您今天抽時間和我們交流。您還有什麼想和InfoQ的讀者分享的嗎?

Chacko:感謝你們提供機會讓我們分享我們團隊的工作細節。Service Fabric Mesh的旅程剛剛開始,我們需要你們的幫助。請在這裡試用Service Fabric Mesh預覽版,並提供反饋。
可以在這裡與我們分享你的想法、問題和反饋。還有,如果你有問題想問我的話,請給我發推特@chackod

關於作者

Chacko Daniel是一名產品負責人,在構建企業級分散式計算平臺和服務的產品/服務開發方面有著豐富的經驗。他目前在微軟擔任首席技術PM,是平臺執行時和兩項Azure服務的所有者——Service Fabric Azure Cluster服務和Azure Service Fabric Mesh服務。

檢視英文原文:Exploring Azure Service Fabric Mesh: A Platform for Building Mission Critical Microservices

相關文章