deployment.md 3.83 KB

多服务部署

xly 不是单个 Spring Boot WAR。仓库包含多个可部署模块,以及一些也被 xlyEntry 作为依赖使用的类库型 WAR 模块。

主要模块

服务 / 模块 角色 代码事实
xlyEntry 主运行时与 builder/admin surface。承载 /business/*/gdsmodule/*/gdsconfigform/*/gdsconfigtb/*、报表、登录和其他框架 controller。 依赖 xlyManagexlyBusinessServicexlyFlow
xlyApi 面向 /api/*/online/*/pro/*/thirdparty/* 等端点的 API 模块。 独立 Spring Boot 应用类 ApiApplicationBoot
xlyInterface 外部集成模块,带 Swagger 依赖和第三方集成代码。 独立 Spring Boot 应用类 InterfaceApplicationBoot
xlyPlc 车间 PLC 桥接(切片 6)。 独立 Spring Boot 应用类 PlcApplicationBoot
xlyFace 可选人脸识别模块。 独立模块,仍存在于 Gradle build 中。
xlyFlow 工作流 / Activiti 代码和 controller。 作为模块存在,但当前分支中 XlyFlowApplicationBoot 被注释,因此应视为通过 xlyEntry 消费的代码,而不是明确可独立运行的 app。

每个模块有自己的 application.yml 和多个 application-<profile>.yml。启动时通过 -Dspring.profiles.active=... 选择 profile。

settings.gradle 中禁用的模块

//include 'xlyErpTask'
//include 'xlyRxtx'
//include 'xlyFile'

三者在磁盘上存在,但被排除在当前 Gradle build 之外:

  • xlyErpTask:长运行后台任务。
  • xlyRxtx:原生串口库。xlyPlc 不需要直接串口访问时会禁用;部分机型使用 TCP / Ethernet。
  • xlyFile:旧文件管理模块,已被 xlyPlatFileUpload 中的阿里云 OSS 集成取代。

维护人员清理代码库时应判断删除还是保留为历史参考。它们占用磁盘空间,但不影响 build。

Plat* 表族

xlyPlat* 模块(xlyPlatMerchantControllerxlyPlatUserServicexlyPlatPayServicexlyPlatMarketingServicexlyPlatCainiaoWaybillSevicexlyPlatSmsServicexlyPlatReportFormxlyPlatFileUploadxlyPlatJmsConsumer / ProductorxlyPlatTaskxlyPlatWebsocketxlyPlatConstant)属于 B2B 印刷平台层,不在本 Wiki 范围内。

服务如何互相发现

三种通信通道:

  1. 共享数据库:每个服务读写同一个 MySQL schema。大多数跨服务“通信”是通过共享表隐式发生。
  2. 消息:代码库中同时存在 ActiveMQ / JMS 和 RocketMQ。缓存失效(元数据变更后的缓存失效)使用 ActiveMQ / JMS 路径。
  3. HTTP REST:同步调用,例如 xlyApi 调用 xlyEntry 的 /business/* 端点。

application-<profile>.yml 中按环境硬编码的 peer URL 外,没有服务注册 / 发现机制。

部署环境中的 URL 路由

工作区 .env.local 在实时环境中把 后台 指向端口 8597前台 指向端口 8598。这足以识别两个面向操作人员的 surface;反向代理和 context-path 映射属于部署细节,不是本仓库中有代码依据的事实。

Profile 组合

application-saas.ymlapplication-linux.ymlapplication-win.ymlapplication-15S.ymlapplication-S10.ymlapplication-pro.ymlapplication-T0.ymlapplication-T1.yml 等覆盖以下组合:

  • 操作系统(linux / win)。
  • 客户类别(saas、15S、S10 等)。
  • 环境(dev、pro)。
  • 印刷机机型(xlyPlc)。

每个部署为每个服务选择一个 profile。“某客户 → 哪些 profile”的映射位于运维部署文档,不在代码库中。

未决:生产 URL 路由

8597 / 8598 的精确 nginx / 反向代理配置不在仓库中。只有拿到部署侧配置后再补入本页。