zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Vue-router的实现原理
    get请求被浏览器跨域的同源策略请求机制拦截,但是get请求是否请求到了服务器呢
    合并两个有序链表
    JS实现链式调用 a().b().c()
    CSS知识点总结
    BK-信息查找、摘取
    radar图生成用户guideline
    【转】 mybatis 详解(七)------一对一、一对多、多对多
    【转】 mybatis 详解(六)------通过mapper接口加载映射文件
    【转】 mybatis 详解(五)------动态SQL
  • 原文地址:https://www.cnblogs.com/mh-study/p/12869712.html
Copyright © 2011-2022 走看看