跳到主要内容

common.yaml

common.yaml 用于集中配置微服务共用的数据库、Redis、RabbitMQ、Elasticsearch、业务域名、认证密钥和任务调度等信息。在 Nacos 中找到当前部署环境对应的 common.yaml,根据实际环境修改并发布。

以下示例中的容器名称适用于同一 Docker 网络内的服务互访。使用源码脚本部署,或中间件部署在其他服务器时,应替换为微服务能够访问的实际 IP 或域名。例如,MySQL 的 shoptnt-mysql、Redis 的 shoptnt-redis 不能直接当作所有部署方式通用的地址。

修改方式

本文按模块拆分展示配置。保存到同一个 common.yaml 时,需要将同名节点合并,例如 Redis、Nacos、RabbitMQ 等配置都应放在同一个 spring: 节点下,不要重复定义多个顶层 spring:。

示例中的密码、许可证和 Token 密钥为占位值,请填写实际交付配置。

一、MySQL 与数据源​

数据库连接和业务库名称​

config_mysql:
host: shoptnt-mysql
port: 3306
username: 数据库用户名
password: 数据库密码
db_distribution: md_distribution
db_goods: md_goods
db_member: md_member
db_statistics: md_statistics
db_system: md_system
db_trade: md_trade
配置项说明修改要求
hostMySQL 地址替换为实际容器名、IP 或域名
portMySQL 端口,示例为 3306与实际服务端口一致
username、password数据库连接账号和密码使用具有对应业务库访问权限的账号
db_distribution分销业务库,示例为 md_distribution与实际初始化的数据库名称一致
db_goods商品业务库,示例为 md_goods同上
db_member会员业务库,示例为 md_member同上
db_statistics统计业务库,示例为 md_statistics同上
db_system系统业务库,示例为 md_system同上
db_trade交易业务库,示例为 md_trade同上

各业务服务统一读取这里的数据库连接信息,并使用对应的业务库配置。调整数据库地址、账号或库名时,应在此处统一修改,确保配置与实际部署环境一致。启动前还需完成对应业务库的初始化;仅修改配置中的库名,不会自动创建数据库或数据表。

公共数据源​

spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${config_mysql.username}
password: ${config_mysql.password}

type 指定 Druid 数据源,driver-class-name 指定 MySQL 驱动。用户名和密码通过 ${config_mysql.*} 引用上方配置,修改数据库账号时统一调整 config_mysql 即可。

这段公共数据源没有定义 JDBC URL。各业务服务还需要使用与自身业务库对应的连接配置,不能仅凭公共账号配置判断数据库连接已完整。

二、Redis​

spring:
data:
redis:
host: shoptnt-redis
port: 6379
password: Redis密码
database: 3
配置项说明
host、portRedis 的实际连接地址和端口
passwordRedis 访问密码,与 Redis 服务端配置一致;未启用认证时按实际情况留空
databaseRedis 逻辑库编号,示例为 3

同一套业务中需要共享 Redis 数据的微服务,应使用一致的 Redis 地址和逻辑库。不同部署环境应避免误用同一份业务缓存。

三、Nacos​

spring:
cloud:
nacos:
discovery:
server-addr: shoptnt-nacos:8848
username: Nacos用户名
password: Nacos密码
配置项说明
discovery.server-addr服务注册与发现使用的 Nacos 地址,示例端口为 8848
username、passwordNacos 认证账号和密码

这里的 discovery.server-addr 用于服务注册与发现。启动脚本连接 Nacos 读取配置所用的地址、账号及 Namespace,也需要在启动脚本说明中按实际环境设置,两处应指向预期的 Nacos 环境。

四、RabbitMQ​

spring:
rabbitmq:
host: shoptnt-rabbitmq
port: 5672
username: RabbitMQ用户名
password: RabbitMQ密码
virtual-host: bbcv80-mic
配置项说明
host、portRabbitMQ 连接地址和 AMQP 端口
username、password消息队列账号和密码
virtual-host当前业务使用的虚拟主机,示例为 bbcv80-mic

需要提前在 RabbitMQ 中创建对应虚拟主机,并为业务账号授予访问权限。virtual-host 应填写实际创建的名称,不要与管理后台登录地址混淆。

五、Elasticsearch​

健康检查连接地址​

spring:
elasticsearch:
uris:
- http://shoptnt-elasticsearch:9200

该地址用于 Spring Elasticsearch 客户端及其健康检查。替换为实际 Elasticsearch 地址;如使用 HTTPS,应同步调整协议和相应认证配置。

业务索引配置​

elastic-jest:
index-name: shoptnt-mic
ssl: "off"
cluster-ips: shoptnt-elasticsearch
cluster-rest-port: 9200
username:
password:
配置项说明
index-name业务索引名称,示例为 shoptnt-mic
ssl是否通过 HTTPS 连接 Elasticsearch,示例 off 表示使用 HTTP
cluster-ipsElasticsearch 节点地址;多个节点按英文逗号分隔
cluster-rest-portHTTP 接口端口,示例为 9200
username、passwordElasticsearch 认证信息;是否填写取决于服务端是否启用认证

spring.elasticsearch.uris 和 elastic-jest 是两组配置,部署时都需要检查,避免健康检查和业务访问连接到不同环境。修改已有业务的索引名称前,应确认对应索引及数据已准备完成。

六、ShopTNT 业务配置​

产品类型、许可证和 Token 密钥​

javashop:
product: microservice
runmode: cluster
license[0]: "请填写交付的许可证内容"
license[1]: "请填写交付的许可证内容"
token-secret: "请替换为当前环境使用的高强度随机密钥"
ssl: "on"
配置项说明
product微服务产品填写 microservice
runmode当前示例使用 cluster
license[0]、license[1]填写对应产品交付的许可证,按实际交付数量配置
token-secretToken 加密密钥,同一套业务服务应保持一致,不能直接复用文档示例
ssl业务域名是否使用 HTTPS;示例为 on,应与实际入口协议一致

