【SpringCloud微服务全家桶学习笔记-服务调用Ribbon/openFeign】

2023-09-21 13:55:15

SpringCloud微服务全家桶学习笔记

内容:SpringCloud + SpringCloud alibaba

技术栈:Java8+maven+git,github+Nginx+RabbitMQ+SpringBoot2.0

仓库:链接

服务调用Ribbon
是什么?

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。

做什么?

Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡区别
Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。

Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

架构说明

在这里插入图片描述

Ribbon在工作时分成两步
第一步先选择 EurekaServer ,它优先选择在同一个区域内负载较少的server.
第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。
其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。

Ribbon核心组件IRule,负载均衡算法

在这里插入图片描述

默认为轮询,如何切换负载均衡算法呢?

需要在著启动类添加注释**@RibbonClient**

这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了。

所以在创建配置类如MySelfRule时,不能建在主启动类所在包及其子包下

在这里插入图片描述

openFeign服务调用

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。
它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡

能干吗?

前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量。

Feign集成了Ribbon
利用Ribbon维护了Payment的服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用

在这里插入图片描述

只需要一个接口(微服务调用接口)+一个注解(@FeignClient)

**注:**默认Feign客户端只等待一秒钟,但是服务端处理需要超过1秒钟,导致Feign客户端不想等待了,直接返回报错。
为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。

日志打印

Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节。
说白了就是对Feign接口的调用情况进行监控和输出

四种日志级别:

NONE:默认的,不显示任何日志;

BASIC:仅记录请求方法、URL、响应状态码及执行时间;

HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息;

FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。

服务配置文件配置:

在这里插入图片描述

配置类配置:

在这里插入图片描述

服务启动运行结果:可查看到服务的详细运行过程

在这里插入图片描述

更多推荐

工控机通过Profinet转Modbus RTU网关连接变频器与电机通讯案例

在工业自动化系统中,工控机扮演着重要的角色,它是数据采集、处理和控制的中心。工控机通过Profinet转ModbusRTU网关连接变频器与电机通讯,为工业自动化系统中的设备之间的通信提供了解决方案。工控机通过Profinet转ModbusRTU网关的方式,将Profinet协议转换为ModbusRTU协议,从而实现了工

使用API接口获取商品数据:从入门到实践

一、引言随着电子商务的飞速发展,许多电商平台提供了API接口,允许开发者获取商品数据,以创建各种创新的应用。本文将详细介绍如何使用API接口获取商品数据,并通过代码示例进行演示。二、API接口概述1.API接口定义API(ApplicationProgrammingInterface)接口是一种协议,允许不同的应用程序

计网第五章(运输层)(七)(TCP的连接建立)

目录一、基本概述二、连接建立1.基本任务2.具体实现三、经典问题之为什么不用“两次握手”?一、基本概述在前面的部分提到过,TCP是基于运输连接来传输TCP报文段。所以TCP的连接和释放是每次面向连接的通信过程中必不可少的过程。TCP运输连接分为三个阶段:连接建立、数据传输、释放连接。二、连接建立1.基本任务TCP建立连

苹果短信删除了怎么恢复?3个宝藏方法!

虽然现在有越来越多好用的通讯工具供大家选择,但是短信在我们的日常生活中仍然扮演着重要的角色。比如,银行短信服务可以让我们随时掌握账户中的消费信息、上网购买快递驿站会第一时间将取件码发送到您的手机上……还有很多很多场景都需要用到我们的手机短信。然而,在使用手机时可能会不小心误删一些重要短信,那么这时候该怎么办?大家知道短

Linux下库的入门与制作

库的入门与制作1.库的介绍2.库的制作与使用2.1静态库的制作与使用2.2动态库的制作与使用参考博文:1.Linux中的库2.Linux共享库、静态库、动态库详解1.库的介绍介绍程序函数库可分为3种类型:静态函数库(staticlibraries)、共享函数库(sharedlibraries)、动态加载函数库(dyna

算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言

算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言目录MT1281N的M次方MT1282Disarium数MT1283区间Disarium数MT1284快乐数MT1285忠实数MT1286忠实数序列MT1287ASCII值MT1288谁在说谎MT1289调和级数不等式MT1290级数MT1291级数I

虚拟DOM与diff算法

虚拟DOM与diff算法snabbdom虚拟DOMdiff算法snabbdom是什么:snabbdom是著名的虚拟DOM库,是diff算法的鼻祖,Vue源码借鉴了snabbdom虚拟DOM是什么:本质上是存在内存里的JavaScript对象作用:用来描述真实DOM的层次结构,真实DOM上的一切属性都能在虚拟DOM上找到

微店商品详情数据接口

微店商城是由北京口袋时尚科技有限公司开发的一款基于微信等社交平台的开店工具,于2011年5月上线。2014年1月,"微店"APP正式上线。微店拥有近9000万小微店主,通过微店和微店店长版两个app,微店已经从小微店主首选的开店工具转型为助力创业者发展兴趣、创立品牌、玩成事业的系统及基础设施。微店商品详情API接口(i

小型网络实验组网

路漫漫其修远兮,吾将上下而求索时隔多日,没有更新,今日一写,倍感教育的乐趣。如果让我每天发无意义的文章,我宁可不发。实验拓扑实验要求(1)内网主机采用DHCP分配IP地址(2)外网主机可以访问内网www.wxy.com的网站(3)外网主机可以通过64.0.0.3访问内网服务器实验配置实验配置由于时间原因,当时并没有将其

掌握这些算法,让你的编程之路更顺畅——重要算法解析

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。这些算法通常被广泛应用于日常编程工作中,是提升编程效率和解决实际问题的重要工具。本文将介绍几种十分重要的“必抓!”算法,希望能对广大程序员朋友们提供一些帮助。程序员的必抓算法:一:引言在编程的世界里,算法是解决问

动手学深度学习_个人笔记01_李沐(更新中......)

序言神经网络——本书中关注的DL模型的前身,被认为是过时的工具。深度学习在近几年推动了CV、NLP和ASR等领域的快速发展。关于本书让DL平易近人,教会概念、背景和代码。一种结合了代码、数学和HTML的媒介测试深度学习(DL)的潜力带来了独特的挑战,因为任何一个应用都会将不同的学科结合在一起。应用DL需要同时了解:(1

热文推荐