eShopOnContainers 看微服务 ①:总体概览

一、简介

640?wx_fmt=png

 

eShopOnContainers是一个简化版的基于.NET Core和Docker等技术开发的面向微服务架构的参考应用

该参考应用是一个简化版的在线商城/电子商务微服务参考示例应用

其包含基于浏览器的Web应用、基于Xamarin的Android、IOS、Windows/UWP 移动应用,以及服务端应用。其中服务端包含多个自治微服务(每个都拥有自己的数据/ db),并且每个微服务都有不同的实现形式(简单的CRUD与DDD / CQRS模式)。使用Http作为客户端应用程序之间的通信协议。支持异步通信,使用Integration Events(集成事件)和Event Bus(事件总线)进行数据更新传播。

其中包含的服务:

  1. Identity Micsroservice(身份微服务):身份认证和授权。SQL Server

  2. Catalog microservice(产品目录微服务):产品资料的维护。SQL Server

  3. Ordering microservice(订单微服务):订单逻辑的处理。SQL Server

  4. Basket microservice(购物车微服务):购物车逻辑的处理。Redis

  5. Marketing microservice(市场营销微服务):市场营销逻辑的处理。MongoDB/CosmosDB 和SQL Serve

  6. Locations microservice (位置微服务):提供位置服务。MongoDB/CosmosDB 数据库。

  7. [New] Payment microservice (支付微服务):处理支付逻辑。

二、技术储备

  1. 语言:.net Core、C#

  2. 平台:Docker、Xamarin、K8S

  3. 组件:RabbitMQ、IdentityServer4、Polly、Redis、MongoDb、Api Gateway、MsSqlServer

  4. 模式:EventBus、CQRS、CAP

  5. 管理:CI/CD

三、整体架构

640?wx_fmt=png

该架构主要包括两个部分:客户端应用和Docker主机中运行的服务端应用。

  1. 客户端应用:基于浏览器的Web应用;基于Xamarin开发的Android、IOS、UWP移动应用。

  2. 服务端应用:部署在在Doker主机的系列微服务。

四、服务架构

640?wx_fmt=png

以上是微软展示的四种services,你还可以使用不同的框架,不同的数据库完成你的微服务搭建,这就是微服务为何如此流行的原因了。我可以利用任何语言,任何数据库都能搭建我的服务,无论我的调用端使用的何种语言,何种系统。

主要有两种架构模式

  1. 基于数据驱动的CURD微服务

  2. 基于DDD的微服务

而实际上,软件架构师和开发人员会使用不同的架构模式,比如(混合架构风格和架构模式):

  1. 简单的 CRUD,单层

  2. 传统N层

  3. DDD N层

  4. 整洁架构

  5. 命令和查询分离(CQRS)

  6. 事件驱动架构

640?wx_fmt=png

四、通信架构:

  1. 客户端与微服务通过API网关通信:用于查询和接收来自客户端应用程序的更新或事务命令。

  2. 异步事件通信:通过事件总线传播来自微服务的更新或与外部应用程序集成。事件总线可使用任何消息代理架构技术如 RabbitMQ来实现。

640?wx_fmt=png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【模板】文艺平衡树

题目链接 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列。 其中需要提供以下操作:翻转一个区间,例如原有序序列是 543215\ 4\ 3\ 2\ 15 4 3 2 1,翻转区间是 [2,4][2,4][2,4] 的话&a…

P4022-[CTSC2012]熟悉的文章【广义SAM,dp,单调队列】

正题 题目链接:https://www.luogu.com.cn/problem/P4022 题目大意 给出mmm个模板串。 然后nnn次询问给出一个串SSS要求找到一个最大的LLL使得能够将SSS超过90%90\%90%的部分拿出来分后每个串都是某个模板串的子串且长度不小于LLL。 所有输入文件长度不超过 110000011000001…

猜数(二分、线段树)

题目描述 对于一个长度为n的数列给出m个描述 每一个描述给出一个区间[a,b]的最小值的x 求从第几个描述开始矛盾 解析 本题关键是一个关于矛盾的充要条件: 如果存在一个最小值x,其所在的区间的交集(就是它真正可以存在的区间)是…

网络流专题(最大流与费用流)例题总结

