在微服務大行其道的今天,Java陣營的Spring Boot、Spring Cloud、Dubbo微服務框架可謂是風水水起,也不得不感慨Java的生態圈的火爆。反觀國內.NET陣營,微服務卻不慍不火。git
微軟在其官網的架構體系上推出了eShopOnContainers微服務參考應用,用來推廣基於.NET Core的微服務架構。我也將基於此來學習研究微服務,並分享本身的所學所得,造成一個系列,爲.NET社區微服務的推廣略盡綿薄之力。github
Easy to get started sample reference microservice and container based application. Cross-platform on Linux and Windows Docker Containers, powered by .NET Core 2.1, Docker engine and optionally Azure, Kubernetes or Service Fabric. Supports Visual Studio 2017, VS for Mac and CLI based environments with Docker CLI, dotnet CLI, VS Code or any other...數據庫
簡單來講:eShopOnContainers是一個簡化版的基於.NET Core和Docker等技術開發的面向微服務架構的參考應用。設計模式
該參考應用是一個簡化版的在線商城/電子商務應用。瀏覽器
雖然是簡化版的微服務參考示例,但對沒接觸過Docker、DDD、微服務的同窗來講,並不簡單。其中不只包含了不少術語、設計模式、架構風格,還使用了一系列的常見技術(RabbitMQ、EventBus、IdentityServer四、Polly、Api Gateway、Redis、CQRS、CAP、CI/CD等),還有一些相關工具(Docker、K8S等)。因此這將是一個難啃的骨頭。架構
eShopOnContainers做爲跨平臺的微服務架構,得益於.NET Core可以在Linux或Windows容器上運行。其包含基於瀏覽器的Web應用、基於Xamarin的Android、IOS、Windows/UWP 移動應用,以及服務端應用。其中服務端包含多個自治微服務(每一個都擁有本身的數據/ db),而且每一個微服務都有不一樣的實現形式(簡單的CRUD與DDD / CQRS模式)。使用Http做爲客戶端應用程序之間的通訊協議。支持異步通訊,使用Integration Events(集成事件)和Event Bus(事件總線)進行數據更新傳播。app
一圖勝千言,從上圖可知,該架構主要包括兩個部分:客戶端應用和Docker主機中運行的服務端應用。框架
其中服務端主要包括六大微服務:異步
另外從上圖咱們還能夠清晰看出其通訊架構:微服務
上圖列舉的四個微服務主要使用了兩種架構模式:
而實際上,軟件架構師和開發人員會使用不一樣的架構模式,好比(混合架構風格和架構模式):
在由多個微服務組成的應用程序中,能夠用不一樣方式實現每一個微服務。每一個微服務可能具備不一樣架構模式,並根據應用程序的性質、業務需求和優先級使用不一樣的語言和數據庫。
這也就是微服務的靈活性與複雜性的源頭。
對於微服務我也只是初步瞭解,該項目也將是我學習微服務的起點。因此我將以小白的視角(不免有所紕漏,請你們積極交流指正),儘可能以通俗易懂的語言來梳理每個知識點,並造成eShopOnContainers知多少系列,與你們共同窗習進步。該系列會首發在個人我的訂閱號『微服務知多少』上,請掃描下文二維碼,關注更新!