Skip to content

公共开关配置

HaojunRen edited this page May 31, 2024 · 11 revisions

核心配置

# Plugin core config
# 随机权重算法。缺失则默认为MapWeightRandom
spring.application.weight.random.type=MapWeightRandom

# 规则文件的格式,支持xml和json。缺失则默认为xml
spring.application.config.format=xml
# spring.application.config.format=json

# 本地规则文件的路径,支持两种方式:classpath:rule.xml(rule.json) - 规则文件放在resources目录下,便于打包进jar;file:rule.xml(rule.json) - 规则文件放在工程根目录下,放置在外部便于修改。缺失则默认为不装载本地规则
spring.application.config.path=classpath:rule.xml
# spring.application.config.path=classpath:rule.json

# 为微服务归类的Key,一般通过group字段来归类,例如eureka.instance.metadataMap.group=xxx-group或者eureka.instance.metadataMap.application=xxx-application。缺失则默认为group
spring.application.group.key=group
# spring.application.group.key=application

# 业务系统希望大多数时候Spring、SpringBoot或者SpringCloud的基本配置、调优参数(非业务系统配置参数),不配置在业务端,集成到基础框架里。但特殊情况下,业务系统有时候也希望能把基础框架里配置的参数给覆盖掉,用他们自己的配置
# 对于此类型的配置需求,可以配置在下面的配置文件里。该文件一般放在resource目录下。缺失则默认为spring-application-default.properties
spring.application.default.properties.path=spring-application-default.properties

# 负载均衡下,消费端尝试获取对应提供端服务实例列表为空的时候,通过日志方式通知。缺失则默认为false
spring.application.no.servers.notify.enabled=false

# 由于Nacos注册中心会自动把服务名处理成GROUP@@SERVICE_ID的格式,导致根据服务名去获取元数据的时候会找不到。通过如下开关开启是否要过滤掉GROUP前缀。缺失则默认为true
spring.application.nacos.service.id.filter.enabled=true

# 启动和关闭在服务启动的时候参数订阅事件发送。缺失则默认为true
spring.application.parameter.event.onstart.enabled=true

策略配置

# Plugin strategy config
# 开启和关闭Ribbon默认的ZoneAvoidanceRule负载均衡策略。一旦关闭,则使用RoundRobin简单轮询负载均衡策略。缺失则默认为true
spring.application.strategy.zone.avoidance.rule.enabled=true

# 启动和关闭路由策略的时候,对REST方式的调用拦截。缺失则默认为true
spring.application.strategy.rest.intercept.enabled=true

# 启动和关闭Header传递的Debug日志打印,注意:每调用一次都会打印一次,会对性能有所影响,建议压测环境和生产环境关闭。缺失则默认为false
spring.application.strategy.rest.intercept.debug.enabled=true

# 启动和关闭Feign上核心策略Header传递,缺失则默认为true。当全局订阅启动时,可以关闭核心策略Header传递,这样可以节省传递数据的大小,一定程度上可以提升性能
# 核心策略Header指n-d-开头的Header(不包括n-d-env,因为环境路由隔离,必须传递该Header),不包括n-d-service开头的Header
spring.application.strategy.feign.core.header.transmission.enabled=true

# 启动和关闭RestTemplate上核心策略Header传递,缺失则默认为true。当全局订阅启动时,可以关闭核心策略Header传递,这样可以节省传递数据的大小,一定程度上可以提升性能
# 核心策略Header指n-d-开头的Header(不包括n-d-env,因为环境路由隔离,必须传递该Header),不包括n-d-service开头的Header
spring.application.strategy.rest.template.core.header.transmission.enabled=true

# 启动和关闭WebClient上核心策略Header传递,缺失则默认为true。当全局订阅启动时,可以关闭核心策略Header传递,这样可以节省传递数据的大小,一定程度上可以提升性能
# 核心策略Header指n-d-开头的Header(不包括n-d-env,因为环境路由隔离,必须传递该Header),不包括n-d-service开头的Header
spring.application.strategy.web.client.core.header.transmission.enabled=true

