eShopOnContainers是一个简化版的基于.NET Core和Docker等技术开发的面向微服务架构的参考应用。数据库
该参考应用是一个简化版的在线商城/电子商务微服务参考示例应用。浏览器
其包含基于浏览器的Web应用、基于Xamarin的Android、IOS、Windows/UWP 移动应用,以及服务端应用。其中服务端包含多个自治微服务(每一个都拥有本身的数据/ db),而且每一个微服务都有不一样的实现形式(简单的CRUD与DDD / CQRS模式)。使用Http做为客户端应用程序之间的通讯协议。支持异步通讯,使用Integration Events(集成事件)和Event Bus(事件总线)进行数据更新传播。架构
Identity Micsroservice(身份微服务):身份认证和受权。SQL Server框架
Catalog microservice(产品目录微服务):产品资料的维护。SQL Server异步
Ordering microservice(订单微服务):订单逻辑的处理。SQL Server微服务
Basket microservice(购物车微服务):购物车逻辑的处理。Redis.net
Marketing microservice(市场营销微服务):市场营销逻辑的处理。MongoDB/CosmosDB 和SQL Serve代理
Locations microservice (位置微服务):提供位置服务。MongoDB/CosmosDB 数据库。blog
[New] Payment microservice (支付微服务):处理支付逻辑。事件
该架构主要包括两个部分:客户端应用和Docker主机中运行的服务端应用。
客户端应用:基于浏览器的Web应用;基于Xamarin开发的Android、IOS、UWP移动应用。
服务端应用:部署在在Doker主机的系列微服务。
以上是微软展现的四种services,你还可使用不一样的框架,不一样的数据库完成你的微服务搭建,这就是微服务为什么如此流行的缘由了。我能够利用任何语言,任何数据库都能搭建个人服务,不管个人调用端使用的何种语言,何种系统。
基于数据驱动的CURD微服务
基于DDD的微服务
简单的 CRUD,单层
传统N层
DDD N层
整洁架构
命令和查询分离(CQRS)
事件驱动架构
客户端与微服务经过API网关通讯:用于查询和接收来自客户端应用程序的更新或事务命令。
异步事件通讯:经过事件总线传播来自微服务的更新或与外部应用程序集成。事件总线可以使用任何消息代理架构技术如 RabbitMQ来实现。