-
Notifications
You must be signed in to change notification settings - Fork 514
Multi registration and multi discovery
lepdou edited this page Mar 23, 2022
·
16 revisions
当使用者想要使用多个服务注册中心,或者是想从其他注册中心平滑迁移到 Polaris 时,必然存在单个服务进行多注册和多发现的场景。借助封装好 [polaris-java] 提供的多注册和多发现的功能,使用者可以轻松地实现该场景。
**注意:**目前仅支持 Polarisi 与 Consul 的多注册和多发现。
为满足原有使用者平滑迁移的诉求,该方案将读取 Polaris 以外服务注册中心原本设定于 Spring Cloud 的主要配置,排除 Polaris 不兼容的功能配置。同时,所有的注册中心将默认使用心跳上报的方式进行健康检查,与 Polaris 相同。
如果您的项目里依赖了 spring-cloud-starter-consul-discovery ,则需要删除依赖,否则会导致应用启动失败。启动失败日志如下:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found:
- polarisAutoServiceRegistration: defined by method 'polarisAutoServiceRegistration' in class path resource [com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.class]
- consulAutoServiceRegistration: defined by method 'consulAutoServiceRegistration' in class path resource [org/springframework/cloud/consul/serviceregistry/ConsulAutoServiceRegistrationAutoConfiguration.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
<version>${version}</version>
</dependency><dependencyManagement>
<dependencies>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-tencent-dependencies</artifactId>
<version>${version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
</dependency>
</dependencies>
- 配置完整的 spring cloud polaris discovery 配置
- 配置完整的 spring cloud consul discovery 配置,注意需要打开所有的开关,包括:spring.cloud.consul.enabled, spring.cloud.consul.discovery.register,spring.cloud.consul.discovery.enabled,
一份配置的样例如下所示:
spring:
application:
name: DiscoveryCalleeService
cloud:
polaris:
address: grpc://127.0.0.1:8091
discovery:
ip-address: 127.0.0.1
consul:
port: 8500
host: 127.0.0.1
enabled: true # 需要打开
discovery:
register: true # 需要打开
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
enabled: true # 需要打开
service-name: ${spring.application.name}
ip-address: localhost
prefer-ip-address: true| 配置项Key | 默认值 | 是否必填 | 配置项说明 |
|---|---|---|---|
| spring.cloud.consul.host | 无 | 是 | Consul后端地址 |
| spring.cloud.consul.port | 无 | 是 | Consul端口号 |
| spring.cloud.consul.enabled | true | 否 | 是否启用Consul |
| spring.cloud.consul.discovery.enabled | true | 否 | 是否启用Consul服务发现 |
| spring.cloud.consul.discovery.register | true | 否 | 是否启用Consul服务注册 |
| spring.cloud.consul.discovery.service-name | ${spring.application.name} | 否 | 注册服务名 |
| spring.cloud.consul.discovery.instance-id | 服务名-IP-端口号 | 否 | 注册实例ID |
| spring.cloud.consul.discovery.prefer-ip-address | false | 否 | 是否使用自定义IP注册 |
| spring.cloud.consul.discovery.ip-address | 无 | 否 | 自定义注册IP |
- 您在使用过程中遇到任何问题,请提 Issue 或者加入我们的开发者群告诉我们,我们会在第一时间反馈
- Spring Cloud Tencent 社区期待您的加入,一个 Star、PR 都是对我们最大的支持
- 项目介绍
- 使用指南
- 最佳实践
- 开发文档
- 学习资料