一、简介

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

三、整体架构

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

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

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

四、服务架构

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

主要有两种架构模式

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

  2. 基于DDD的微服务

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

  1. 简单的 CRUD,单层

  2. 传统N层

  3. DDD N层

  4. 整洁架构

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

  6. 事件驱动架构

四、通信架构:

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

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

eShopOnContainers 看微服务 ①:总体概览相关推荐

  1. eShopOnContainers 看微服务④:Catalog Service

    服务简介 Catalog service(目录服务)维护着所有产品信息,包括库存.价格.所以该微服务的核心业务为: 产品信息的维护 库存的更新 价格的维护 架构模式 先看代码结构(下图). 主要依赖: ...

  2. eShopOnContainers 看微服务③:Identity Service

    引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认证--确定用户身份是否可靠. 在微服务场景中,身份认证通常统一处理.一般有两 ...

  3. eShopOnContainers 看微服务 ②:配置 启动

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

  4. 体系化认识微服务之三:微服务总体技术架构

    体系化认识微服务之三:微服务总体技术架构 这篇文章,介绍下微服务的总体架构体系,微服务拆分后涉及的服务众多,我们从一个全局的视角看下微服务架构涉及哪些方面.从上层到下层依次分为:接入层.网关.业务服务 ...

  5. 从运维角度看微服务 k8s部署微服务【偏理论】【AL】

    从运维角度看微服务 & 部署微服务[偏理论] 1.微服务的特点 服务组件化: 每个服务独立开发.部署,有效避免一个服务的修改引起整个系统重新部署. 技术栈灵活: 约定通信方式,使得服务本身功能 ...

  6. Java开发 - 数风流人物,还看“微服务”

    大家好,我是风筝. 重学计算机网络已经有一段时间了,终于在离开大学多年后又重新拾起了一部分,时至今日已略有小成,并且写了一系列的文章了,会慢慢 发出来. 我反正在学习的过程中是画了好多张图,这些图会放 ...

  7. 从传统B/S架构的角度看微服务架构

    先假定一个条件:所有数据库.中间件和web server都是收费的,没有免费开源版,比如mysql,redis都是收费的,nginx也是收费的.这个条件下会对架构设计产生什么影响? 从技术总监或CTO ...

  8. 微服务架构·基础篇,傻瓜看了都会

    转自:cyfonly 看到最近"微服务架构"这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和 ...

  9. 前世看今生,从JavaEE到微服务

    声明:本文来自作者原创投稿文章,未经许可,禁止任何形式的转载. 作者:焦烈焱,普元CTO. 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN ...

最新文章

  1. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第7章-Lurie 型动态网络的鲁棒 H 无穷簇同步
  2. [转]Windows Shell 编程 第十四章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988010】...
  3. poj 1845 Sumdiv (算数基本定理+逆元)
  4. 深度学习笔记(40) YOLO
  5. 海康大华等录像机、摄像头无法通过GB28181注册到LiveGBS国标平台问题排查方法
  6. Tokenized的设计哲学(三)
  7. 控制系统伯德图、带宽及动态响应的关联性
  8. Md5(base64)加密与解密实战
  9. deepin 相关问题
  10. 每个月3000结余,买余额宝好还是基金定投好?
  11. Dijkstra算法证明图解
  12. 【论文精读1】基于BN的模型剪枝-Learning Efficient Convolution Networks through Network Slimming
  13. 域名故事:史上超贵的域名成交记录
  14. 教你如何解析eth的区块信息,并保存所有的交易记录
  15. 京东数科与中铁武汉电气化局达成战略合作 数字科技助力电气化铁路建设
  16. 信息学奥赛一本通2038
  17. php 缩略图增加水印,php 图片上传代码(具有生成缩略图与增加水印功能)
  18. 原创】OllyDBG 入门系列(一)-认识OllyDBG
  19. (转)在游戏中使用“CEGUI” — 第一章(底层)
  20. 2021年了产品还是没有曝光?巨象跨境指纹浏览器教你2021年SNS营销不再落后

热门文章

  1. 基于iSroll 5.0实现的上拉加载和下拉刷新插件
  2. 分布式服务下的关键技术(转)
  3. Git在版本2.13中继续改进了安全性和UI
  4. 《HTML5触摸界面设计与开发》——1.4 神秘谷,是什么让触摸界面反应灵敏?...
  5. HUAWEI nova 青春版闪速快充,让追剧不再断电
  6. Linux入门之进程管理(4)之进程与文件
  7. IP代理在网络游戏中的应用
  8. CA周记 - 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发
  9. .NET6之MiniAPI(十二):引入EntityFramewor
  10. 使用自定义卫语句写出更简洁的代码