微服务项目common配置文件模板
这个包含了微服务中大多数技术的配置,哪怕自己用不到的配置文件也可以写上(不会报错)
在使用下面配置文件的时候需要将下面的ip地址和部分参数 替换成 自己的ip和参数
具体使用细节可以参考我往期文章
微服务中提取yml配置文件至common模块 #掘金文章# juejin.cn/post/766793…
1.1common模块配置文件模板
# ============================================================
# 微服务 公共基础配置(所有业务微服务共用)
# 使用方式:各微服务在 application.yml 中通过
# spring.profiles.include: common
# 即可加载本文件的全部配置
# ============================================================
# ==================== 自定义变量(统一管理各组件 IP 和端口) ====================
# 将散落的 IP/端口抽到顶层,方便后续统一修改,底层配置通过 ${app.host.xxx} 引用
app:
host:
nacos: 192.168.55.55 # Nacos 注册中心 / 配置中心 所在服务器 IP
mysql: 192.168.55.55 # MySQL 数据库 服务器 IP
redis: 192.168.55.55 # Redis 缓存 服务器 IP
es: 192.168.55.55 # Elasticsearch 搜索引擎 服务器 IP
rocketmq: 192.168.55.55 # RocketMQ 消息队列 服务器 IP
sentinel: 192.168.55.55 # Sentinel 控制台(Dashboard)所在服务器 IP
local: 127.0.0.1 # 【本机】注册到 Nacos 的 IP(本地开发用 127.0.0.1,部署时改真实 IP)
port:
nacos: 8848 # Nacos 服务端口
sentinel: 18080 # Sentinel Dashboard Web 控制台端口
sentinel-transport: 8179 # Sentinel 客户端与 Dashboard 通信的 gRPC 端口
seata: 8091 # Seata Server 端口
rocketmq: 9876 # RocketMQ NameServer 端口
spring:
# ==================== 数据库连接池配置(Druid) ====================
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver # JDBC 驱动类(MySQL 8.x 专用)
username: root # 数据库用户名
password: root # 数据库密码
type: com.alibaba.druid.pool.DruidDataSource # 使用 Druid 连接池(自带性能监控 + SQL 防火墙)
druid:
initial-size: 5 # 连接池启动时初始创建的连接数
max-active: 100 # 连接池最大活跃连接数(高峰期能承载的并发连接上限)
min-idle: 5 # 连接池最小空闲连接数(保持保底连接,避免突发请求等待建立)
# ==================== Redis 缓存配置 ====================
data:
redis:
host: ${app.host.redis} # Redis 服务器 IP(引用上方 app.host.redis)
port: 6379 # Redis 默认端口
password: javasm # Redis 连接密码
cloud:
# ==================== Nacos 注册与发现 ====================
# 服务启动时自动向 Nacos 注册自身,并能拉取其他服务实例列表
nacos:
server-addr: ${app.host.nacos}:${app.port.nacos} # Nacos 服务地址(IP:端口)
discovery:
namespace: bunny-flix # Nacos 命名空间(实现环境隔离,所有微服务需使用同一 namespace 才能互相发现)
ip: ${app.host.local} # 向 Nacos 注册时使用的本机 IP(Docker/云环境必须指定,否则可能注册容器内部 IP)
# ==================== Sentinel 限流熔断 ====================
sentinel:
transport:
dashboard: ${app.host.sentinel}:${app.port.sentinel} # Sentinel Dashboard 地址(可视化监控面板)
port: ${app.port.sentinel-transport} # 本机与 Dashboard 通信的 gRPC 端口
client-ip: ${app.host.local} # 本机 IP(Dashboard 通过此 IP 回连本机推送规则)
eager: false # false=懒加载:首次调用资源时才初始化 Sentinel;true=项目启动时立刻加载
web-context-unify: false # false=不同 URL 路径的流量分开统计;true=所有 URL 共用同一条流控规则
datasource:
flow:
nacos:
server-addr: ${app.host.nacos}:${app.port.nacos} # Nacos 配置中心地址
data-id: ${spring.application.name}-sentinel-flow # 规则配置 dataId(按微服务名独立命名)
data-type: json # 规则数据格式为 JSON
rule-type: flow # 规则类型:flow=流控(限流)
group-id: DEFAULT_GROUP # Nacos 分组
namespace: bunny-flix # Nacos 命名空间(与注册中心保持一致)
# ==================== OpenFeign 远程调用 ====================
openfeign:
client:
config:
default: # default=所有 FeignClient 接口的默认配置(可针对特定服务名覆盖)
connectTimeout: 5000 # 建立 TCP 连接超时 5 秒
readTimeout: 5000 # 读取响应超时 5 秒(即被调用方必须在 5 秒内返回结果)
compression:
request:
enabled: true # 请求体开启 Gzip 压缩(减小传输数据量)
response:
enabled: true # 响应体开启 Gzip 压缩
# ==================== Seata 分布式事务 ====================
# 解决跨服务数据一致性问题(例如:下单 → 扣库存 → 扣余额,必须全部成功或全部回滚)
seata:
enabled: true # 启用 Seata 分布式事务
tx-service-group: my_tx_group # 事务分组名(对应下方 vgroup-mapping 的 key)
service:
vgroup-mapping:
my_tx_group: default # 将事务分组 my_tx_group 映射到 Seata 集群 default
grouplist:
default: ${app.host.nacos}:${app.port.seata} # Seata Server 地址(事务协调器 TC 的 IP:端口)
tm-commit-retry-count: 1 # 事务管理器(TM)提交失败后的重试次数
tm-rollback-retry-count: 1 # 事务管理器(TM)回滚失败后的重试次数
client:
rm:
report-success-enable: false # false=不向 TC 上报分支事务成功状态(减少网络开销,阶段一提交成功后无需额外上报)
lock-retry-policy-branch-enable: false # false=分支事务加锁失败时不做同步重试(避免阻塞调用链路)
registry:
type: nacos # Seata 注册中心类型:从 Nacos 发现 Seata Server
nacos:
server-addr: ${app.host.nacos}:${app.port.nacos} # Nacos 地址
namespace: seata # Seata 专用命名空间(与业务命名空间隔离)
group: SEATA_GROUP # Nacos 分组名称
application: seata-server # Seata Server 注册到 Nacos 的服务名
config:
type: nacos # Seata 配置中心类型:从 Nacos 拉取 Seata 配置
nacos:
server-addr: ${app.host.nacos}:${app.port.nacos} # Nacos 地址
namespace: seata # 命名空间(与注册保持一致)
group: SEATA_GROUP # Nacos 分组名称
data-id: seataServer.properties # Seata Server 配置文件的 dataId
# ==================== RocketMQ 消息队列 ====================
# 服务间异步解耦通信(例如 drama 更新后发消息,search 消费消息同步到 ES)
rocketmq:
name-server: ${app.host.rocketmq}:${app.port.rocketmq} # NameServer 地址(消息路由注册中心)
producer:
group: ${spring.application.name}-producer-group # 生产者组名(按微服务名自动拼接,便于排查消息来源)
# ==================== MyBatis-Plus 持久层 ====================
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 自动下划线转驼峰:数据库字段 user_name ↔ Java 属性 userName
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # SQL 日志打印到控制台(开发调试用,生产环境建议关闭)
# ==================== 日志配置 ====================
logging:
level:
com.javasm.bunnyflix: debug # 项目自身代码使用 debug 级别(输出详细调试日志)
com.alibaba.nacos: warn # Nacos 客户端只输出 warn 以上级别(减少心跳/注册的冗余日志)
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
# 控制台日志输出格式:时间戳 + 线程名 + 日志级别 + Logger名(最长50字符) + 消息体 + 换行
子项目中使用请加上下面的配置,以及子模块单独需要的配置,这里需要对配置文件有一定的理解
spring:
profiles:
include: common
1.2说明
这个配置文件只是对单个项目中配置文件能提取的公共部分进行提取,并不代表直接拿来就能用,需要根据自己项目的实际情况进行更改
比如:mysql需要你自己配置连接地址
spring:
datasource:
url: jdbc:mysql://192.168.0.70:3306/bunny_flix?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
redis需要配置仓库id
spring:
data:
redis:
database: 0
等等很多,这里只是举例这两个
注意:getaway技术服务由于和spring web依赖冲突,所以一般情况下gateway的配置文件不去引入common(可以引入,但不推荐,因为引入也基本用不到,造成资源浪费)