SpringCloud系列之服务消费Ribbon和Feign区别
在业界,一般有两种微服务的实践方法:基于dubbo的微服务架构、基于Spring Cloud的微服务架构。从概念上来讲,Dubbo和Spring Cloud并不能放在一起对比,因为Dubbo仅仅是一个RPC框架,实现Java程序的远程调用,实施服务化的中间件则需要自己开发;而Spring Cloud则是实施微服务的一系列套件,包括:服务注册与发现、断路器、服务状态监控、配置管理、智能路由、一次性令牌、全局锁、分布式会话管理、集群状态管理等。
在国内基于Dubbo实施服务化,刚开始是基于ZooKeeper进行服务注册与发现,现在已经转成使用Etcd。我这次学习Spring Cloud,则是想成体系得学习下微服务架构的实现,也许能够对基于Dubbo实施微服务架构有所借鉴。
目前,在Spring cloud 中服务之间通过restful方式调用有两种方式
- restTemplate+Ribbon
- feign
Ribbon
Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器
它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现均衡负载
它在联合 Eureka 使用时
ribbonServerList 会被 DiscoveryEnabledNIWSServerList 重写,扩展成从 Eureka 注册中心获取服务端列表
同时它也会用 NIWSDiscoveryPing 来取代 IPing,它将职责委托给 Eureka 来确定服务端是否已经启动
Feign
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做负载均衡)。
如何理解客户端Ribbon
zuul也有负载均衡的功能,它是针对外部请求做负载,那客户端ribbon的负载均衡又是怎么一回事?
客户端ribbon的负载均衡,解决的是服务发起方(在Eureka注册的服务)对被调用的服务的负载,比如我们查询商品服务要调用显示库存和商品明细服务,通过商品服务的接口将两个服务组合,可以减少外部应用的请求,比如手机App发起一次请求即可,可以节省网络带宽,也更省电。
ribbon是对服务之间调用做负载,是服务之间的负载均衡,zuul是可以对外部请求做负载均衡。
————————————————
版权声明:本文为CSDN博主「q_0718」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q_0718/article/details/80269864
SpringCloud系列之服务消费Ribbon和Feign区别相关推荐
- SpringCloud微服务:Ribbon和Feign组件,实现服务调用的负载均衡
一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TCP客户端的访问控制. 2.负载均衡简介 目前主流的负载均衡 ...
- spring cloud 微服务调用--ribbon和feign调用
这里介绍ribbon和feign调用两种通信服务调用方式,同时介绍如何引入第三方服务调用.案例包括了ribbon负载均衡和hystrix熔断--服务降级的处理,以及feign声明式服务调用.例子包括s ...
- SpringCloud系列之服务注册中心(Eureka)
文章目录 0.前言 1.搭建第一个Eureka服务 ①.简介 ②.组成 ③.创建Eureka Server模块 ④.编写POM ⑤.YML ⑥.主启动 ⑦.测试 2.注册服务 ①服务提供者 Ⅰ.添加依 ...
- Ribbon和Feign区别在哪
先说一下负载均衡:服务访问量忒大,一个服务器顶不住,服务器一崩那不凉了,怎么办--多用几个服务器,使单个服务器承受的访问量分散开,通过调度算法让他们都有休息的时间,就算有一个服务器凉了,至少还有其他的 ...
- Spring Cloud构建微服务架构—服务消费Ribbon
Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它是一个基于HTTP和TCP的客户端负载均衡器.它可以通 ...
- SpringCloud系列七:使用Ribbon实现客户端侧负载均衡
1. 回顾 在前面,已经实现了微服务的注册与发现.启动各个微服务时,Eureka Client会把自己的网络信息注册到Eureka Server上. 但是,在生成环境中,各个微服务都会部署多个实例,因 ...
- 【SpringCloud系列】服务注册与发现 - Eureka Server源码分析(2)
3.6.Eureka Server 源码分析 上一篇文章简单介绍了 Eureka 的一些概念,今天咱们来看看其原理和源码,首先先看 Eureka Server 的原理. 3.6.1.Eureka Se ...
- springCloud - 第3篇 - 消费者调用服务 ( RestTemplate + Ribbon )
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.新建 ribbon 工程: 1. file - new - module 2. spring I ...
- 从实例一步一步入门学习SpringCloud的Eureka、Ribbon、Feign、熔断器、Zuul的简单使用(附代码下载)
场景 SpringCloud -创建统一的依赖管理: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102530574 Sprin ...
最新文章
- 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式
- C#前期绑定和后期绑定操作Excel-------实现简单打印功能
- mysql 视图触发器,MySql视图触发器存储过程详解
- 超级组合:用户中心+云平台
- 五、python模块以及包
- ios framework 找不到.h_找不到好看的壁纸?上万张「高清壁纸」,都在iOS捷径里...
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]47.什么是Fiat-Shamir变换?
- 哈佛大学计算机科学专,哈佛大学计算机科学专业
- Python 数据分析三剑客之 NumPy(二):数组索引 / 切片 / 广播 / 拼接 / 分割
- Super VLAN
- 2020年天猫双11:11日0点30分 实时成交额突破3723亿
- 武器系统仿真技术(二):末端制导系统蒙特卡洛仿真法
- onPageScroll微信小程序底部悬浮框滑到底部隐藏,其他情况显示
- 项目进度管理工具——甘特图
- 动画设计要考计算机证书吗,影视动画要考哪些证书
- C语言指针的入门pointer
- 教你写Makefile
- 网易实习面经——网易云音乐
- 反弹socks代理。
- 2021-2025年中国兽医美容用具行业市场供需与战略研究报告
热门文章
- QT的QQmlNdefRecord类的使用
- QT的QGraphicsItemGroup类的使用
- 经典C语言程序100例之五六
- 经典C语言程序100例之三七
- C++学习成长的四个层次
- python对文件的操作模式_python对文件的操作
- python使用get和post方法_python爬虫中get和post方法介绍以及cookie作用
- java类似goto_原来java中也有类似goto语句的标签啊--java label标签
- SQL Server存储过程里全库查找引用的数据库对象(表、存储过程等)
- Kettle使用_18 分组组件计算百分位数