Ribbon和Feign的对比-带简易例子

  • Ribbon和Feign的对比
    • 由一个简单的例子来说明
      • 整体项目结构
      • 通过Ribbon,A来调用B的服务
        • 服务提供者B中书写简易示例:
        • 服务调用者A中调用B的示例代码:
      • 通过Feign,A来调用B的服务
        • 服务提供者B中书写简易示例:
        • 服务调用者A中调用B的示例代码:
    • 总结
    • 工程项目源码

Ribbon和Feign的对比

Ribbon和Feign都是SpringCloud中的基于 HTTP 和 TCP 客户端 的软负载均衡的工具。
Feign 是在 Ribbon的基础上进行了一次改进,是一个使用起来更加方便的 HTTP 客户端。
采用接口的方式, 只需要创建一个接口,然后在上面添加注解即可 ,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建http请求。
两者要实现负载均衡都需要依托于eureka注册中心但也可以不借助注册中心,这种方式还没有尝试过。

由一个简单的例子来说明

整体项目结构

eureka-server(注册中心)
eureka-service-b(服务提供者B)
eureka-service-b-api(服务提供者B标准API和基础POJO)
feign-client-demo(服务调用者-Feign方式)
ribbon-client-demo(服务调用者-Ribbon方式)

通过Ribbon,A来调用B的服务

服务提供者B中书写简易示例:

服务提供者不需要做额外配置,正常书写暴露API请求即可

服务调用者A中调用B的示例代码:

关键部分代码
TestController.java

@RestController
public class TestController {@Autowiredprivate RestTemplate restTemplate;private static final String REST_URL_PREFIX = "http://EUREKA-SERVICE-B";@GetMapping("/ribbon/test")public List<Test> listTest(@RequestParam("id") String id){ParameterizedTypeReference<List<Test>> typeReference = new ParameterizedTypeReference<List<Test>>() {};return restTemplate.exchange(REST_URL_PREFIX+"/tests?id="+id, HttpMethod.GET,null,typeReference).getBody();}
}

Config.java

@Configuration
public class Config {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}

通过Feign,A来调用B的服务

服务提供者B中书写简易示例:

服务提供者需要对eureka-service-b-api中新增ServiceFeignClient.java

@FeignClient(value = "EUREKA-SERVICE-B")
public interface ServiceFeignClient {@GetMapping("/tests")List<Test> listTest(@RequestParam("id") String id);
}

服务调用者A中调用B的示例代码:

关键部分代码
TestController.java

@RestController
public class TestController {@Autowiredprivate ServiceFeignClient serviceFeignClient;@GetMapping("/feign/test")public List<Test> listTest(@RequestParam("id") String id){return serviceFeignClient.listTest(id);}
}

总结

从上面来看吧,功能都一样,看代码量的话也差不多,区别就在于,ribbion的方式,服务调用者和服务提供者需要通过接口文档进行沟通交流。
feign的方式的话,接口文档可以省了。

工程项目源码

https://gitee.com/eyesopen/feign-and-ribbion-test

Ribbon和Feign的对比-带简易例子相关推荐

  1. Ribbon和Feign区别在哪

    先说一下负载均衡:服务访问量忒大,一个服务器顶不住,服务器一崩那不凉了,怎么办--多用几个服务器,使单个服务器承受的访问量分散开,通过调度算法让他们都有休息的时间,就算有一个服务器凉了,至少还有其他的 ...

  2. Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?

    导读 今天和大家聊一聊在Spring Cloud微服务框架实践中,比较核心但是又很容易把人搞得稀里糊涂的一个问题,那就是在Spring Cloud中Hystrix.Ribbon以及Feign它们三者之 ...

  3. SpringCloud系列之服务消费Ribbon和Feign区别

    在业界,一般有两种微服务的实践方法:基于dubbo的微服务架构.基于Spring Cloud的微服务架构.从概念上来讲,Dubbo和Spring Cloud并不能放在一起对比,因为Dubbo仅仅是一个 ...

  4. spring cloud 微服务调用--ribbon和feign调用

    这里介绍ribbon和feign调用两种通信服务调用方式,同时介绍如何引入第三方服务调用.案例包括了ribbon负载均衡和hystrix熔断--服务降级的处理,以及feign声明式服务调用.例子包括s ...

  5. 【springCloud搭建】四、集成ribbon+hystrix+feign

    上篇文章传送门:[springCloud搭建]三.集成springCloudGateway网关  ribbon+hystrix+feign所需的第三方包 <!--feign服务通讯组件--> ...

  6. android自带蓝牙例子详解

    相关参考网站:http://wenku.baidu.com/view/d901cc2d4b73f242336c5f87.html http://wenku.baidu.com/view/518414b ...

  7. 一个自带简易数据集的模拟线性分类器matlab代码——实验训练

    一个自带简易数据集的模拟线性分类器matlab代码--实验训练 %%%% Tutorial on the basic structure of using a planar decision boun ...

  8. 从实例一步一步入门学习SpringCloud的Eureka、Ribbon、Feign、熔断器、Zuul的简单使用(附代码下载)

    场景 SpringCloud -创建统一的依赖管理: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102530574 Sprin ...

  9. ribbon和feign的区别

    pring cloud的Netflix中提供了两个组件实现软负载均衡调用:ribbon和feign. Ribbon  是一个基于 HTTP 和 TCP 客户端的负载均衡器  它可以在客户端配置 rib ...

  10. springCloud负载均衡Ribbon和Feign的区别

    1.什么是负载均衡: 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据[均匀]分摊到多个操作单元上执行,负载均衡的关键在于[均匀]. 2.常见的负 ...

最新文章

  1. AI如何设计,才能人类利益最大化?
  2. 编程爱好者学vb还是python-高手,这是高手!推荐几个我常看的顶级技术类公众号...
  3. C++ sizeof总结
  4. 树状数组基础原理与模板
  5. Git初始化配置以及配置github
  6. alpha冲刺day8
  7. MATLAB gui 欢迎界面 插入图片
  8. 拓端tecdat|把握出租车行驶的数据脉搏 :出租车轨迹数据给你答案!
  9. ResNet50及其Keras实现
  10. glib wpa_supplicant Unix上库编译错误解决与总结
  11. 微信小程序点餐系统需求分析与建模
  12. 【算法图解】 之 [二分查找法] 详解
  13. JVM内存溢出问题排查
  14. 干货 | 基于JMP的方差分析及两两比较的思路与实现
  15. 【CC3200AI 实验教程11】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-AI语音系统架构
  16. 管理 - SWOT分析法
  17. 51单片机自学笔记引脚
  18. 【原创】常用元器件(电阻)选型之阻值识别-cayden20220910
  19. 自动驾驶中的多传感器融合
  20. 我记忆中的“集银社”

热门文章

  1. Oracle 归档模式的打开及关闭
  2. Android实现仿IOS带清空功能的文本输入框
  3. ERP选型需把握主动权!
  4. wordpress获取各类页面链接的函数总结
  5. java实现顺序表的增加,删除,查找,打印
  6. ThinkPHP统计某个分类的文章数目
  7. oracle 2500varchar,Oracle中的varchar和varchar2有什么区别?
  8. 保存文件 安卓_手机怎么解压zip文件 安卓手机zip文件怎么打开?
  9. linux 使用ssr客户端_React从CSR到SSR:第一篇
  10. 笔记本电脑怎么清理灰尘_笔记本电脑卡顿,运行慢,似中病毒,看这里 小白教你轻松搞定...