【Springcloud篇】学习笔记三(七、八章):Ribbon负载均衡、OpenFeign接口调用

第七章_Ribbon负载均衡与服务调用

1.Ribbon概述

1.1Ribbon是什么

1.2官网资料

自己搜

1.3能干嘛

一句话:负载均衡+RestTemplate调用

(1)LB---负载均衡
①Nginx---负载均衡

Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求,即实现负载均衡

②Ribbon---负载均衡

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

③集中式LB

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方。

④进程内LB

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

Ribbon属于进程内LB,只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址

2.Ribbon负载均衡演示

2.1架构说明

Ribbon是一个软负载均衡的客户端组件,可以和其他所需请求的客户端结合使用,和eureka结合只是其中的一个实例

(1)Ribbon架构图
(2)Ribbon的工作顺序

第一,选择EurekaServer,优先选择在同一个区域内负载较少的server

第二,根据用户指定的策略,再从server取到的服务注册列表中选择一个地址

其中用户指定的策略有:轮询、随机和根据响应时间加权

2.2POM文件

2.3二说RestTemplate的使用

(1)getForObject()和getForEntity()方法的区别
(2)postForObject()和postForEntity()方法的区别

postForObject()是post请求,可以携带参数,返回的对象是json格式。

调用的远程服务,返回的是什么,就是什么

postForEntity()是post请求,可以携带参数,返回的对象是Entity对象。

调用的远程服务,返回的是什么,再加上返回码。

3.Ribbon核心组件IRule

IRule:根据特定算法,从服务列表中选取一个要访问的服务

IDEA生成:

3.1Ribbon默认自带的负载规则

(1)修改默认规则
  • 说明:自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,又主启动类上的注解@SpringBootApplication包含了注解@ComponentScan,所以得另起一个包放置自定义规则

(2)新建MySelfRule规则类
(3)主启动类添加@RibbonClient

指定重新配置的规则

4.Ribbon负载均衡算法

4.1原理

4.2源码

4.3手写轮询算法

(1)ApplicationContextBean去掉注解@LoadBalanced
(2)主启动取消自己配置的规则

注意:是在80端口服务的主启动

(3)编写LoadBalancer接口
(4)手写轮询器
(5)80服务的业务层
(6)8001/8002服务的业务层
(7)测试

访问:localhost/consumer/payment/lb

轮询效果出现,查看后台

第八章_OpenFeign接口调用

1.OpenFeign简介

1.1OpenFeign是什么

官网地址:Spring Cloud

1.2Feign能干什么

总结:Feign是一个服务接口绑定器,接口加一个注解

1.3Feign和OpenFeign的区别

2.OpenFeign使用步骤

2.1说明

微服务调用接口+@FeignClient,即接口+注解

2.2新建cloud-consumer-feign-order80

(1)POM
xml 复制代码
	<dependencies>

        <!-- OpenFeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>


        <!-- eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>


        <!-- 引入自己定义的api通用包,可以使用payment对象-->
        <dependency>
            <groupId>springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


    </dependencies>
(2)YML
(3)主启动
(4)业务类
(5)测试
  • 先启动7001/7002服务
  • 再启动8001/8002订单服务
  • 最后启动feign80服务
(6)小总结

3.OpenFeign超时控制

3.1服务提供方8001/8002添加超时方法

3.2服务消费方80添加超时方法

3.3测试

3.4修改默认连接和超时时间

4.OpenFeign日志打印功能

Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节。

说白了就是对Feign接口的调用情况进行监控和输出

4.1日志级别

4.2添加config配置类

4.3yml设置日志打印级别

4.4测试

相关推荐
递归不收敛15 分钟前
Conda 常用命令汇总(新手入门笔记)
笔记·conda
前端橙一陈1 小时前
Salesforce Developer Edition(开发者版) 搭建测试环境
经验分享·笔记·其他
电子小子洋酱1 小时前
BearPi小熊派 鸿蒙入门开发笔记(4)
笔记·华为·harmonyos
Han.miracle1 小时前
数据结构——排序的学习(一)
java·数据结构·学习·算法·排序算法
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 通过配置类代码方式修改静态资源配置 笔记32
java·spring boot·笔记
电子云与长程纠缠2 小时前
Blender入门学习01
学习·blender
洛克大航海2 小时前
5-SpringCloud-服务链路追踪 Micrometer Tracing
后端·spring·spring cloud·zipkin·micrometer
我命由我123452 小时前
Spring Cloud - Spring Cloud 微服务概述 (微服务的产生与特点、微服务的优缺点、微服务设计原则、微服务架构的核心组件)
java·运维·spring·spring cloud·微服务·架构·java-ee
qiuiuiu4133 小时前
正点原子RK3568学习日志12-注册字符设备
linux·开发语言·单片机·学习·ubuntu
我命由我123453 小时前
Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
java·spring boot·spring·spring cloud·微服务·eureka·java-ee