starter-service组件帮助开发者完成与微服务相关的快速配置
- 引入
spring-cloud-starter-openfeign - 引入
okhttp并配置feign底层使用OkHttpClient - 支持服务前缀/后缀的配置
- 配置consul服务注册instanceId
- 配置consul服务注册健康检查
- 配置consul配置中心规则
- 配置自定义
RequestMappingHandlerMapping解决SpringMVC注解重复扫描问题
- build.gradle.kts
implementation("com.tencent.devops:devops-boot-starter-service")- build.gradle
implementation 'com.tencent.devops:devops-boot-starter-service'starter-serivce添加了如下依赖,对于这些模块的依赖不需要重复声明:
com.tencent.devops:devops-boot-starter-webcom.tencent.devops:devops-boot-starter-loadbalancer
说明: 在gradle编译打包时,默认会将consul相关的微服务组件打包,所以不需要声明对consul的依赖,详情见k8s云原生编译
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| service.prefix | string | null | 服务名称前缀,如prefix-,默认为空 |
| service.suffix | string | null | 服务名称后缀, 如-suffix,默认为空 |
引入openfeign并自动配置相关属性,如超时时间、请求压缩等,详见common-service.properties
因为okhttp具有更优的性能,以及更优雅的api设计,所以引入okhttp并配置feign底层使用OkHttpClient
当多个应用部署在同一个服务注册中心时,可能会存在服务命名冲突,所以添加了对服务名称前缀/后缀的支持。 默认情况下,前后缀都为空,此时的行为和SpringCloud默认行为一致。
假设一个应用有如下配置,
| 配置项 | 配置值 |
|---|---|
| spring.application.name | test |
| service.prefix | prefix- |
| service.suffix | null(空) |
| server.port | 8080 |
则相应的生效规则为,
| 配置项 | 配置值 |
|---|---|
| consul服务名称 | prefix-test |
| consul服务实例instanceId | prefix-test-8080- |
| consul配置中心key路径 | prefix-config/prefix/data |
为了保证consul注册实例唯一,自动配置instanceId包含主机的ip地址。完整的instanceId规则为<prefix><app-name><suffix>-<port>-<ip-address>。
如xxx-test8080-192-168-1-1
健康检查地址/actuator/health, 检查间隔时间为10秒,超时时间为5秒
为了保证多个应用在同一个consul中使用配置中心不产生冲突,规定了配置路径,规则如下:
- 微服务对应的配置key
<prefix>config<suffix>/<app-name>/data - 配置格式为
YAML - profile分隔符为
::