示例

pkg/core/* 的每项能力配一个可运行示例。除需要真实中间件的几个 (make dev 起)外,全部离线可跑:不需要 Docker、不需要网络。 每个示例都有测试,所以 make ci 会一并验证它们。

统一跑法 make example NAME=http 等价于 go run ./examples/http。 用 HTTP 形态的示例各自带一份 config.yaml,-conf 默认指向它。

开始与基础

示例 能力 外部依赖
config 配置加载:tag(default/env/optional)、${VAR} 展开、环境覆盖 无
nacos Nacos 配置中心:框架段/服务段两个 data_id、namespace/group/鉴权(账号密码或 AK/SK)、服务段热更 Nacos(测试用假 source)
errors 错误模型:Kind → 状态码、业务 code、Wrap 不泄露细节 无
http 路由、handler 约定、响应封套、错误映射、中间件槽、HandleRaw 无
lifecycle Block、Closer、配置热更、就绪门、优雅退出 无
observability 结构化日志、相关 id、Prometheus 指标、OpenTelemetry 链路 无

数据与集成

示例 能力 外部依赖
database 三驱动、? 占位符、泛型扫描、WithTx、Querier(DAO 进出事务) 默认纯 Go SQLite
cache cache-aside、并发 miss 合并(防击穿)、TTL 抖动(防雪崩)、写后失效 Redis
redis JSON 缓存读写、Lock/TryLock 分布式锁 Redis
memcache JSON 缓存、TTL、Touch Memcached(测试用进程内假服务)
kafka 同步/异步生产者、消费者循环、死信队列 Kafka
grpc 服务注册、客户端拨号、内置健康服务与 reflection 开关 无
rpcx 无 IDL 的服务注册与客户端调用 无

生产治理

示例 能力 外部依赖
resilience 限流、幂等、熔断(连续失败或错误率滑窗)、退避重试 无
auth Bearer 验签(HMAC/JWKS)、分级授权、Principal 进 ctx 无
cron 固定周期 / cron 表达式 / 一次性任务,多副本选主每槽只跑一次 无(选主需 Redis)
feature 功能开关:配置 / 环境变量 / 运行时 Set 三层覆盖 无
audit 审计日志:谁对什么做了什么、结果如何,sink 可插拔 无
llm 四协议互转、流式/非流式、可选重试、Jev 决策问答 无(httptest 假上游)

端口占用

多数示例默认监听 :8080,所以一次只跑一个;其余用独立端口避免冲突:

端口 示例
:8080http · observability · lifecycle · redis · memcache · kafka · grpc · rpcx
:8081auth
:8082resilience
:8083cache
:8084cron
:8085feature
:8086audit

离线验证

go test ./examples/...     # 全部离线:SQLite / miniredis / kfake / 进程内 gRPC·rpcx
示例和业务代码同一套规矩 示例同样只经 pkg/core/* 访问基础设施,不直接 import 驱动库, 由 depguard 的 examples-no-drivers 强制。唯一的豁免是 kafka 测试用的 kfake——它是测试替身,不是驱动。

示例之外