[转]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. 业务代码混杂,团队成员职责边界不清,团队协作体 ...
随机推荐
- UI自动化项目搭建(selenium+testng+java+maven)
一 工具准备 selenium chormDriver 二 环境准备 三搭建步骤
- python语法_列表生成器_生成器_迭代器_异常捕获
列表生成式 a = [x for x in range(10)] print(a) x 可进行操作 a = [x*2 for x in range(10)] print(a) x甚至可以为函数, de ...
- redhat 6 红帽6 Linux 网络配置
[root@ORAMYSQL ~]# cd /etc/sysconfig/network-scripts/ 切换到网卡配置目录 [root@ORAMYSQL network-scripts]# vi ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- victory-native的使用
Victory用于构建交互数据可视化的可组合React组件的生态系统 想写又不想写,真尴尬...
- [运维工具]linux下远程桌面rdesktop安装和使用
依然是解压 configure make make install 这些步骤 rdesktop -f 16 192.168.16.90 -f是全屏,退出全屏是CRTL+ALT+ENTER 记录一个li ...
- Ubuntu 16.04下sublime text3安装
安装方法 在确保Ubuntu更新了国内镜像源的前提下,使用ppa安装: sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt- ...
- PTA第二次作业
pta 6-7题 删除字符串中数字字符 1.设计思路 (1)第一步:观察题意了解各个参数与所需函数在题目中的意义: 第二步:设计算法编写函数,让函数的功能实现题目中所需的功能: 第三步:运行程序检测是 ...
- S-CMS企业建站v3几处SQL注入
0x01 前言 有段时间没有发文章了,主要没挖到比较有意思的漏洞点.然后看最近爆了很多关于S-CMS的漏洞,下载了源码简单挖了一下然后给大家分享一下. 0x02 目录 Wap_index.php sq ...
- 吴恩达机器学习笔记53-高斯分布的算法(Algorithm of Gaussian Distribution)
如何应用高斯分布开发异常检测算法呢? 异常检测算法: 对于给定的数据集