====== Nop 平台的微服务部署 ======
Nop 平台支持微服务架构。每个模块都可以独立部署为一个服务,通过 RPC 相互调用。
===== 模块即服务 =====
nop-entropy 是多模块 Maven 项目。每个模块可以单独打包为独立服务:
nop-auth/nop-auth-app → 用户权限服务
nop-sys/nop-sys-app → 系统配置服务
nop-report/nop-report-app → 报表服务
nop-wf/nop-wf-app → 工作流服务
每个 app 模块是完整的 Quarkus 应用,可以独立编译和启动:
cd nop-auth/nop-auth-app
./mvnw compile quarkus:dev
===== 服务间通信:nop-rpc =====
服务间通过 nop-rpc 模块通信,支持 REST 和 gRPC 两种协议。
定义 API 接口(api.xml 文件):
按约定的目录结构放置,框架自动注册为 GraphQL/REST/gRPC 端点。
===== 服务发现:Nacos =====
nop-cluster-nacos 模块集成 Nacos,用于服务注册和发现。
配置:
# application.properties
nop.cluster.nacos.server-addr=localhost:8848
nop.cluster.nacos.namespace=public
nop.application.name=auth-service
启动时自动注册到 Nacos,调用方通过服务名调用:
支持的服务注册中心:
* Nacos(生产推荐)
* ZooKeeper(通过扩展)
* Consul(通过扩展)
* 直连(开发调试用)
===== 流量控制:Sentinel =====
nop-cluster-sentinel 模块集成阿里 Sentinel,提供限流和熔断能力。
nop.cluster.sentinel.flow-rules=classpath:sentinel-flow-rules.json
nop.cluster.sentinel.degrade-rules=classpath:sentinel-degrade-rules.json
规则在运行时热加载,无需重启。
===== 分布式缓存:Hazelcast =====
nop-hazelcast 模块提供分布式缓存支持,多节点共享缓存状态。
nop.hazelcast.config=classpath:hazelcast.xml
聚合查询、会话共享、配置缓存等场景适用。
===== 集群管理 =====
nop-cluster-admin 模块提供集群管理命令:
* 优雅关闭(ShutdownCommand)
* 健康检查
* 集群成员查看
===== 典型部署架构 =====
===== nop-gateway 网关 =====
nop-gateway 是平台自带的网关模块,支持路由转发、协议转换、拦截器链。可以统一暴露内部微服务接口,也可以在网关层完成 AI API 的协议转换(OpenAI ↔ Claude ↔ Ollama)。
配置路由(gateway.xml):
内置能力:
* 路径匹配路由转发
* 自定义拦截器
* 流式响应
* AI 协议转换
* Gateway HTTP Filter 集成
┌──────────────┐
│ nop-gateway │
└──────┬───────┘
│
┌─────────────┼─────────────┐
│ │ │
┌────▼───┐ ┌────▼───┐ ┌────▼───┐
│ Auth │ │ Sys │ │ Report │
│ Service│ │ Service│ │ Service│
└────┬───┘ └────┬───┘ └────┬───┘
│ │ │
┌────▼─────────────▼─────────────▼───┐
│ Nacos / Hazelcast │
└────────────────────────────────────┘
│ │ │
┌────▼───┐ ┌────▼───┐ ┌────▼───┐
│ MySQL │ │ Redis │ │ Kafka │
└────────┘ └────────┘ └────────┘
===== 部署步骤 =====
**1. 编译每个服务:**
cd nop-entropy
./mvnw clean install -DskipTests -Dquarkus.package.type=uber-jar
**2. 打包为 Docker 镜像:**
每个 app 模块的 target 目录下生成 `*-runner.jar`,即为可执行的 fat jar:
java -jar nop-auth-app/target/nop-auth-app-2.0.0-SNAPSHOT-runner.jar
**3. 编排服务:**
可以用以下方式编排:
* Docker Compose(开发环境)
* Kubernetes(生产环境)
* 单机部署(小规模)
===== 进一步阅读 =====
* [[.:module_guide|模块使用指南]]
* [[.:setup_guide|环境配置]]
* deploy/ 目录下的监控配置(Prometheus + Grafana)