[转]eShopOnContainers 看微服务 ①:总体概览
本文转自:https://www.cnblogs.com/tianyamoon/p/10081177.html
一、简介
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
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来实现。
[转]eShopOnContainers 看微服务 ①:总体概览的更多相关文章
- eShopOnContainers 看微服务 ①:总体概览
一.简介 eShopOnContainers是一个简化版的基于.NET Core和Docker等技术开发的面向微服务架构的参考应用. 该参考应用是一个简化版的在线商城/电子商务微服务参考示例应用. 其 ...
- eShopOnContainers 看微服务⑤:消息通信
1.消息通信 传统的单体应用,组件间的调用都是使用代码级的方法函数.比如用户登录自动签到,增加积分.我们可以在登录函数调用积分模块的某个函数,为了解耦我们使用以来注入并放弃new Class()这种方 ...
- eShopOnContainers 看微服务④:Catalog Service
服务简介 Catalog service(目录服务)维护着所有产品信息,包括库存.价格.所以该微服务的核心业务为: 产品信息的维护 库存的更新 价格的维护 架构模式 先看代码结构(下图). 主要依赖: ...
- eShopOnContainers 看微服务③:Identity Service
引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠. 在微服务场景中,身份认证通常统一处理.一般有两 ...
- eShopOnContainers 看微服务 ②:配置 启动
一.什么是docker Docker 是一个开源项目,通过把应用程序打包为可移植的.自给自足的容器(可以运行在云端或本地)的方式,实现应用程序的自动化部署. 使用 Docker 的时候,需要创建一个应 ...
- Spring Cloud微服务技术概览
Spring Cloud 是一系列框架的有序集合.它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都 ...
- 微服务框架概览之 Netty
Netty 是什么 Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序 Netty 架构图 为什么选择Netty 通过对Netty的分析,我 ...
- .NET Core 微服务
github 上的资源: EshopOnContainers AiurSoft : 微服务框架 Server酱:是一款「程序员」和「服务器」之间的通信软件. http://sc.ftqq.com/3. ...
- .NET Core 实践一:微服务架构的优点(转)
微服务现在已经是各种互联网应用首选的云架构组件,无论是 BAT 还是 滴滴.美团 ,微服务都是重要的一环. 相对于微服务,传统应用架构有以下缺点: 1. 业务代码混杂,团队成员职责边界不清,团队协作体 ...
随机推荐
- Python爬虫(1):基础知识
爬虫基础知识 一.什么是爬虫? 向网站发起请求,获取资源后分析并提取有用数据的程序. 二.爬虫的基本流程 1.发起请求 2.获取内容 3.解析内容 4.保存数据 三.Request和Response ...
- Linux服务器之间进行文件目录映射/挂载(总结)
Linux服务器之间进行文件目录映射/挂载(总结) 需要实现的功能为:将192.168.10.10服务器下的 /home/要映射的目录/ ,映射为192.168.10.90服务器下的 /home/被映 ...
- libguestfs手册(3): virt命令
guestmount root# guestmount -a ubuntutest1.img -m /dev/sda1 ubuntutestp1 root# cd ubuntutestp1/root: ...
- Android 混淆那些事儿
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/WmJyiA3fDNriw5qXuoA9MA 作者:l ...
- 【分享】【原创开源应用第4期】给ili9488,RA8875类显示屏的emWin底层增加DMA加速方案
说明:1.emWin底层中最重要的一个优化就是16bpp绘制,特此为其增加DMA加速,已经支持RA8875和ili9488.2.使用中务必将emWin任务设置为除了空闲任务,统计任务以外的最低优先级, ...
- Python 爬虫入门(二)——爬取妹子图
Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...
- SDL 开发实战(六): 使用 SDL 实现 YUV 播放器
前面铺垫了这么多,现在终于进入核心的主题了,那就是使用SDL播放视频,本节我们将使用SDL播放YUV视频,也就是做一个YUV播放器. 下面说明一下使用SDL播放YUV视频的基本流程,主要分为两大部分: ...
- [Swift]LeetCode907. 子数组的最小值之和 | Sum of Subarray Minimums
Given an array of integers A, find the sum of min(B), where B ranges over every (contiguous) subarra ...
- [Swift]LeetCode964. 表示数字的最少运算符 | Least Operators to Express Number
Given a single positive integer x, we will write an expression of the form x (op1) x (op2) x (op3) x ...
- 使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)
本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文 ...