ribbon和feign的区别,比较

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42237752/article/details/95625031

首先说一下微服务中常用的两种架构

常规的微服务有两种类型:一种是基于dubbo的微服务架构、另外一种是基于Spring Cloud的微服务架构。从概念上来讲,Dubbo和Spring Cloud并不能放在一起对比,因为Dubbo仅仅是一个RPC框架,实现Java程序的远程调用,实施服务化的中间件则需要自己开发;而Spring Cloud则是实施微服务的一系列套件,包括:服务注册与发现、断路器、服务状态监控、配置管理、智能路由、一次性令牌、全局锁、分布式会话管理、集群状态管理等。
在一开始做服务消费者这边时,就在考虑改用ribbon来做负载均衡好,还是使用feign来做负载均衡好;
我们可以来对比一下两者之间的写法:
ribbon:
负载均衡是在RestTeplate这里加@LoadBalanced
在这里插入图片描述
在controller中调用restTemplate来进行restful的访问其他服务。当然这里是已经进行过负载均衡过之后的。
在这里插入图片描述
feign:
feign是通过@FeignClient来寻找服务并且进行负载均衡的,默认算法是轮询算法。
在这里插入图片描述
最终我选择了feign来进行负载均衡:
原因有以下几点:

  1. feign本身里面就包含有了ribbon
  2. feign自身是一个声明式的伪http客户端,写起来更加思路清晰和方便
  3. fegin是一个采用基于接口的注解的编程方式,更加简便

注意feign里面开启熔断器处理时,需要有以下配置:

server:
  port: 80
  
feign: 
  hystrix: 
    enabled: true
eureka:
  client: #客户端注册金eureka服务列表中
    register-with-eureka: false   #自己不能注册
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka,http://localhost:7003/eureka
      #在微服务列表中注册的名字是spring.application.name的名

在@feignclient里面申明到fallback会调用到订单的熔断器类
在这里插入图片描述

这个是熔断处理类,在里面对熔断进行处理:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42237752/article/details/95625031