摘要: 背景 日常开发中,经常需要对一些响应不是很快的关键业务接口增加防重功能,即短时间内收到的多个相同的请求,只处理一个,其余不处理,避免产生脏数据。这和幂等性(idempotency)稍微有点区别,幂等性要求的是对重复请求有相同的效果和结果,通常需要在接口内部执行业务操作前检查状态;而防重可以认为是一个 阅读全文
posted @ 2023-03-15 17:35 马行空的博客 阅读(3516) 评论(9) 推荐(22)
摘要: 前言 最近又在项目中碰到需要将原本单实现的接口改造成多个实现的场景,这里记录一下常见的几种改法。 假设已经存在如下接口ICustomService和其实现CustomService,由于只有一种实现,注入和使用非常容易。 public interface ICustomService { void 阅读全文
posted @ 2023-02-26 16:55 马行空的博客 阅读(2471) 评论(6) 推荐(10)
摘要: 背景 最近遇到一个比较特殊需求,需要修改一个的RabbitMQ消费者,以实现在消费某种特定的类型消息时,延迟1小时再处理,几个需要注意的点: 延迟是以小时为单位 不是所有消息都延迟消费,只延迟特定类型的消息 只在第一次消费时延迟1小时,容错机制产生的重新消费(也即消息消费失败,多次进入延迟队列重试) 阅读全文
posted @ 2022-10-22 23:14 马行空的博客 阅读(1582) 评论(6) 推荐(6)
摘要: 前言 通过kubectl port-forward端口转发,在本地机器上访问k8s集群内的服务/数据库,对开发、调试、定位bug都很有用。 每次都要查,这里记录一下。 步骤 当然首先要确保本地机器上安装了 kubectl,安装文档:https://kubernetes.io/docs/tasks/t 阅读全文
posted @ 2022-09-29 15:37 马行空的博客 阅读(598) 评论(0) 推荐(0)
摘要: 前言 在上一篇文章CLR类型系统概述里提到,当运行时挂起时, 垃圾回收会执行堆栈遍历器(stack walker)去拿到堆栈上值类型的大小和堆栈根。这里我们来翻译BotR里一篇专门介绍Stackwalking的文章,希望能加深理解。 顺便说一句,StackWalker在中文里似乎还没有统一的翻译,J 阅读全文
posted @ 2022-09-25 20:56 马行空的博客 阅读(628) 评论(0) 推荐(0)
摘要: .NET运行时之书(Book of the Runtime,简称BotR)是一系列描述.NET运行时的文档,2007年左右在微软内部创建,最初目的是为了帮助其新员工快速上手.NET运行时;随着.NET开源,BotR也被公开了出来,如果想深入理解CLR,这系列文章不可错过。 BotR系列目录: [1] 阅读全文
posted @ 2022-09-23 18:13 马行空的博客 阅读(714) 评论(0) 推荐(6)
摘要: .NET运行时之书(Book of the Runtime,简称BotR)是一系列描述.NET运行时的文档,2007年左右在微软内部创建,最初目的是为了帮助其新员工快速上手.NET运行时;随着.NET开源,BotR也被公开了出来,如果想深入理解CLR,这系列文章不可错过。 BotR系列目录: [1] 阅读全文
posted @ 2022-09-20 22:14 马行空的博客 阅读(865) 评论(1) 推荐(6)
摘要: 背景 前段时间为了迁移一个旧服务到新项目,由此产生了一个巨大的PR,为了方便Code Review,最终基于文件夹,将其拆分成了多个较小的PR;现在这里记录下,后面可能还会需要。 演示 为了方便演示,我创建了如下一个 large_pr_branch 到main的大PR,99+的文件修改 通过观察,我 阅读全文
posted @ 2022-09-09 17:42 马行空的博客 阅读(1533) 评论(3) 推荐(3)
摘要: 前言 在日常工作中,偶尔需要调查一些诡异的问题,而业务代码经过长时间的演化,很可能已经变得错综复杂,流程、分支众多,如果能在关键方法的日志里添加上调用者的信息,将对定位问题非常有帮助。 介绍 StackTrace, 位于 System.Diagnostics 命名空间下,名字很直观,它代表一个方法调 阅读全文
posted @ 2022-09-03 17:58 马行空的博客 阅读(1017) 评论(2) 推荐(4)
摘要: #前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据;由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求;于是我开始寻找在Quartz.Net、Hangfire之外,是否还有更为轻量级的框架满足我的要求,最终我选择了Coravel. #简 阅读全文
posted @ 2022-08-20 15:26 马行空的博客 阅读(2957) 评论(9) 推荐(9)