在微服务大行其道的今天,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知多少系列,与你们共同窗习进步。该系列会首发在个人我的订阅号『微服务知多少』上,请扫描下文二维码,关注更新!