eShopOnContainers是一個簡化版的基于.NET Core和Docker等技術開發的面向微服務架構的參考應用。
該參考應用是一個簡化版的線上商城/電子商務微服務參考示例應用。
其包含基于浏覽器的Web應用、基于Xamarin的Android、IOS、Windows/UWP 移動應用,以及服務端應用。其中服務端包含多個自治微服務(每個都擁有自己的資料/ db),并且每個微服務都有不同的實作形式(簡單的CRUD與DDD / CQRS模式)。使用Http作為用戶端應用程式之間的通信協定。支援異步通信,使用Integration Events(內建事件)和Event Bus(事件總線)進行資料更新傳播。
一、簡介
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcugTO0ADO5QzM4ETL5AzMwQjMwATM3AjMxgTMwITL5kDOxIzLcJTM4EDMy8CX5kDOxIzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
其中包含的服務:
- Identity Micsroservice(身份微服務):身份認證和授權。SQL Server
- Catalog microservice(産品目錄微服務):産品資料的維護。SQL Server
- Ordering microservice(訂單微服務):訂單邏輯的處理。SQL Server
- Basket microservice(購物車微服務):購物車邏輯的處理。Redis
- Marketing microservice(市場營銷微服務):市場營銷邏輯的處理。MongoDB/CosmosDB 和SQL Serve
- Locations microservice (位置微服務):提供位置服務。MongoDB/CosmosDB 資料庫。
- [New] Payment microservice (支付微服務):處理支付邏輯。
二、技術儲備
- 語言:.net Core、C#
- 平台:Docker、Xamarin、K8S
- 元件:RabbitMQ、IdentityServer4、Polly、Redis、MongoDb、Api Gateway、MsSqlServer
- 模式:EventBus、CQRS、CAP
- 管理:CI/CD
三、整體架構
該架構主要包括兩個部分:用戶端應用和Docker主機中運作的服務端應用。
- 用戶端應用:基于浏覽器的Web應用;基于Xamarin開發的Android、IOS、UWP移動應用。
- 服務端應用:部署在在Doker主機的系列微服務。
四、服務架構
以上是微軟展示的四種services,你還可以使用不同的架構,不同的資料庫完成你的微服務搭建,這就是微服務為何如此流行的原因了。我可以利用任何語言,任何資料庫都能搭建我的服務,無論我的調用端使用的何種語言,何種系統。
主要有兩種架構模式
- 基于資料驅動的CURD微服務
- 基于DDD的微服務
而實際上,軟體架構師和開發人員會使用不同的架構模式,比如(混合架構風格和架構模式):
- 簡單的 CRUD,單層
- 傳統N層
- DDD N層
- 整潔架構
- 指令和查詢分離(CQRS)
- 事件驅動架構
四、通信架構:
- 用戶端與微服務通過API網關通信:用于查詢和接收來自用戶端應用程式的更新或事務指令。
- 異步事件通信:通過事件總線傳播來自微服務的更新或與外部應用程式內建。事件總線可使用任何消息代理架構技術如 RabbitMQ來實作。