这里的 javashop.ssl 控制业务侧协议配置,与上面的 elastic-jest.ssl 含义不同,不需要因为 Elasticsearch 使用 HTTP 就将业务 HTTPS 一并关闭。

认证与验证码有效期​

javashop:
timeout:
accessTokenTimeout: 3600
refreshTokenTimeout: 4200
captchaTimout: 120
smscodeTimout: 120
配置项说明示例值
accessTokenTimeout访问 Token 有效期,单位秒3600,即 1 小时
refreshTokenTimeout刷新 Token 有效期,单位秒4200,即 70 分钟
captchaTimout图形验证码有效期,单位秒120,即 2 分钟
smscodeTimout短信验证码有效期,单位秒120,即 2 分钟

captchaTimout 和 smscodeTimout 是程序使用的配置键名,保留该拼写,不要自行改成 Timeout。

域名与来源配置​

javashop:
domain:
buyer: shop.example.com
mobileBuyer: wap.example.com
callback: api.example.com/bbcv8-mic
referer:
- '*.example.com'
配置项说明
domain.buyer买家端 PC 域名
domain.mobileBuyer买家端移动站点域名
domain.callback支付、第三方登录等业务使用的 API 回调入口;包含网关路径前缀时一并填写
referer业务允许的来源配置,按实际访问域名或 IP 设置

这里沿用提供的配置格式,域名项不附加 http:// 或 https://,协议通过 javashop.ssl 配置。回调入口应能由相应第三方服务访问,并与实际网关转发路径一致。

七、XXL-JOB​

xxl:
job:
admin:
addresses: http://shoptnt-xxl-job-admin:8080/xxl-job-admin
executor:
appname: timing-job-execute
ip:
port: 6999
logpath: /opt/xxl-serverlogs
logretentiondays: -1
accessToken:
配置项说明
admin.addresses调度中心地址,应包含实际的 /xxl-job-admin 访问路径
executor.appname执行器名称,应与调度中心配置一致
executor.ip执行器对外可达的 IP;留空时由框架自动获取,多网卡或跨网络部署时需检查实际注册地址
executor.port执行器端口,示例为 6999,调度中心需要能够访问
executor.logpath任务执行日志目录,运行用户需要具有写入权限
executor.logretentiondays执行日志保留天数;示例 -1 不启用按天自动清理
accessToken调度访问令牌,启用时需与调度中心保持一致

八、接口与框架配置​

JSON、文件上传与路径匹配​

spring:
jackson:
property-naming-strategy: SNAKE_CASE
servlet:
multipart:
enabled: true
max-file-size: 20MB
max-request-size: 20MB
mvc:
pathmatch:
matching-strategy: ant-path-matcher
配置项说明
property-naming-strategy使用下划线形式的 JSON 属性命名策略,例如 userName 对应 user_name
multipart.enabled启用文件上传
max-file-size单个上传文件大小上限,示例为 20MB
max-request-size一次上传请求大小上限,示例为 20MB,多文件总量也受此限制
matching-strategyMVC 路径匹配策略,沿用当前产品配置

如修改上传限制,还需检查网关和反向代理的请求大小限制,避免应用允许上传、入口却提前拒绝请求。

Spring Security 账号​

spring:
security:
user:
name: "请填写实际用户名"
password: "请填写实际密码"

用于 Spring Security 用户配置,不是商城买家、商家或平台业务账号。实际保护的接口由服务的安全配置决定,部署时按交付要求设置。

Feign 与 Sentinel​

feign:
httpclient:
enabled: false
okhttp:
enabled: true
sentinel:
enabled: true

该配置选择 OkHttp 作为 Feign HTTP 客户端,并启用 Feign 的 Sentinel 集成。Sentinel 相关配置与规则还需结合 sentinel.yaml 和实际服务配置检查。

数据库健康检查​

原配置使用 management.health.db: false 表达关闭数据库健康检查的意图。配置 Spring Boot 的数据库健康检查时,建议使用明确的 enabled 属性:

management:
health:
db:
enabled: false

关闭健康检查不会关闭业务数据库连接,也不能代替数据库连通性验证。

九、压缩与日志​

响应压缩​

server:
compression:
enabled: true
mime-types: application/json
min-response-size: 102400

启用 JSON 响应的 gzip 压缩,大小阈值为 102400 字节,即 100KB。压缩还取决于客户端是否支持,并非所有 JSON 响应都会被压缩。

日志目录​

logging:
file:
path: ${LOG_PATH:/opt/server}

优先使用环境变量 LOG_PATH 指定的路径;未设置时使用 /opt/server。目录应存在或可由应用创建,并确保运行用户具有写入权限。此项是应用日志路径配置,与启动脚本重定向输出的日志文件可能不同。

十、发布与验证​

  1. 确认正在编辑当前部署环境对应的 Nacos Namespace、Group 和 common.yaml。
  2. 检查数据库名称、中间件地址及账号密码,替换许可证、Token 密钥和业务域名。
  3. 合并同名 YAML 节点并检查缩进,发布配置。
  4. 首次部署按启动脚本说明启动微服务;修改已有部署的启动期配置后,重启受影响的服务。
  5. 检查 Nacos 服务注册、服务日志、数据库及中间件连接,并验证登录、商品查询、下单等实际业务。

Nacos 发布成功不代表所有服务已即时应用新配置。是否支持动态刷新取决于具体配置项和程序实现;数据源、认证和连接地址等配置变更后,应核对服务实际生效情况。