feign不过注册中心子系统联调的方法
前言
对于使用spring cloud进行实现微服务的时候时候,通常使用feign作为api接口调用的相关组件。对于常规的使用这里不进行具体说明,主要是对联调时不通过注册中心直接对接的方法进行说明。主要有以下两种方法
- 通过feign注解@FeignClient的url属性
- 通过ribbon的相关配置
为了便于说明,进行如下的假设,有两个子系统
子系统a服务名为micro-server-a,服务地址为10.206.19.100,端口为8080
子系统b服务名为micro-server-b,服务地址为10.206.19.110,端口为8080
子系统a需要通过调用子系统b的接口/inner/api提供的服务
通过@FeignClient的url属性
@FeignClient注解的url属性,最主要的作用是与其他系统对接时,可以通过配置该属性,封装对其他系统的访问接口。我们可以借助该属性进行子系统间的联调,@FeignClient的配置如下
@FeignClient(name = "micro-server-b", url = "http://10.206.19.110:8080", fallback = FeignApiFallbackComponent.class)
这种方式将两个子系统作为无关系统直接调用,只适合与开发环境上面做联调,联调结束之后需要删除url属性。
- 主要的缺点是如果没有删除直接上传,会导致代码结果被破坏,而且不利于调试定位。需要通过修改代码来实现
- 主要的优点是联调比较简单
通过ribbon相关配置
feign在子系统间调用时,主要是借助于ribbon进行负载均衡的,因此,我们可以通过配置ribbon属性,方便的进行联调。
feign的配置如下:
@FeignClient(name = "micro-server-b", fallback = FeignApiFallbackComponent.class)
在spring boot开发时,我们通常会针对开发环境配置application-dev.properties文件作为开发环境的配置。因此,我们可以在该文件中增加如下的配置,直接进行联调
ribbon.eureka.enabled=false
micro-server-b.ribbon.listOfServers=10.206.19.110:8080
其中,micro-server-b为我们在@FeignClient中配置的name。
程序启动的时候,需要加上如下的程序参数
--spring.profiles.active=dev
通过这种方式,就可以直接在开发环境中进行联调,主要是通过spring boot的配置文件进行的。这种方式的主要优缺点如下
- 主要的优点是,打包之后环境不同,不会相互影响,确保生产环境的正确性。在部署到生产环境之后,也可以通过该方式,测试子系统间的可用性
- 主要的缺点是,需要增加一个配置文件
结论
为了确保代码和包的健壮性,建议通过ribbon相关配置进行子系统联调