微服务
关注拆分边界、集群分层、共享数据库与测试策略。
-
微服务(四):No-mock 趋势与测试策略
Clean Architecture 做对了的话,大部分层根本不需要 mock:domain 层零依赖直接测,repository 层必须用真实基础设施(testcontainers),use case 层视编排复杂度决定。Mock 只在外部不可控系统(支付网关、短信)和故障注入场景下合理。
-
微服务(三):多实例共享数据库为什么不需要额外同步
多个无状态服务实例访问同一个 PostgreSQL,不需要分布式锁或 Redis 互斥。数据库的 MVCC + 事务 + 约束已经处理了并发控制。你唯一需要操心的是业务层"先读后写"的竞态,而这个问题单实例多 goroutine 也一样存在,解决方案全在 SQL 层面(原子 SQL、乐观锁、SELECT FOR UPDATE、唯一约束)。
-
微服务(二):完整微服务集群的分层系统
一个完整的微服务集群,从来不只是“一堆 RPC 服务实例”。至少要同时看见四层:平台层负责调度和运行,流量层负责入口和东西向治理,业务层承载真正的领域逻辑,状态层保存持久数据与异步事件;可观测性、配置、密钥、发布流水线则是横切支撑层。少看任何一层,架构判断都会失真。
-
微服务(一):拆分-按运维特征和组织边界画线
拆分的本质是让不同团队能独立部署和运维各自的代码。拆分依据的优先级:领域边界 > 团队所有权 > 数据所有权 > 运维特征差异 > 变更频率。大多数团队应该止步于模块化单体,只在出现可度量的痛点时才提取服务。拆错的代价远大于不拆的代价。