文章目录NC 106056 poj1459 Power Network题目大意:题解:NC213817 [网络流24题]最小路径覆盖问题题目:题解:例2:NC213818 [网络流24题]魔术球问题题目:题解:方法2:NC 213820 [网络流…

FHQ Treap

FHQ Treap 主要通过 merge⁡\operatorname{merge}merge 和 spilt⁡\operatorname{spilt}spilt 两个核心操作和其他辅助函数来实现。 本文用 lcxlc_xlcx​ 表示 xxx 的左儿子,rcxrc_xrcx​ 表示 xxx 的右儿子,datxdat_xdatx​ 表示 xxx 的随机优先级 me…

从.Net框架Bug的提交到修复代码成功合并到.NET CoreFX主线

从发现.NET Framework中SmtpClient的Bug并拿出解决方案,然后给微软开发者社区提交Bug开始,总共耗时一个多月,对Bug修复的代码最终被采纳,现已合并到.NET Core Libraries (CoreFX)主线中。修复记录https://github.com/dotnet/coref…

P2469-[SDOI2010]星际竞速【费用流】

正题 题目链接:https://www.luogu.com.cn/problem/P2469 题目大意 给出nnn个点mmm条边的一张无向图,你每次可以选择一条s−>ts->ts−>t的路径花费AsA_sAs​的代价出发,而且只能从编号小的点到编号大的点走,求最小花费使得所有点被…

周期长度和(KMP)

文章目录题目描述解析问题总结代码题目描述 解析 我们可以看到 如果A是B的周期 那么B一定可以写成: A1A2A1 的形式 注意到:A1就是KMP中的公共前后缀 要使A最大,要使A1最短 也就是求最短公共前后缀 这怎么求呢? 我们注意到&#x…

计算几何基础-1

文章目录基本概念点与向量的运算精度问题线段,射线和直线点积:夹角叉积向量的极角旋转一个向量求三角形面积直线交点点到直线距离点在直线上的投影判断两条线段是否相交点与直线的位置关系点是否在直线左侧点是否在直线上点是否在线段上点与多边形的位置…

.net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查

目录1.pod管理2.重启策略3.健康检查4.进入容器正文上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家。1.pod管理1.1创建podkubectl create -f netcore-pod.yaml我们创建一个netcore-pod.yaml文件,内容如下&#xff1…

【模板】可持久化并查集

题目链接 题目描述 给定 nnn 个集合,第 iii 个集合内初始状态下只有一个数,为 iii。 有 mmm 次操作。操作分为 333 种: 1 a b 合并 a,ba,ba,b 所在集合; 2 k 回到第 kkk 次操作(执行三种操作中的任意一种都记为一次…

P1758-[NOI2009]管道取珠【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P1758 题目大意 给出一个大小为nnn和一个大小为mmm的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所有弹出序列的弹出方案的二次方和。 1≤n,m≤5001\leq n,m\leq 5001≤n,m≤500 解题思路 二次方和…

洛谷P2680:运输计划(倍增、二分、树上差分)

传送门 文章目录题目描述解析问题代码题目描述 解析 求最大值的最小值 容易想到二分 然后。。。就没有然后了。。。 看了题解 学会了一个新技能:树上差分 (其实学长之前好像讲过。。。) 一般的,对于一条A到B的路径,如…

Loj#2880-「JOISC 2014 Day3」稻草人【CDQ分治,单调栈,二分】

正题 题目链接:https://loj.ac/problem/2880 题目大意 给出平面上的nnn个点,然后求有多少个矩形满足 左下角和右上角各有一个点矩形之间没有其他点 1≤n≤2105,1≤xi,yi≤109,1\leq n\leq 2\times 10^5,1\leq x_i,y_i\leq 10^9,1≤n≤2105,1≤xi​,yi​≤109,保证…

计算几何基础-2

文章目录直线:图形:求垂足求两圆交点直线与圆交点多边形问题判断一个点是否在任意多边形内部Pick定理凸包求点集的凸包水平法:增量法:半平面半平面交求半平面交直线: struct Line{point p,v;Line(){}Line(point _p.po…

eShopOnContainers 看微服务 ②:配置 启动

一、什么是dockerDocker 是一个开源项目,通过把应用程序打包为可移植的、自给自足的容器(可以运行在云端或本地)的方式,实现应用程序的自动化部署。使用 Docker 的时候,需要创建一个应用或服务,然后把它和它…

字符串距离(opj )(动态规划)

题目描述2988:计算字符串距离 对于两个不同的字符串,我们有一套操作方法来把他们变得相同,具体方法为: 修改一个字符(如把“a”替换为“b”)删除一个字符(如把“traveling”变为“travelng”)…

2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11260/C 题目大意 一个平面上&#xff0c;nnn个起点(0,ai)(0,a_i)(0,ai​)分别对应终点(i,0)(i,0)(i,0)&#xff0c;每次只能往上或者往左走。求不交路径数。 1≤n≤5105,ai<ai1,an≤1061\leq n\leq 5\times 10^5,a_i&…

[ZJOI2010]网络扩容[网络流24题]

[ZJOI2010]网络扩容[网络流24题] 题意&#xff1a; 给定一张有向图&#xff0c;每条边都有一个容量 c 和一个扩容费用 w。这里扩容费用是指将容量扩大 1 所需的费用。求&#xff1a; 在不扩容的情况下&#xff0c;1 到 n 的最大流&#xff1b; 将 1 到 n 的最大流增加 k 所需…

判断整除(opj)(动态规划)

解析 与取模结合的动归&#xff0c;正常做即可 问题 眼瞎&#xff01;&#xff01;&#xff01; 这个序列的每个数都必须用到&#xff01;&#xff01;&#xff01; if(f[i-1][j]) f[i][j]1;上面这行就是不对的&#xff01;&#xff01;&#xff01; 头疼 仔细审题 opj的题…