Posts
2 min read
为什么 API 版本管理如此重要? API 版本管理的核心目标是:在不破坏现有用户的前提下,持续迭代和改进 API。通过版本管理,我们可以:
引入新功能:在新版本中添加字段、接口等,而不影响旧版本的用户。 修复 bug:在新版本中修复问题,而不冒破坏旧版本的风险。 逐步淘汰:在新版本中移除过时的功能,给用户足够的时间迁移。 常见的版本策略有这几种:
URL 路径版本:/api/v1/users,直 …
1 min read
这篇只讲一个知识点:在 .NET 代码里用 .Result(或 GetAwaiter().GetResult())同步阻塞异步任务,为什么在不同框架下会触发不同类型的事故。
问题背景 同样一行代码,在两个系统里出现了完全不同的故障:
老系统(ASP.NET MVC 5)请求直接卡死,不返回 新系统(ASP.NET Core)不是直接死锁,而是高峰期吞吐突然掉到很低,请求排队超时 两边都有这段写法: …
2 min read
很多服务在压测里吞吐不错,一上生产就抖。根因常常不是业务逻辑,而是内存分配模式不健康。
典型表现:
GC 频率偏高 P99 周期性尖峰 单机吞吐不稳定 这篇文章重点讲“如何减少无意义分配”,并把优化控制在团队可维护范围内。
问题背景 真实现场:一次常规版本上线后,接口平均耗时变化不大,但 P99 从 120ms 拉到 380ms,最后定位到的是字符串拼接和临时数组在高峰时段触发了更频繁的 GC。
…
2 min read
引言 这篇文章我们来聊一聊 asp.net core 的内存缓存。asp.net core 内存缓存(IMemoryCache)是一个轻量级的缓存方案,适用于单实例应用或者分布式环境中的本地缓存。它提供了简单的 API 来存储和检索数据,同时支持过期策略、优先级设置等功能。
什么是缓存 从用户请求到数据库返回数据,这是一个漫长的过程(夸张了点,通常也就是几十毫秒到几百毫秒)。可是又不止一个用户在访 …
3 min read
订单服务最容易出现的稳定性问题,不是业务代码写错,而是下游支付、库存、短信网关一抖,整个接口成功率跟着雪崩。看起来只是一次超时,实际上会引发重试风暴、线程池占满、数据库回写积压。今天这篇就只做一件事:把外部依赖调用链路收敛到可控、可观测、可恢复的状态。
1. 问题背景:服务没挂,为什么成功率先掉 线上经常出现这种现象:
API 进程还活着,CPU 占用也不高,可能只有40%(举个例子,非真实数 …
2 min read
这篇文章不讨论完整身份平台建设,只聚焦 ASP.NET Core 里最常见、也最容易出错的一段:JWT 认证、Policy 授权,以及资源级权限边界该怎么落到代码里。
问题背景 真实现场:一个后台退款接口原本只允许财务角色调用,但线上排查发现,普通运营账号只要拿到有效 token,也能调用成功。
根因并不复杂:
接口加了 [Authorize] 系统只校验“是否登录” 没有继续校验角色、权限和资源 …
2 min read
接口慢,不一定是数据库慢。很多系统在高峰期的核心问题,是异步链路写法导致线程池被慢慢耗空。
这类问题最麻烦的地方在于:
CPU 不一定打满 错误日志不一定明显 本地压测可能复现不出来 这篇文章围绕一个目标展开:让异步代码在高并发下“稳态运行”,而不是“平时很快,高峰崩盘”。
1. 问题背景:为什么会出现线程池饥饿 常见触发方式:
在 ASP.NET Core 请求中使用 .Result / …
4 min read
“事务加上了,这可不就问了嘛”。真正到线上一跑,问题就冒出来了:
数据库提交成功了,但消息没发出去 外部调用成功了,但本地事务回滚了 SQL 重试机制打开后,一段代码被重复执行了两次 同一个请求里明明都写在一起,最终状态还是不一致 这篇文章不讲抽象理论,直接回答一个工程问题:在 EF Core 里,事务边界到底该怎么画,哪些事情能靠数据库事务兜住,哪些事情必须换一种设计。
问题背景:为什么“写成功 …
2 min read
这篇文章讨论一个问题:一次写入请求从实体变更到数据库落盘,中间到底发生了什么,哪里最容易慢,以及应该怎么定位。
问题背景 真实场景:订单系统在白天吞吐稳定,凌晨高峰出现周期性尖峰。接口平均耗时变化不大,但 P95 从 80ms 抬到 420ms,数据库 CPU 也出现波峰。
排查后发现:
应用层每次批量处理 2000 条数据 循环中频繁触发变更检测 每条数据都单独 SaveChanges 最终生成 …
2 min read
做 EF Core 一段时间后,很多人都会遇到同一个节点:常规 LINQ 能覆盖大多数查询,但一到复杂报表、视图或者历史 SQL 复用场景,就会开始考虑原生 SQL。问题不在于“能不能写 SQL”,而在于怎么写得可维护、可观测、还能和 EF Core 的映射体系配合好。这篇文章讲解 FromSql、SqlQuery 的使用边界和对象映射的一些坑。
1. 问题背景:为什么原生 SQL 常常能跑但难以 …