Ribbon和Feign客户端负载均衡及服务调用

前言

什么时负载均衡?(Load balancing)负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。过去所说的负载均衡常指服务端的负载均衡,在客户端和服务器端之间增加负载均衡器来实现。那么,客户端负载均衡是什么?

客户端负载均衡

客户端负载均衡是相对服务端而言的,主要出现在微服务中,服务消费之间一种软负载均衡的实现方案。客户端本地维护了一个可用的服务注册列表,在每次请求之前通过一定的算法,从服务列表中选择一个服务,发送给服务器端来处理本次请求的策略。常见的客户端负载均衡SpringCloud的Ribbon与Feign实现。

Ribbon的简介

Ribbon是Netflix公司的开源项目,是一款基于http和TCP的客户端负载均衡组件,它是无法独立部署,一般以Spring Cloud Ribbon实现,基于轮询、随机、加权、地址hash等规则自动获取和调用服务。

Ribbon的几个核心组件:

  • IClientConfig
  • ServiceList
  • ServiceListFilter
  • IRule
  • IPing
  • ILoadBalancer
  • ServiceListUpdater
Ribbon的工作原理

Feign的简介

Spring Cloud的服务发现功能,除了可以用RestTemplate外,还可以用Feign客户端实现。Feign是一个声明式的Web Service客户端,通过在程序中使用注解@FeignClient 实现热插拔式动态代理创建客户端的效果,从而获取和调用目标地址和服务方法,处理本次请求。

工作过程:

  1. 建立与“服务提供者”的网络连接。
  2. 构造请求。
  3. 发送请求到“服务提供者”。
  4. 处理“服务提供者”返回的响应结果。
Feign工作原理

Ribbon和Feign的区别

  1. 启动类注解不同,Ribbon使用的注解是@RibbonClient,而Feign使用注解是@EnableFeignClients。
  2. 服务的指定位置不同,Ribbon的服务实在注解@RibbonClient中声明的,而Feign是在注解@FeignClient中声明的。
  3. 调用方式不同,Ribbon需要自己构建HTTP请求来,使用RestTemplate将该请求发送出去。Feign在Ribbon的基础上进行封装,采用的是接口的方式,无需自己构建HTTP请求,只需将其他服务的方法定义成抽象方法即可。
  4. 依赖不同,Ribbon的Maven依赖是Spring-starter-ribbon;Feign的Maven依赖是Spring-starter-openfeign。

总结,Ribbon使用了RestTemplate,其代码可读性、可维护性和开发体验一般;Feign性能强,灵活性好。

 

推荐相关阅读:FeignClient注解及参数问题

既然看完了整篇文章,不妨再关注公众号,获取更多精彩

同名原创公众号:  程序大视界
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序大视界

原创不易,请给点支持和鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值