架構師之路-大話微服務架構之微軟Service Fabric專題(一)

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

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

架構師之路-大話微服務架構之微軟Service Fabric專題(一)

微服務Microservice

在具體介紹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的使用場景中為大家詳細介紹這一內容。

架構師之路-大話微服務架構之微軟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".

架構師之路-大話微服務架構之微軟Service Fabric專題(一)

分區Partitions和複製replicas

一個service可以包含多個分區Partition,Service Fabric通過使用分區作為擴展的機制來將工作分佈到不同的service實例上。

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

這部分概念如果使讀者有些難以理解,我們將在下一節通過示例的方式來講解這些概念,便於大家理解。


分享到:


相關文章: