引言 Basket microservice(购物车微服务)主要用于处理购物车的业务逻辑,包括: 购物车商品的CRUD 订阅商品价格更新事件,进行购物车商品同步处理 购物车结算事件发布 订阅订单成功创建事件,进行购物车的清空操作 架构模式 如上图所示,本微服务采用数据驱动的CRUD微服务架构,来执行购物车商品的维护操作.并使用Redis数据库进行持久化. 这种类型的服务在单个 ASP.NET Core Web API 项目中即可实现所有功能,该项目包括数据模型类.业务逻辑类及其数据访问类.其项目…
引言 在微服务大行其道的今天,Java阵营的Spring Boot.Spring Cloud.Dubbo微服务框架可谓是风水水起,也不得不感慨Java的生态圈的火爆.反观国内.NET阵营,微服务却不愠不火. 微软在其官网的架构体系上推出了eShopOnContainers微服务参考应用,用来推广基于.NET Core的微服务架构.我也将基于此来学习研究微服务,并分享自己的所学所得,形成一个系列,为.NET社区微服务的推广略尽绵薄之力. eShopOnContainers 简介 Easy to g…
环境准备 Win10(开启Hyper-V) .NET Core SDK Docker for Windows VS2017 or VS Code Git SQL Server Management Studio(可选) Redis Desktop Manager(可选) Node.js(可选) Bower(可选) Clone代码到本地 执行命令git clone https://github.com/dotnet/eShopOnContainers.gitclone代码到本地.使用默认DEV分支…
1. 引言 Ordering microservice(订单微服务)就是处理订单的了,它与前面讲到的几个微服务相比要复杂的多.主要涉及以下业务逻辑: 订单的创建.取消.支付.发货 库存的扣减 2. 架构模式 如上图所示,该服务基于CQRS 和DDD来实现. 从项目结构来看,主要包括7个项目: Ordering.API:应用层 Ordering.Domain:领域层 Ordering.Infrastructure:基础设施层 Ordering.BackgroundTasks:后台任务 Orderi…
首先感谢晓晨Master和EdisonChou的审稿!也感谢正在阅读的您! 引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认证--确定用户身份是否可靠. 在微服务场景中,身份认证通常统一处理.一般有两种实现形式: 基于API 网关中心化认证:要求客户端必须都通过网关访问微服务.(这就要求提供一种安全机制来认证请求是来自于网关.) 基于安全令牌服务(STS)认证:所有的客户端先从STS获取令牌,然后请求时携带令牌完成认证.…
引言 Catalog microservice(目录微服务)维护着所有产品信息,包括库存.价格.所以该微服务的核心业务为: 产品信息的维护 库存的更新 价格的维护 架构模式 如上图所示,本微服务采用简单的数据驱动的CRUD微服务架构,来执行产品信息的创建.读取.更新和删除(CRUD)操作. 这种类型的服务在单个 ASP.NET Core Web API 项目中即可实现所有功能,该项目包括数据模型类.业务逻辑类及其数据访问类.其项目结构如下: 核心技术选型: ASP.NET Core Web AP…
引言 客户端与微服务的通信问题永远是一个绕不开的问题,对于小型微服务应用,客户端与微服务可以使用直连的方式进行通信,但对于对于大型的微服务应用我们将不得不面对以下问题: 如何降低客户端到后台的请求数量,并减少与多个微服务的无效交互? 如何处理微服务间的交叉问题,比如授权.数据转换和动态请求派发? 客户端如何与使用非互联网友好协议的服务进行交互? 如何打造移动端友好的服务? 而解决这一问题的方法之一就是借助API网关,其允许我们按需组合某些微服务以提供单一入口. 接下来,本文就来梳理一下eShop…
1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的. 从上图可知,核心就4个角色: 事件(事件源+事件处理) 事件发布者 事件订阅者 事件总线 实现事件总线的关键是: 事件总线维护一个事件源与事件处理的映射字典: 通过单例模式,确保事件总线的唯一入口: 利用反射完成事件源与事件处理的初始化绑定: 提供统一的事件注册.取…
引言 最近翻看最新3.0 eShopOncontainers源码,发现其在架构选型中补充了 gRPC 进行服务间通信.那就索性也写一篇,作为系列的补充. gRPC 老规矩,先来理一下gRPC的基本概念.gRPC是Google开源的RPC框架,比肩dubbo.thrift.brpc.其优势在于: 1. 基于proto buffer:二进制协议,具有高性能的序列化机制.相较于JSON(文本协议)而言,首先从数据包上就有60%-80%的减小,其次其解包速度仅需要简单的数学运算完成,无需复杂的词法语法分…
1. 引言 在最新的eShopOnContainers 3.0 中Ocelot 网关被Envoy Proxy 替换.下面就来简要带大家了解下Envoy,并尝试梳理下为什么要使用Envoy替代Ocelot. 2. Hello Envoy ENVOY IS AN OPEN SOURCE EDGE AND SERVICE PROXY, DESIGNED FOR CLOUD-NATIVE APPLICATIONS. Enovy(信使) 是一款开源的专为云原生应用设计的服务代理. 2.1. 快速体验 首先…