-
Notifications
You must be signed in to change notification settings - Fork 224
adapter third discovery
调用第三方服务的时候,一个常见的做法是在Client指定第三方服务ip:port,这种情况下Client不需要服务选择直接完成调用。Spring Cloud Huawei为了实现不同Client服务治理,在Client初始化中增加负载均衡、限流、熔断等治理相关过滤器,导致直接配置ip:port实现的三方调用提示服务不存在而抛异常,为了解决这个问题,引入simple注册发现本地配置,让第三方服务调用在服务发现基础上完成,从而保留服务的治理能力。
1、Feign调用第三方服务时,FeignClient
指定 url:
@FeignClient(name = "thirdParty", url = "http://host:port")
public interface FeignService {
}
2、基于Spring Boot Admin实现微服务健康监控时,配置admin服务端的url完成微服务向admin注册:
spring:
boot:
admin:
client:
url: "http://127.0.0.1:8077"
如果是基于Spring Cloud Huawei开发的微服务,都需要关闭Spring Cloud Huawei的治理能力或者Client初始化。
Spring Cloud的服务发现支持多个实现,Spring Cloud Huawei默认包含 simple
, servicecomb
和 mesh
3个实现。 当存在多个注册发现的时候,会根据 order
进行排序, 优先使用 order
小的注册发现,默认情况下simple
优先级最高,如果没找到就找下一个。 默认情况下只有servicecomb
工作,使用 servicecomb
发现只需要启用注册即可。 每个注册发现都提供了 enabled
属性关闭和开启功能,order
来定义他们的优先级。
所以为了保留治理能力,并且将第三方等同对待,可以采用 simple
注册发现。
- Feign三方调用场景实现服务注册方发现
配置simple
注册发现信息:
spring:
cloud:
discovery:
client:
simple:
enabled: true
order: 0
instances:
thirdParty: # 自定义的第三方服务名
- host: "host" # 第三方服务端地址
port: 8080 # 第三方服务端口
instanceId: thirdParty01 # 自定义第三方服务实例ID,可以唯一标识的Id
FeignClient不需要指定 URL,配置simple
中定义的第三方服务名:
@FeignClient(name = "thirdParty")
public interface FeignService {
}
- 微服务注册Spring Boot Admin三方调用场景实现注册发现
配置simple
注册发现信息:
spring:
cloud:
discovery:
client:
simple:
enabled: true
order: 0
instances:
admin-server: # 自定义的第三方服务名
- uri: "http://127.0.0.1:8077" # 第三方服务端请求url
配置simple
定义的服务名,实现微服务向admin服务端注册:
spring:
boot:
admin:
client:
url: "http://admin-server:8077"
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题