Service Fabric基本概念: Node, Application, Service, Partition/Replicas

做者:張鼎鬆 (Dingsong Zhang) @ Microsoft服務器

 

在上一節中,爲你們簡明扼要的介紹了微軟針對現代分佈式系統在Azure上實現的相關服務組件。緊接上文內容,本節將爲你們介紹Azure Service Fabric的基本概念及相關組件的工做機制, 包括Micro Service, Node type, Node等等。雖然名稱叫Azure Service Fabric但其可應用的平臺遠不止Azure平臺自己,咱們會在後續章節的使用場景中爲你們專門描述Service Fabric在各大平臺上的工做形式。網絡

Microsoft Azure Service Fabric是微軟開發的一套支撐高可用高伸縮雲服務的框架,其核心部分是一個分佈式系統平臺,用於構建可擴展的可靠應用。在便於封裝可部署代碼的同時,支持建立無狀態和有狀態的微服務,經過雲平臺來伸縮他們,來應對高複雜度、低延遲、數據密集的狀況。開發者和系統管理員能夠免於處理複雜的基礎設施問題,將精力更多地投入到所構建應用程序的實現上。架構

 

 

微服務Microserviceapp

在具體介紹Service Fabric以前,不得不先提一下微服務的思想。由於使用Service Fabric的開發過程就是微服務的設計開發過程。有了Service Fabric,您只須要考慮開發微服務的功能,而無需過多考慮部署後的伸縮性和可用性的問題,這些問題均可以交給Service Fabric來幫您實現。框架

微服務的思想就是將複雜單體式應用程序解耦成多個各個獨立的服務,在功能不變的狀況下,被分解出來的多個可管理的服務能夠經過約定的接口相互通訊。這種方法爲採用單體式編碼很難實現的功能提供了模塊化的解決方案。由於,單個服務能夠更易於開發、維護。這種架構方式使每一個單個服務均可以有專門的團隊來開發,每一個團隊能夠各自選擇本身擅長的開發技術,經過約定接口來實現相互通訊。每一個服務能夠獨立實現、測試、部署和升級,開發者再也不須要擔憂其餘服務部署對本服務的影響。AB測試加快了部署的速度,從而實現持續集成持續部署。全部微服務做爲一個總體爲用戶提供服務,同時各個微服務能夠根據自身對資源的需求獨立擴展,從而最大化服務器的資源利用率。分佈式

回到Service Fabric, 一個Service Fabric開發的應用程序由數個服務組成,每一個服務能夠做爲個體獨自修改、擴展和管理,同時能夠按照一個完整的應用程序來管理。Service fabric的設計目的就是用微服務的方式來簡化構建複雜應用的過程。模塊化

 

集羣Cluster微服務

集羣是一組經過網絡鏈接的虛擬或者物理主機,您的微服務就部署在集羣中,集羣的大小能夠擴展到上千臺主機。測試

 

節點Node編碼

集羣中的一臺機器或者VM稱爲Node, 每一個Node會被分配一個名稱(string字符串)。Node還有其餘一些屬性,好比位置屬性placement properties。能夠經過每臺機器或者VM都有一個自啓動Windows系統服務FabricHost.exe,它隨系統啓動後會執行另外兩個程序:Fabric.exe 和 FabricGateway.exe, 這兩個程序就組成了一個完整的Node。出於測試目的,有時單臺機器上也能夠經過運行多個Fabric.exe 和 FabricGateway.exe的實例來擁有多個Node。

一個集羣中的全部Node相互之間平等且能夠直接互相通訊。Node除了宿主在物理主機或VM中,還能夠宿主在基於Windows的Docker容器中、本地部署的服務器中、其餘公有云和私有云中,咱們會在後續Service Fabric的使用場景中爲你們詳細介紹這一內容。

 

 

應用程序Application:Application Type和Service Type

Service Fabric應用程序(Application)是一組服務(service)的集合,其中一個service是爲Application提供指定功能的單元。您將經過定義一個Application Type和對應的幾個Service Type來構建一個Service Fabric的Application. 當Application被部署到Service Fabric Cluster裏面時,這些類型會被相應地初始化成application實例和service實例。這裏相似咱們OO地思想。

Application Type和Named Application: Application Type包含一組Service Type的集合,對應上文中的Service Fabric應用程序(Application)是一組服務(service)的集合。 Application Type的name和version定義在ApplicationManifest.xml文件中。在部署的時候,ApplicationManifest.xml會被拷貝到Service Fabric的image store中。經過在Cluster中建立Named Application來初始化Application的實例。Named Application經過"fabric:/MyNamedApp"的形式來命名。

Service Type和Named Service: Service Type的name和version定義在ServiceManifest.xml文件中。當建立好一個Named Application後,就能夠建立Named service. 例如您在 "MyNamedApp" Named Application中建立一個 "MyDatabase" Named Service, Name Service被命名爲 "fabric:/MyNamedApp/MyDatabase".

 

 

 

分區Partitions和複製replicas

一個service能夠包含多個分區Partition,Service Fabric經過使用分區做爲擴展的機制來將工做分佈到不一樣的service實例上。

一個分區Partition能夠包含一個或者多個複製replicas。Service Fabric經過使用複製來實現可用性。一個分區能夠有一個主複製和多個從複製,多個複製之間的狀態能夠自動同步。當主複製出現錯誤時,其中一個從複製被自動提高爲主複製,以保證系統的可用性。而後將從複製的個數恢復到正常水平,保證足夠的從複製冗餘。

 

這部分概念若是使讀者有些難以理解,咱們將在下一節經過示例的方式來說解這些概念,便於你們理解。

相關文章
相關標籤/搜索