# 路由策略的时候,对REST方式调用拦截的时候(支持Feign、RestTemplate或者WebClient调用),希望把来自外部自定义的Header参数(用于框架内置上下文Header,例如:trace-id, span-id等)传递到服务里,那么配置如下值。如果多个用“;”分隔,不允许出现空格
spring.application.strategy.context.request.headers=trace-id;span-id

# 路由策略的时候,对REST方式调用拦截的时候(支持Feign、RestTemplate或者WebClient调用),希望把来自外部自定义的Header参数(用于业务系统自定义Header,例如:mobile)传递到服务里,那么配置如下值。如果多个用“;”分隔,不允许出现空格
spring.application.strategy.business.request.headers=user;mobile;location

# 版本号排序类型。缺失则默认为version
# 版本故障转移或者版本偏好启动时,需要寻址旧的稳定版本
# 1. 当排序类型为version时,适用于版本号采用时间戳或者数字递增的方式。处理逻辑为将排序后版本号列表的第一个值作为旧的稳定版本
# 2. 当排序类型为time时,不限于版本号的格式。处理逻辑为将根据服务实例全局唯一ID的时间戳前缀进行排序,把上线时间最早的服务实例的版本号作为旧的稳定版本
spring.application.strategy.version.sort.type=version
# spring.application.strategy.version.sort.type=time

# 启动和关闭自动扫描目录,当扫描目录未人工配置的时候,可以通过自动扫描方式决定扫描目录。缺失则默认为true
spring.application.strategy.auto.scan.packages.enabled=true

# 启动和关闭嵌套扫描,嵌套扫描指扫描非本工程下外部包的目录,可以支持多层嵌套。缺失则默认为false
spring.application.strategy.auto.scan.recursion.enabled=false

# 启动和关闭DiscoveryAgent安装校验,一旦启动,如果未安装DiscoveryAgent,则抛错退出应用,该配置只适用于Spring Cloud 202x版。缺失则默认为true
spring.application.strategy.agent.validation.enabled=true

# 开启和关闭使用服务名前缀来作为服务组名。缺失则默认为false
spring.application.group.generator.enabled=true

# 服务名前缀的截断长度,必须大于0
spring.application.group.generator.length=15

# 服务名前缀的截断标志。当截断长度配置了,则取截断长度方式,否则取截断标志方式
spring.application.group.generator.character=-

# 开启和关闭使用Git信息中的字段单个或者多个组合来作为服务版本号。缺失则默认为false
spring.application.git.generator.enabled=true

# 插件git-commit-id-plugin产生git信息文件的输出路径,支持properties和json两种格式,支持classpath:xxx和file:xxx两种路径,这些需要和插件里的配置保持一致。缺失则默认为classpath:git.properties
spring.application.git.generator.path=classpath:git.properties
# spring.application.git.generator.path=classpath:git.json

# 使用Git信息中的字段单个或者多个组合来作为服务版本号。缺失则默认为{git.commit.time}-{git.total.commit.count}
# 日期 + Git提交次数的版本号格式
spring.application.git.version.key={git.commit.time}-{git.total.commit.count}
# POM版本号格式
# spring.application.git.version.key={git.build.version}

路由隔离和故障转移配置

# 启动和关闭消费端的服务隔离(基于Group是否相同的策略)。缺失则默认为false
spring.application.strategy.consumer.isolation.enabled=true

# 版本故障转移,即无法找到相应版本的服务实例,路由到老的稳定版本的实例。其作用是防止蓝绿灰度版本发布人为设置错误,或者对应的版本实例发生灾难性的全部下线,导致流量有损
# 在开启版本故障转移的开关前提下,故障转移有三种策略:
# 1. 如果“version-failover”值已配置,指定版本的故障转移,即找不到实例的时候,直接路由到该版本实例
# 2. 如果“version-failover”值未配置
#    2.1 开启“version.failover.stable.enabled”开关, 版本列表排序策略的(取最老的稳定版本的实例)故障转移,即找不到实例的时候,直接路由到最老的稳定版本的实例
#    2.2 关闭“version.failover.stable.enabled”开关,负载均衡策略的故障转移,即找不到实例的时候,执行负载均衡策略
# 启动和关闭版本故障转移。缺失则默认为false
spring.application.strategy.version.failover.enabled=true

