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相关配置进行子系统联调



转载链接:https://www.jianshu.com/p/996347925e48

posted @ 2020-05-11 16:00  陌笠人灬苼  阅读(1600)  评论(0编辑  收藏  举报