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
| 配置项 | 说明 | 修改要求 |
|---|---|---|
host | MySQL 地址 | 替换为实际容器名、IP 或域名 |
port | MySQL 端口,示例为 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、port | Redis 的实际连接地址和端口 |
password | Redis 访问密码,与 Redis 服务端配置一致;未启用认证时按实际情况留空 |
database | Redis 逻辑库编号,示例为 3 |
同一套业务中需要共享 Redis 数据的微服务,应使用一致的 Redis 地址和逻辑库。不同部署环境应避免误用同一份业务缓存。
三、Nacos
spring:
cloud:
nacos:
discovery:
server-addr: shoptnt-nacos:8848
username: Nacos用户名
password: Nacos密码
| 配置项 | 说明 |
|---|---|
discovery.server-addr | 服务注册与发现使用的 Nacos 地址,示例端口为 8848 |
username、password | Nacos 认证账号和密码 |
这里的 discovery.server-addr 用于服务注册与发现。启动脚本连接 Nacos 读取配置所用的地址、账号及 Namespace,也需要在启动脚本说明中按实际环境设置,两处应指向预期的 Nacos 环境。
四、RabbitMQ
spring:
rabbitmq:
host: shoptnt-rabbitmq
port: 5672
username: RabbitMQ用户名
password: RabbitMQ密码
virtual-host: bbcv80-mic
| 配置项 | 说明 |
|---|---|
host、port | RabbitMQ 连接地址和 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-ips | Elasticsearch 节点地址;多个节点按英文逗号分隔 |
cluster-rest-port | HTTP 接口端口,示例为 9200 |
username、password | Elasticsearch 认证信息;是否填写取决于服务端是否启用认证 |
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-secret | Token 加密密钥,同一套业务服务应保持一致,不能直接复用文档示例 |
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-strategy | MVC 路径匹配策略,沿用当前产品配置 |
如修改上传限制,还需检查网关和反向代理的请求大小限制,避免应用允许上传、入口却提前拒绝请求。
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。目录应存在或可由应用创建,并确保运行用户具有写入权限。此项是应用日志路径配置,与启动脚本重定向输出的日志文件可能不同。
十、发布与验证
- 确认正在编辑当前部署环境对应的 Nacos Namespace、Group 和
common.yaml。 - 检查数据库名称、中间件地址及账号密码,替换许可证、Token 密钥和业务域名。
- 合并同名 YAML 节点并检查缩进,发布配置。
- 首次部署按启动脚本说明启动微服务;修改已有部署的启动期配置后,重启受影响的服务。
- 检查 Nacos 服务注册、服务日志、数据库及中间件连接,并验证登录、商品查询、下单等实际业务。
Nacos 发布成功不代表所有服务已即时应用新配置。是否支持动态刷新取决于具体配置项和程序实现;数据源、认证和连接地址等配置变更后,应核对服务实际生效情况。