# 开启和关闭版本列表排序策略下取稳定版本的版本故障转移。缺失则默认为false
spring.application.strategy.version.failover.stable.enabled=true

# 版本偏好,即非蓝绿灰度发布场景下,路由到老的稳定版本的实例。其作用是防止多个网关上并行实施蓝绿灰度版本发布产生混乱,对处于非蓝绿灰度状态的服务,调用它的时候,只取它的老的稳定版本的实例;蓝绿灰度状态的服务,还是根据传递的Header版本号进行匹配
# 在开启版本偏好的开关前提下,偏好有两种策略:
# 1. 如果“version-prefer”值已配置,指定版本的偏好,即不管存在多少版本,直接路由到该版本实例
# 2. 如果“version-prefer”值未配置,版本列表排序策略的(取最老的稳定版本的实例)偏好,即不管存在多少版本,直接路由到最老的稳定版本的实例
# 启动和关闭版本偏好。缺失则默认为false
spring.application.strategy.version.prefer.enabled=true

# 区域调试转移,即当未对服务指定访问区域的时候,转移到事先指定的区域
# 使用场景示例:
# 开发环境(个人电脑环境)在测试环境(线上环境)进行联调
# 访问路径为A服务 -> B服务 -> C服务,A服务和B服务在开发环境上,C服务在测试环境上
# 调用时候,在B服务上进行如下两个配置,并在最前端传入的Header(n-d-region)指定为B的开发环境区域(用来保证A服务和B服务只在开发环境调用),而B服务会自动转移调用到测试环境上的C服务实例,但不会转移到其它个人电脑的C服务实例
# 该功能的意义,个人电脑环境可以接入到测试环境联调,当多套个人环境接入时候,可以保护不同的个人环境间不会彼此调用
# 通过“region-transfer”值进行区域转移值配置,如果缺失,则报错
# 启动和关闭区域调试转移。缺失则默认为false
spring.application.strategy.region.transfer.enabled=true

# 在开启区域故障转移的开关前提下,故障转移有两种策略:
# 1. 如果“region-failover”值已配置,指定区域的故障转移,即找不到实例的时候,直接路由到该区域实例
# 2. 如果“region-failover”值未配置,负载均衡策略的故障转移,即找不到实例的时候,执行负载均衡策略
# 启动和关闭区域故障转移。缺失则默认为false
spring.application.strategy.region.failover.enabled=true

# 启动和关闭环境故障转移。缺失则默认为false
# 如果“env-failover”值未配置,则默认为common
spring.application.strategy.environment.failover.enabled=true

# 启动和关闭可用区亲和性,即同一个可用区的服务才能调用,同一个可用区的条件是调用端实例和提供端实例的元数据Metadata的zone配置值必须相等。缺失则默认为false
spring.application.strategy.zone.affinity.enabled=true

# 在开启可用区故障转移的开关前提下,故障转移有两种策略:
# 1. 如果“zone-failover”值已配置,指定可用区的故障转移,即找不到实例的时候,直接路由到该可用区实例
# 2. 如果“zone-failover”值未配置,负载均衡策略的故障转移,即找不到实例的时候,执行负载均衡策略
# 启动和关闭可用区故障转移。缺失则默认为false
spring.application.strategy.zone.failover.enabled=true

# 在开启IP地址和端口故障转移的开关前提下,故障转移有两种策略:
# 1. 如果“address-failover”值已配置,指定IP地址或者端口的故障转移,即找不到实例的时候,直接路由到该IP地址或者端口实例
# 2. 如果“address-failover”值未配置,负载均衡策略的故障转移,即找不到实例的时候,执行负载均衡策略
# 启动和关闭IP地址和端口故障转移。缺失则默认为false
spring.application.strategy.address.failover.enabled=true

日志和调用链监控配置

# 启动和关闭监控,一旦关闭,调用链和日志输出都将关闭。缺失则默认为false
spring.application.strategy.monitor.enabled=true

# 启动和关闭告警,一旦关闭,蓝绿灰度上下文输出都将关闭。缺失则默认为false
spring.application.strategy.alarm.enabled=true

# 启动和关闭日志输出。缺失则默认为false
spring.application.strategy.logger.enabled=true

