微服務體系結構是一種將服務器應用程序構建爲一組小型服務的方法,每一個服務都按本身的進程運行,並經過 HTTP 和 WebSocket 等協議相互通訊。每一個微服務都在特定的界定上下文(每服務)中實現特定的端到端域和業務功能,而且必須由自動機制進行自主開發和獨立部署。最後,每一個服務都應該擁有本身的相關域數據模型和域邏輯,並能使用不一樣的數據存儲技術(SQL 和非 SQL),對每一個微服務使用不一樣的編程語言。web
爲何要使用微服務? 一言以蔽之,就是由於靈活性。從長遠來看,微服務可以將應用程序設計爲基於許多可獨立部署且能制定具體發佈規劃的服務,從而能夠在複雜的可高度擴展大型系統中實現極高的可維護性。 數據庫
微服務的另一大優點是,能夠獨立擴展。您能夠擴展特定的微服務,而無需一次性擴展龐大的應用程序塊總體。這樣一來,能夠單獨擴展須要更多處理能力或網絡帶寬以支撐需求的功能區域,而不用擴展應用程序中實際並不須要更多處理能力或網絡帶寬的其餘區域。 編程
經過構建精細的微服務應用程序,您能夠持續集成和開發,並能加速在應用程序中實現新功能。經過精細分解應用程序,您還能夠單獨運行和測試微服務,並能在保持微服務之間的嚴格協定的同時獨立發展微服務。只要您不破壞協定或接口,就能夠在後臺更改任何微服務實現,並能添加新功能,而不破壞其餘依賴微服務。 後端
使用微服務方法,根本宗旨就是藉助靈活更改和快速迭代實現高效率,由於您能夠更改複雜的可擴展大型應用程序的特定一小部分。 緩存
這種方法遵循的一項重要規則是,每一個微服務都必須擁有本身的域數據和邏輯(在自治生命週期內),且每一個微服務都必須獨立部署。這實際上與完整的應用程序擁有本身的邏輯和數據別無二致。 服務器
也就是說,使用此方法,域的概念模型因子系統或微服務而異。以企業應用程序爲例,其中客戶關係管理 (CRM) 應用程序、交易購買子系統和客戶支持子系統各自調用惟一客戶實體屬性和數據,並採用不一樣的界定上下文。 網絡
此原則與 DDD 中的原則相似,即每一個界定上下文(可與子系統/服務相比的模式)必須擁有本身的域模型(數據和邏輯)。每一個 DDD 界定上下文均與不一樣的微服務相關聯。 app
另外一方面,許多應用程序中使用的傳統(或總體)方法是對整個應用程序及其全部內部子系統使用一個集中數據庫(一般是規範化 SQL 數據庫),如圖 所示。這種方法起初看來比較簡單,彷佛可以在不一樣的子系統中重複使用實體,從而保持全部對象的一致性。但實際上,您最終會獲得爲許多不一樣的子系統提供服務的大型表格,其中包括大多數狀況下並不須要的屬性和列。至關於在進行短途徒步旅行、一天自駕遊和學習地理知識時使用同一張天然地圖。 編程語言
如前所述,每一個微服務都必須擁有本身的域模型。對於無狀態微服務,數據庫是外部的,並採用 SQL Server 等關係數據庫選項,或 MongoDB 等 NoSQL 選項。進一步探究發現,服務自己能夠是有狀態的,也就是說數據駐留在同一微服務中。此類數據不只能夠存在於同一服務器中,還能夠存在於同一微服務進程中、內存中、硬盤驅動器中,並能複製到其餘節點。 分佈式
無狀態是很是有效的方法,比有狀態微服務更易於實現,由於無狀態相似於傳統的已知模式。不過,無狀態微服務會致使進程和數據源之間出現延遲,同時還會在經過其餘緩存和隊列提升性能時呈現更多移動對象。結果就是,您最終會獲得包含許多層級的複雜體系結構。
另外一方面,有狀態微服務在高級方案中脫穎而出,由於域邏輯和數據之間沒有延遲。繁重的數據處理、遊戲後端、數據庫即服務和其餘低延遲方案都受益於有狀態服務,由於它能啓用本地狀態以提升訪問速度。
缺點是, 有狀態服務會增長複雜性,加大了擴展難度。對於跨有狀態微服務副本的數據複製、數據分區等問題,必須實施一般在外部數據庫邊界內實現的功能。而這正是 Service Fabric 最有幫助的一個地方,即簡化有狀態微服務的開發和生命週期。
微服務方法的任何優勢都伴隨着缺點。若是您親自操做,則會發現分佈式計算和複雜的微服務部署很難管理。Service Fabric 提供了一種體系,方便您以卓有成效的方式建立、部署、運行和管理微服務。
什麼是 Service Fabric? 它是一種分佈式系統平臺,用於構建面向雲的可高度擴展且易於管理的可靠應用程序。Service Fabric 可應對開發和管理雲應用程序的巨大挑戰。經過使用 Service Fabric,開發者和管理員無需解決複雜的基礎結構問題,只需專一於實現要求很是高的任務關鍵型工做負載便可,由於他們知道應用程序既可擴展,又可管理,並且還十分可靠。Service Fabric 表明 Microsoft 的下一代中間件平臺,用於構建和管理這些企業級雲擴展服務。
Service Fabric 是一種通用的部署環境;您能夠部署基於任意語言(Microsoft .NET Framework、Node.js、Java 和 C++)或數據庫運行時(如 MongoDB)的全部可執行文件。
學習Azure Service Fabric,首先須要搭建學習的環境,https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started/ 這是微軟官方的入門文檔,咱們下面是在Win10/vs2015上的環境搭建。
構建和運行Azure Service Fabric應用程序,須要在開發機器上安裝Service Fabric sdk和工具,也須要激活執行SDK裏的PowerShell腳本。
安裝運行時,SDK和開發工具,經過WPI 工具提供三個配置選項,咱們選擇 Install the Service Fabric runtime, SDK, and tools for Visual Studio 2015:
安裝完成後再Visual Studio 的 Cloud 下就有了Service Fabric 的應用程序模板
激活PowerShell 腳本執行
Service Fabric 使用PowerShell 腳原本建立本地開發集羣和使用Visual Studio部署應用,Windows 默認並無激活執行PowerShell腳本的執行,因此首先須要修改PowerShell的執行策略,使用管理員帳號打開PowerShell ,執行下面的命令:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUse