📌 架构总览:分层+模块化+微服务治理组件整合
┌────────────────────────────┐
│ 接入层(Gateway) │ 🔹统一网关,限流鉴权,灰度发布
└────────────┬─────────────┘
↓
┌────────────────────────────┐
│ API 层(服务入口) │ 🔹gRPC / HTTP,路由与协议处理
└────────────┬─────────────┘
↓
┌────────────────────────────┐
│ 服务层(UseCase) │ 🔹组合业务流程,调度多个领域服务
└────────────┬─────────────┘
↓
┌────────────────────────────┐
│ 领域层(Domain) │ 🔹核心业务模型与规则,保持纯净
└────────────┬─────────────┘
↓
┌────────────────────────────┐
│ 基础设施层(Infra) │ 🔹数据库、MQ、缓存、搜索引擎等
└────────────────────────────┘
🧩 架构特色拆解
1️⃣ 接入层(Gateway/Api Gateway)
-
Kong / APISIX / Nginx 等统一入口网关
-
功能包括:
- JWT 鉴权
- IP 限流
- API 聚合
- 灰度发布
2️⃣ API 层(Protocol Adapter)
-
每个服务都有自己的入口,例如:
- HTTP(Gin)
- gRPC(Protobuf + grpc-go)
- WebSocket(用于实时通信)
func (h *OrderHandler) CreateOrder(ctx *gin.Context) {
...
err := h.orderUsecase.Create(cmd)
}
3️⃣ 服务层(UseCase Layer)
- 每一个服务的业务 orchestrator
- 聚合多个领域对象,流程控制、事务逻辑在此
func (uc *OrderUsecase) Create(cmd CreateOrderCommand) error {
order := domain.NewOrder(cmd)
err := uc.repo.Save(order)
uc.msgPublisher.Publish(order.Event)
}
4️⃣ 领域层(Domain Layer)
-
🧠 核心业务逻辑
-
包含:
- Entity 实体
- Value Object 值对象
- Domain Service 领域服务
- Domain Event 领域事件
5️⃣ 基础设施层(Infra Layer)
-
所有 I/O 相关逻辑:
- MySQL、PostgreSQL、MongoDB
- Kafka / RocketMQ
- Redis / etcd
- ElasticSearch
-
遵循接口隔离,通过依赖倒置和接口注入方式解耦:
type OrderRepository interface {
Save(order *domain.Order) error
}
🧰 微服务治理扩展建议
| 模块 | 说明 |
|---|---|
| 服务注册发现 | Consul / Nacos / etcd |
| 配置中心 | Apollo / Nacos |
| 分布式链路追踪 | Jaeger / Zipkin / OpenTelemetry |
| 服务限流熔断 | Sentinel / Hystrix |
| 日志采集 | ELK / Loki + Promtail |
| 鉴权 & 认证 | OAuth2 / JWT / Casbin |
| 自动化部署 | Kubernetes + Helm |
🗂 推荐目录结构(基于微服务)
/cmd/
order-service/ → 单个服务入口
/internal/
order/
api/ → gRPC/HTTP 适配器
usecase/ → 应用服务
domain/ → 业务模型
infra/ → 数据库/消息/缓存实现
config/ → 配置
/pkg/ → 通用模块(日志、中间件、错误封装)
/api/ → Protobuf / OpenAPI 接口定义
Golang全栈开发完整课程