# 日志输出中,是否显示MDC前面的Key。缺失则默认为true
spring.application.strategy.logger.mdc.key.shown=true

# 启动和关闭Debug日志打印,注意:每调用一次都会打印一次,会对性能有所影响,建议压测环境和生产环境关闭。缺失则默认为false
spring.application.strategy.logger.debug.enabled=true

# 启动和关闭调用链输出。缺失则默认为false
spring.application.strategy.tracer.enabled=true

# 启动和关闭调用链的蓝绿灰度信息以独立的Span节点输出,如果关闭,则蓝绿灰度信息输出到原生的Span节点中(SkyWalking不支持原生模式)。缺失则默认为true
spring.application.strategy.tracer.separate.span.enabled=true

# 启动和关闭调用链的蓝绿灰度规则策略信息输出。缺失则默认为true
spring.application.strategy.tracer.rule.output.enabled=true

# 启动和关闭调用链的异常信息是否以详细格式输出。缺失则默认为false
spring.application.strategy.tracer.exception.detail.output.enabled=true

# 显示在调用链界面上蓝绿灰度Span的名称,建议改成具有公司特色的框架产品名称。缺失则默认为NEPXION
spring.application.strategy.tracer.span.value=NEPXION

# 显示在调用链界面上蓝绿灰度Span Tag的插件名称,建议改成具有公司特色的框架产品的描述。缺失则默认为Nepxion Discovery
spring.application.strategy.tracer.span.tag.plugin.value=Nepxion Discovery

Sentinel以及其在调用链和指标监控配置

# 启动和关闭Sentinel调用链上规则在Span上的输出。缺失则默认为true
spring.application.strategy.tracer.sentinel.rule.output.enabled=true

# 启动和关闭Sentinel调用链上方法入参在Span上的输出。缺失则默认为false
spring.application.strategy.tracer.sentinel.args.output.enabled=true

# 启动和关闭Sentinel Metric通过次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.pass.qps.output.enabled=true

# 启动和关闭Sentinel Metric阻塞次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.block.qps.output.enabled=true

# 启动和关闭Sentinel Metric成功次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.success.qps.output.enabled=true

# 启动和关闭Sentinel Metric异常次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.exception.qps.output.enabled=true

# 启动和关闭Sentinel限流降级熔断权限等原生功能的数据来源扩展。缺失则默认为false
spring.application.strategy.sentinel.datasource.enabled=true

# 流控规则文件路径。缺失则默认为classpath:sentinel-flow.json
spring.application.strategy.sentinel.flow.path=classpath:sentinel-flow.json

# 降级规则文件路径。缺失则默认为classpath:sentinel-degrade.json
spring.application.strategy.sentinel.degrade.path=classpath:sentinel-degrade.json

# 授权规则文件路径。缺失则默认为classpath:sentinel-authority.json
spring.application.strategy.sentinel.authority.path=classpath:sentinel-authority.json

# 系统规则文件路径。缺失则默认为classpath:sentinel-system.json
spring.application.strategy.sentinel.system.path=classpath:sentinel-system.json

# 热点参数流控规则文件路径。缺失则默认为classpath:sentinel-param-flow.json
spring.application.strategy.sentinel.param.flow.path=classpath:sentinel-param-flow.json

Hystrix配置

# 开启和关闭Hystrix线程隔离模式做服务隔离时,对线程切换上下文传递的功能。缺失则默认为false
# Hystrix线程隔离模式做服务隔离时,必须把spring.application.strategy.hystrix.threadlocal.supported设置为true,同时要引入discovery-plugin-strategy-starter-hystrix包,否则线程切换时会发生ThreadLocal上下文对象丢失

服务和网关端点配置

# 启动和关闭服务相关操作端点。缺失则默认为true
spring.application.admin.service.endpoint.enabled=true

# 启动和关闭配置相关操作端点。缺失则默认为true
spring.application.admin.config.endpoint.enabled=true

# 启动和关闭版本相关操作端点。缺失则默认为true
spring.application.admin.version.endpoint.enabled=true

# 启动和关闭侦测相关操作端点。缺失则默认为true
spring.application.admin.inspector.endpoint.enabled=true

