文章
这里收录了我发布的全部文章。
-
axum(二):Handler 与 Extractor-编译期请求解析的魔法
axum 的 handler 是普通 async fn,参数类型决定如何从 HTTP 请求中提取数据。FromRequestParts 提取头部/路径/query(不消耗 body),FromRequest 提取 body(只能有一个,必须放最后)。所有验证在编译期完成——类型不匹配编译器直接拒绝,不等到运行时 500。这背后是 allthetuples! 宏为 0~16 个参数生成的 17 个 Handler trait blanket impl。
-
axum(一):设计哲学-类型驱动的零成本 Web 框架
axum 是 tokio 官方的 Web 框架,由 David Pedersen 在 2021 年创建。它的核心设计是:不写自己的中间件系统,直接用 tower::Service;不用宏做路由,用函数调用;不用运行时反射做参数提取,用编译期 trait 解析。整个 crate #![forbid(unsafe_code)]。
-
微服务(四):No-mock 趋势与测试策略
Clean Architecture 做对了的话,大部分层根本不需要 mock:domain 层零依赖直接测,repository 层必须用真实基础设施(testcontainers),use case 层视编排复杂度决定。Mock 只在外部不可控系统(支付网关、短信)和故障注入场景下合理。
-
微服务(三):多实例共享数据库为什么不需要额外同步
多个无状态服务实例访问同一个 PostgreSQL,不需要分布式锁或 Redis 互斥。数据库的 MVCC + 事务 + 约束已经处理了并发控制。你唯一需要操心的是业务层"先读后写"的竞态,而这个问题单实例多 goroutine 也一样存在,解决方案全在 SQL 层面(原子 SQL、乐观锁、SELECT FOR UPDATE、唯一约束)。