Ribbon 与 FeignClient、RestTemplate 的关系

「爱情、让人受尽委屈。」 2023-02-13 03:51 121阅读 0赞

Ribbon

Ribbon是Netflix公司开源的一个负载均衡的项目,是一个基于 HTTP、TCP的客户端负载均衡器.

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHR1Y2Vf_size_16_color_FFFFFF_t_70

上面的都是服务端负载均衡,客户端负载均衡与服务端负载均衡的区别在于客户端要维护一份服务列表,Ribbon从
Eureka获取服务列表,Ribbon根据负载均衡算法直接请求到具体的微服务,中间省去了负载均衡服务器。

常用的负载均衡算法有: 轮循、随机、加权轮循、加权随机、地址哈希等方法。

与Nginx的区别

Ribbon负责客户端(服务消费者)的负载均衡,而Nginx负责的是服务端的负载均衡。

RestTemplate

RestTemplate 是远程调用Http的工具,是对java底层http的封装,使用RestTemplata用户可以不再关注底层的连接建立,并且RestTemplata不仅支持Rest规范,还可以定义返回值对象类型。

RestTemplata支持本地负载均衡,配合Ribbon一起使用

例如:

  1. @Configuration
  2. public class RestTemplateConfig {
  3. @Bean
  4. @LoadBalanced
  5. public RestTemplate restTemplate() {
  6. return new RestTemplate();
  7. }
  8. }

或 添加bean 到启动类中

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHR1Y2Vf_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xldHR1Y2Vf_size_16_color_FFFFFF_t_70 2

详情查看:https://blog.csdn.net/xiao_jun_0820/article/details/78917215

FeignClient

Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端。

Feign并且集成了Ribbon实现客户端负载均衡调用。

Spring Cloud Netflix 的微服务都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去調用

而 Feign 是一個使用起來更加方便的 HTTP 客戶端,它用起來就好像調用本地方法一樣,完全感覺不到是調用的遠程方法

总结起来就是:发布到注册中心的服务方接口,是 HTTP 的,也可以不用 Ribbon 或者 Feign,直接浏览器一样能够访问

只不过 Ribbon 或者 Feign 调用起来要方便一些,最重要的是:它俩都支持软负载均衡

注意:spring-cloud-starter-feign 里面已经包含了 spring-cloud-starter-ribbon(Feign 中也使用了 Ribbon)

从实践上看,采用feign的方式更优雅(feign内部也使用了ribbon做负载均衡)。

  1. @FeignClient(value = "PRODUCT-DATA-SERVICE")// 被调用的模块名
  2. public interface ProductClientFeign {
  3. @GetMapping(value = "/products") //被调用的模块的接口
  4. public List<Product> listProdcuts();
  5. }

注意:启动类中得添加 @EnableFeignClients //启用Feign

发表评论

表情:
评论列表 (有 0 条评论,121人围观)

还没有评论,来说两句吧...

相关阅读

    相关 feign+ureka+ribbon关系

    1,看流程图分块看,看块之间的调用关系,块内部的调用关系 2,源码中配置的最终通过构造函数或者set属性注入类的成员变量 3,ureka路由信息注入ribbon,ribbo

    相关 eurekaribbon负载均衡

    接着上一篇博文,看下ribbon的负载均衡 重点,ribbon的负载均衡功能 改造上一篇博文的内容,服务注册中心的端口号修改为5550 服务提供者,修改端口号为5551,

    相关 Ribbon详解实例

            Ribbon是一个为客户端提供负载均衡功能的服务,它内部提供了一个叫做ILoadBalance的接口代表负载均衡器的操作,比如有添加服务器操作、选择服务器操作、