跳转到内容

架构概览

go-zero 是一套完整的微服务框架,采用分层架构,为从 API 网关到底层基础设施的每个关注点提供专用组件。

go-zero 系统架构

层级组件职责
API 层rest.ServerHTTP/1.1、HTTP/2、WebSocket;JWT 认证;速率限制
RPC 层zrpc.Server/ClientgRPC 通信;P2C 负载均衡;熔断器
服务发现etcd / Consul实例注册、健康检查、Watch 推送
缓存层Redis + LRU双层缓存;WriteThrough;7 天 TTL
可观测性OTel + Prometheus统一 Traces / Metrics / Logs

HTTP 请求生命周期

中间件执行链

中间件通过 server.Use(middleware) 注册,支持全局或按路由挂载。

API 网关与 RPC 服务联动

API 服务通过 etcd 动态感知 RPC 实例的上线与下线,无需任何人工干预。

韧性机制:速率限制与熔断

可观测性流水线

go-zero 配置可以内嵌组合:

Name: user-api
Host: 0.0.0.0
Port: 8888
# 嵌入 REST 配置
MaxConns: 1000 # 最大并发连接数
Timeout: 5000 # 全局请求超时(毫秒)
# 下游 RPC 依赖
UserRpc:
Etcd:
Hosts: [127.0.0.1:2379]
Key: user.rpc
Timeout: 2000
# 缓存
CacheRedis:
- Host: 127.0.0.1:6379
Type: node
# 可观测性
Telemetry:
Name: user-api
Endpoint: http://jaeger:14268/api/traces
Sampler: 1.0
Batcher: jaeger