摘要: 引言 时间如梭,娃都可以打酱油了。 转眼间第一个五年计划,已过了一半。 年终总结是个打脸的好地方,曾经夸下的海口,有的真的成了海口。 所幸,一切都在按好的方向发展。但乐观背后容易忽略潜在的问题,所以,在2020来临之际,是时候对2019做个具体的回顾,并对来年做个具体的展望。 谈成长 阅读全文
posted @ 2019-12-22 16:09 「圣杰」 阅读(1404) 评论(8) 推荐(11)
摘要: 1. 引言 是的, Orleans v3.0.0 已经发布了,并已经完全支持 .NET Core 3.0 。 所以,Orleans 系列是时候继续了,抱歉,让大家久等了。 万丈高楼平地起,这一节我们就先来了解下Orleans的基本使用。 2. 模板项目讲解 在上一篇文章中,我们了解到Orleans 阅读全文
posted @ 2019-10-28 09:18 「圣杰」 阅读(3795) 评论(21) 推荐(19)
摘要: 引言 最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题。查看容器日志,发现以下异常: 通过排查,发现了是由于 "ASP.NET Core Data Protection" 机制引起的。 Data Protection 机制 对于Data 阅读全文
posted @ 2019-10-11 11:37 「圣杰」 阅读(3690) 评论(0) 推荐(1)
摘要: 背景 ASP.NET Core默认的配置文件定义在appsetings.json和appsettings.{Environment}.json文件中。 这里面有一个问题就是,在使用容器部署时,每次修改配置文件都需要重新构建镜像。当然你也可能会说,我的配置文件很稳定不需要修改,但你又如何确保配置文件中 阅读全文
posted @ 2019-09-04 09:16 「圣杰」 阅读(5985) 评论(10) 推荐(14)
摘要: 背景 在做微信公众号的改版工作,之前的业务逻辑全塞在一个控制器中,现需要将其按厂家拆分,但要求入口不变。 拆分很简单,定义控制器基类,添加公用虚方法并实现,各个厂家按需重载。 但如何根据统一的入口参数路由到不同的控制器呢? 最容易想到的方案无外乎两种: 1. 路由重定向 2. 路由重写 简易方案 但 阅读全文
posted @ 2019-08-29 08:49 「圣杰」 阅读(3859) 评论(2) 推荐(3)
摘要: Orleans 术语解读 上面这张图中包含了Orleans中的几个核心概念: 1. Grain 2. Silo 3. Orleans Cluster 4. Orleans Client 从这张图,我们应该能理清他们之间的关系。 1. Grain作为最小的执行单元 2. Silo 是 Grain 的宿 阅读全文
posted @ 2019-07-22 09:05 「圣杰」 阅读(4090) 评论(7) 推荐(16)
摘要: Orleans 是一个支持有状态云生应用/服务水平伸缩的基于Virtual Actor 模型的.NET分布式框架。 可以很好的结合.NET Core进行物联网云生应用的开发! 阅读全文
posted @ 2019-07-10 13:10 「圣杰」 阅读(21012) 评论(43) 推荐(51)
摘要: 1. 引言 断断续续,感觉这个系列又要半途而废了。趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云。 2. 先了解下 Helm 读过我上篇文章 "ASP.NET Core 借助 K8S 玩转容器编排" 的同学,想必对K8S有了个大致了 阅读全文
posted @ 2019-04-06 22:06 「圣杰」 阅读(3093) 评论(3) 推荐(5)
摘要: 使用K8S编排你的第一个ASP.NET Core容器 阅读全文
posted @ 2019-03-25 08:47 「圣杰」 阅读(13012) 评论(24) 推荐(40)
摘要: 客户端与微服务的通信永远是一个绕不开的问题,对于小型微服务应用,客户端与微服务可以使用直连的方式进行通信,但对于对于大型的微服务应用我们该如何处理呢? 本文就来梳理一下eShopOnContainers是如何集成Ocelot网关来进行通信的。 阅读全文
posted @ 2019-03-05 14:13 「圣杰」 阅读(3211) 评论(7) 推荐(8)
摘要: 1. 引言 An API for asynchronous programming with observable streams. ReactiveX is a combination of the best ideas from the Observer pattern, the Iterato 阅读全文
posted @ 2019-02-19 08:47 「圣杰」 阅读(21188) 评论(37) 推荐(59)
摘要: 1. 引言 Ordering microservice(订单微服务)就是处理订单的了,它与前面讲到的几个微服务相比要复杂的多。主要涉及以下业务逻辑: 1. 订单的创建、取消、支付、发货 2. 库存的扣减 2. 架构模式 如上图所示,该服务基于CQRS 和DDD来实现。 从项目结构来看,主要包括7个项 阅读全文
posted @ 2019-01-24 09:02 「圣杰」 阅读(5392) 评论(15) 推荐(31)
摘要: 引言 首先不用查字典了,词典查无此词。猜测是作者笔误将 Mediator 写成MediatR了。废话少说,转入正题。 先来简单了解下这个开源项目 "MediatR" (作者Jimmy Bogard,也是开源项目AutoMapper的创建者,在此表示膜拜): Simple mediator imple 阅读全文
posted @ 2019-01-17 08:20 「圣杰」 阅读(10186) 评论(16) 推荐(32)
摘要: 引言 Basket microservice(购物车微服务)主要用于处理购物车的业务逻辑,包括: 1. 购物车商品的CRUD 2. 订阅商品价格更新事件,进行购物车商品同步处理 3. 购物车结算事件发布 4. 订阅订单成功创建事件,进行购物车的清空操作 架构模式 如上图所示,本微服务采用数据驱动的C 阅读全文
posted @ 2019-01-04 11:21 「圣杰」 阅读(2762) 评论(0) 推荐(7)
摘要: 如果客户环境出了问题,而又无法快速定位问题,可以借助 "dnSpy" 进行反编译调试跟踪。 可前往 "dnSpy官网下载" 或直接从我的 "分享链接" 下载(内置包含.NET Framework 4.7.1,若运行提示需要安装,可解压找到 安装)。 具体操作步骤如下所示: 1. 添加系统环境变量, 阅读全文
posted @ 2018-12-24 14:25 「圣杰」 阅读(7334) 评论(10) 推荐(7)
摘要: 1. 引言 事件总线解决了微服务间如何基于集成事件进行异步通信的问题。然而只有事件总线正常运行,微服务之间基于事件的通信才得以运转。 而现实情况是,总有这样或那样的问题,导致事件总线不稳定或不可用,比如:网络中断,系统断电等等,这都可能导致微服务间的不一致性问题。 那如何解决事件总线故障导致的不一致 阅读全文
posted @ 2018-12-11 12:15 「圣杰」 阅读(4251) 评论(5) 推荐(8)
摘要: 1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布 订阅)模式,你也许就很熟悉。事件总线是对发布 订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。 从上图可知,核心就4个角色: 1. 事件(事件源+事件处理) 2. 阅读全文
posted @ 2018-12-03 08:08 「圣杰」 阅读(8056) 评论(20) 推荐(18)
摘要: 引言 Catalog microservice(目录微服务)维护着所有产品信息,包括库存、价格。所以该微服务的核心业务为: 1. 产品信息的维护 2. 库存的更新 3. 价格的维护 架构模式 如上图所示,本微服务采用简单的数据驱动的CRUD微服务架构,来执行产品信息的创建、读取、更新和删除(CRUD 阅读全文
posted @ 2018-11-28 23:36 「圣杰」 阅读(5156) 评论(0) 推荐(4)
摘要: 首先感谢晓晨Master和EdisonChou的审稿!也感谢正在阅读的您! 引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问。那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠。 在微服务场景中,身份认证通常统一处理。一般有两种实现形式: 1. 基于 阅读全文
posted @ 2018-10-22 06:54 「圣杰」 阅读(11087) 评论(11) 推荐(37)
摘要: 环境准备 1. Win10(开启Hyper V) 2. ".NET Core SDK" 3. "Docker for Windows" 4. "VS2017 or VS Code" 5. "Git" 6. "SQL Server Management Studio" (可选) 7. "Redis D 阅读全文
posted @ 2018-10-16 09:06 「圣杰」 阅读(12217) 评论(24) 推荐(17)