# 启动和关闭路由相关操作端点。缺失则默认为true
spring.application.admin.router.endpoint.enabled=true

# 启动和关闭策略相关操作端点。缺失则默认为true
spring.application.admin.strategy.endpoint.enabled=true

# 启动和关闭Sentinel相关操作端点。缺失则默认为true
spring.application.admin.sentinel.endpoint.enabled=true

# 启动和关闭Git相关操作端点。缺失则默认为true
spring.application.admin.git.endpoint.enabled=true

# 启动和关闭Spring Cloud Gateway相关操作端点。缺失则默认为true
spring.application.admin.gateway.endpoint.enabled=true

# 启动和关闭Zuul相关操作端点。缺失则默认为true
spring.application.admin.zuul.endpoint.enabled=true

# 启动和关闭策略操作端点的验证SPEL表达式方法。缺失则默认为true
# 该端点方法使用Spring StandardEvaluationContext类,StandardEvaluationContext支持全部的Spel语法且功能齐全,但GitHub Security报告其存在一定的注入风险,推荐使用SimpleEvaluationContext,而SimpleEvaluationContext并不能满足当前框架的需求
# 如果未使用验证SPEL表达式方法,可以通过下面开关关闭在方法在策略端点上的暴露,规避风险
spring.application.admin.strategy.endpoint.validate-expression.enabled=true

控制台端点配置

# 启动和关闭服务相关操作端点。缺失则默认为true
spring.application.console.service.endpoint.enabled=true

# 启动和关闭配置相关操作端点。缺失则默认为true
spring.application.console.config.endpoint.enabled=true

# 启动和关闭版本相关操作端点。缺失则默认为true
spring.application.console.version.endpoint.enabled=true

# 启动和关闭侦测相关操作端点。缺失则默认为true
spring.application.console.inspector.endpoint.enabled=true

# 启动和关闭网关路由相关操作端点。缺失则默认为true
spring.application.console.route.endpoint.enabled=true

# 启动和关闭策略相关操作端点。缺失则默认为true
spring.application.console.strategy.endpoint.enabled=true

# 启动和关闭Sentinel相关操作端点。缺失则默认为true
spring.application.console.sentinel.endpoint.enabled=true

# 启动和关闭无损下线黑名单相关操作端点。缺失则默认为true
spring.application.console.blacklist.endpoint.enabled=true

# 启动和关闭故障转移相关操作端点。缺失则默认为true
spring.application.console.failover.endpoint.enabled=true

# 启动和关闭认证相关操作端点。缺失则默认为true
spring.application.console.authentication.endpoint.enabled=true

# 启动和关闭策略操作端点的验证SPEL表达式方法。缺失则默认为true
# 该端点方法使用Spring StandardEvaluationContext类,StandardEvaluationContext支持全部的Spel语法且功能齐全,但GitHub Security报告其存在一定的注入风险,推荐使用SimpleEvaluationContext,而SimpleEvaluationContext并不能满足当前框架的需求
# 如果未使用验证SPEL表达式方法,可以通过下面开关关闭在方法在策略端点上的暴露,规避风险
spring.application.console.strategy.endpoint.validate-expression.enabled=true

Swagger配置

# 启动和关闭Swagger。缺失则默认为true
swagger.enabled=true

# 业务服务Swagger Docket组名
swagger.service.group=Your group

# 业务服务Swagger扫描目录
swagger.service.packages=your-package1;your-package2

# 业务服务Swagger描述
swagger.service.description=Your service Restful APIs

# 业务服务Swagger版本
swagger.service.version=1.0.0

# 业务服务Swagger License名称
swagger.service.license.name=Apache License 2.0

# 业务服务Swagger License链接
swagger.service.license.url=http://www.apache.org/licenses/LICENSE-2.0

# 业务服务Swagger联系人名称
swagger.service.contact.name=Nepxion

# 业务服务Swagger联系人网址
swagger.service.contact.url=https://github.com/Nepxion/Discovery

# 业务服务Swagger联系人邮件
[email protected]

# 业务服务Swagger服务条件网址
swagger.service.termsOfService.url=http://nepxion.com/discovery




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally