Nacos 中的公共配置文件
公共配置文件为各个模块都可用的配置文件,这些配置的引用已经在 bootstrap.yml
中完成了引用,实施人员不需要改动 bootstrap.yml
中的引用方式,因为不同模块使用的配置文件会有所不同。 但是,需要了解每个配置文件的作用,因为多数文件都要进行修改。
注意
- 配置中心的配置文件都是以
yaml
结尾。 - 应用中也就是 jar 包中的配置文件,后缀名为
yml
。
datasource.yaml
数据源配置文件仅配置数据库连接信息,目前为止我们都是使用同一个数据库。数据源的配置是所有模块通用的,所有需要连接数据库的模块都要引入此文件。
以下是 MySQL 的配置信息,其中大部分参数都不需要修改,一般情况下只需要修改 4,12,19-22
行(高亮)部分的配置,其中第 12 行只有在连接 Oracle 数据库时需要修改。
simperfect:
datasource:
dynamic:
enabled: true # 是否启用多租户模式 true-启用 false-禁用
spring:
datasource:
dynamic:
druid:
initial-size: 5 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
min-idle: 5 # 最小连接池数量
max-active: 20 # 最大连接池数量
validation-query: select 'x' # 用来检测连接是否有效的sql,要求是一个查询语句,MySQL与sqlserver使用select 'x';Oracle使用select 1 from dual。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-while-idle: true # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMills,执行validationQuery检测连接是否有效。
pool-prepared-statements: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size: -1 # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/rm3cdb_2023?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
username: username
password: password
参数详解
simperfect.datasource.dynamic.enabled
是否启用多租户模式 true-启用 false-禁用。这个配置主要看当前要实施的项目是否为多租户,如果是多租户项目,那么就设置为 true
,如果不是那么就设置为 false
。
何为多租户?
- 多个客户使用同一个应该程序,且需要进行数据隔离。这里的多个客户并不是多个账号,可以理解为多套账号。
- 我们的多租户数据隔离是通过连接不同的数据库来解决的,也就是每个租户的数据是完全隔离的。
- 多租户的数据库会分为主库和租户库,只需配置主库连接信息,会根据不同的租户来切换不同的租户数据库。
spring.datasource.dynamic.druid.validation-query
用来检测连接是否有效的 Sql,要求是一个查询语句,不同的数据库的配置有所不同,详见下表:
数据库 | 连接测试语句 |
---|---|
MySQL | SELECT 'x' |
SqlServer | SELECT 'x' |
达梦 | SELECT 'x' |
Oracle | SELECT 1 FROM DUAL |
spring.datasource.dynamic.datasource.master.driver-class-name
数据库驱动,不同类型的数据库要配置不同的驱动,详见下表:
数据库 | 驱动 |
---|---|
MySQL | com.mysql.cj.jdbc.Driver |
SqlServer | com.microsoft.sqlserver.jdbc.SQLServerDriver |
达梦 | 目前不支持 |
Oracle | 目前不支持 |
配置文件样例
MySQL
simperfect:
datasource:
dynamic:
enabled: true # 是否启用多租户模式 true-启用 false-禁用
spring:
datasource:
dynamic:
druid:
initial-size: 5 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
min-idle: 5 # 最小连接池数量
max-active: 20 # 最大连接池数量
validation-query: select 'x' # 用来检测连接是否有效的sql,要求是一个查询语句,MySQL与sqlserver使用select 'x';Oracle使用select 1 from dual。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-while-idle: true # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
pool-prepared-statements: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size: -1 # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
datasource:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/rm3cdb_2023?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
username: username
password: password
SqlServer
simperfect:
datasource:
dynamic:
enabled: true # 是否启用多租户模式 true-启用 false-禁用
spring:
datasource:
dynamic:
druid:
initial-size: 5 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
min-idle: 5 # 最小连接池数量
max-active: 20 # 最大连接池数量
validation-query: select 'x' # 用来检测连接是否有效的sql,要求是一个查询语句,MySQL与sqlserver使用select 'x';Oracle使用select 1 from dual。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
test-while-idle: true # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
pool-prepared-statements: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
max-pool-prepared-statement-per-connection-size: -1 # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
datasource:
master:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://127.0.0.1:1533;databaseName=rm3cdb_2023
username: username
password: password
redis.yaml
Redis 配置文件配置 Redis 的连接信息,所有需要使用 Redis 的模块都需要引入此配置文件。不同的模式的 Redis 服务连接方式不同
单机模式连接
单机模式、或者使用代理模式的连接,只需修改 host
、port
、password
即可。
注意
当没有密码时,需要删除第 6
行整行删除。
spring:
data:
redis:
host: 127.0.0.1
port: 6379
password: password
connect-timeout: 3000 # 连接超时时间 单位 ms (毫秒)
client-type: lettuce
lettuce:
pool:
enabled: true
min-idle: 0
max-idle: 8
max-active: 8
哨兵模式连接
哨兵模式连接,只需修改 master
、nodes
、password
即可。
注意
哨兵模式下需要两种密码:哨兵密码、数据节点密码。
需要根据服务器情况对密码进行配置:
- 如果数据节点没有密码,需要删除第
4
行整行删除。 - 如果哨兵没有密码,需要删除第
15
行整行删除。
spring:
data:
redis:
password: password
connect-timeout: 3000 # 连接超时时间 单位 ms (毫秒)
client-type: lettuce
lettuce:
pool:
enabled: true
min-idle: 0
max-idle: 8
max-active: 8
sentinel:
master: master
password: password
nodes:
- 127.0.0.1:26379
- 127.0.0.2:36379
- 127.0.0.3:46379
如何查看是否开启了哨兵鉴权
使用 vim 命令查看配置文件 sentinel.conf
中是否配置了 sentinel-pass
# sentinel sentinel-pass <password>
file.yaml
文件配置文件需要配置文件存储、访问目录、签发文件访问签名等配置。要根据不同的操作系统和项目配置不同的存储路径,否则无法正常使用。
文件存储目录
在项目现场一般会有存储盘专属存储目录,建议将文件存储目录配置到存储盘,这样不会因为存储盘空间不足导致文件存储失败。
simperfect:
file:
storage-path-prefix: /home/simperfect/files/ # 文件存储的真实目录前缀
文件访问目录
文件访问目录我们一般固定为 /files/
, 一般情况下不需要修改,除非客户不允许使用此 url,或者此 url 已被占用。如果修改也要同步修改 Nginx 配置文件。
提示
默认配置文件中不会有此项配置,通常我们都使用默认值。
simperfect:
file:
access-path-prefix: /files/ # 文件访问根目录,全系统文件访问路径映射根目录
access-path-prefix
的配置要对应以下 Nginx 的配置,下列配置中的 files
。
# 文件映射地址
location /files {
proxy_pass http://localhost:8000/basic-paper-file/files;
include proxy.conf; # 引入扩展配置文件
# 注意这里不用配置缓存时间,因为 server 有自己的规则进行缓存
}
如果要修改访问目录前缀,那么必须同步修改两个地方。下面,我们要将 access-path-prefix
修改为 /bp-files/
,则需要修改以下配置:
- 修改
access-path-prefix
的配置simperfect: file: access-path-prefix: /bp-files/ # 文件访问根目录,全系统文件访问路径映射根目录
- 修改 Nginx 配置的
proxy_pass
中的files
、Nginx 配置的location
中的files
,且要保持名字相同。# 文件映射地址 location /bp-files { proxy_pass http://localhost:8000/basic-paper-file/bp-files; include proxy.conf; # 引入扩展配置文件 # 注意这里不用配置缓存时间,因为 server 有自己的规则进行缓存 }
文件签名配置
文件访问需要使用签名,并不是完全暴露的,也就是说我们的文件是存在访问权限的,如果没有文件签名则无法访问文件。这对于一些安全级别较高的项目来讲非常有用,我们可以根据项目的要求来修改签名的有效时长。
提示
默认配置文件中不会有此项配置,通常我们都使用默认值。
simperfect:
file:
jwt-token-timeout: 2h # 文件JWT超时时长(单位:分),默认为 2 小时
jwt.yaml
JWT token 密钥配置,用于生成系统中的 token,包括但不限于等于、文件签名等。需要签发、验证签名(token)的模块都需要引用此配置(例:如果需要签发文件下载签名那这个配置是必须的)
注意
为了系统安全考虑,每个项目必须使用不同公钥和私钥,请勿使用网络上的工具生成,如果您无法通过 OpenSSL 生成, 可以使用 basic-paper-tools 工具来生成。
如何安装 OpenSSL 生成密钥对可以移步至 OpenSSL 了解。 如何安装和生成密钥对。生成后可以将对应的公钥、私钥写入配置中。
simperfect:
jwt:
token-timeout: 30m # 登录鉴权 token 的超时时间
key-pair:
public-key: public-key # RSA 公钥 (为了系统安全考虑,不同项目需要配置不同的值)
private-key: private-key # RSA 私钥 (为了系统安全考虑,不同项目需要配置不同的值)
password-codec.yaml
用于配置密码加密规则,这个加密规则配置后,所有密码都会使用这个加密规则进行加密,为了用户数据安全无法解密。
注意
为了数据安全,每个项目必须使用不同的加密规则。这个参数设置之后不可修改,否则会导致原始用户无法登录。
simperfect:
encode:
password:
static-salt: # 静态盐值,一个字符串类型的值
number-of-iterations: # 迭代次数,输入一个数字,建议大于 1