📌 架构总览:分层+模块化+微服务治理组件整合
┌────────────────────────────┐ │ 接入层(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 接口定义