当前位置: 首页 > news >正文

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址:
001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控

文章目录

    • 8.Feign远程调用、loadbalancer负载均衡整合
      • 1.OpenFeign整合
        • 1.引入依赖
        • 2.启动类添加`@EnableFeignClients`注解
        • 3.yml配置
        • 4.日志配置
        • 5.远程调用测试
        • 6.服务降级
        • 7.重试配置,服务端异常捕获
        • 8.连接池配置
      • 2.Loadbalancer负载均衡测试
        • 1.复制客户端
        • 2.修改端口启动
        • 3.测试
        • 4.修改负载均衡算法

8.Feign远程调用、loadbalancer负载均衡整合

1.OpenFeign整合

1.引入依赖

注意:由于openfeign高版本使用loadbalancer负载均衡而不是ribbon,所以需要引入loadbalancer依赖排除ribbon,否则会报错

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></exclusion></exclusions></dependency>
2.启动类添加@EnableFeignClients注解
3.yml配置
#由于feign高版本使用loadbalancer负载均衡,排除了ribbon,所以超时时间不能使用ribbon配置
feign:#开启feign对sentinel支持sentinel:enabled: true#feign gzip压缩配置compression:request:enabled: true# 配置压缩的类型mime-types: text/xml,application/xml,application/json# 最小压缩值min-request-size: 2048response:enabled: trueclient:config:#服务名称cloud-production:# 连接超时时间connectTimeout: 90000# 请求处理超时时间readTimeout: 90000# default 全局配置,可以用服务名配置单个服务default:#日志级别,BASIC就是最基本的请求和响应信息loggerLevel: BASIC

springboot全局压缩配置

server:# gzip压缩配置compression:min-response-size: 512mime-types: application/json,application/xml,text/html,text/xml,text/plainexcluded-user-agents: gozilla,traviataenabled: true
4.日志配置

方式一

#日志收集
logging:#feign日志配置level:com.moshangshang.cloud.clean.feign.ProductionFeign: debug  #扫描的是你那个service的类全类名,也可扫包

方式二

feign:client:config:default:#日志级别,BASIC就是最基本的请求和响应信息loggerLevel: BASIC

方式三

@Configuration
public class FeignConfig {/*** feign日志配置*/@Beanpublic Logger.Level feignLogLevel(){return Logger.Level.BASIC; // 日志级别为BASIC}}

单个远程调用使用

@FeignClient(value = "cloud-production",configuration = FeignConfig.class)

全局使用

@EnableFeignClients(defaultConfiguration = FeignConfig.class)
5.远程调用测试

1.fegin调用接口

@FeignClient(value = "cloud-production",configuration = FeignConfig.class)
public interface ProductionFeign {@GetMapping("/cloud-production/test1")String test1();}

2.调用方法

@RestController
@RequestMapping("/cloud-clean")
public class CleanController {@Autowiredprivate ProductionFeign productionFeign;@GetMapping("/test1")public void test1(){String s = productionFeign.test1();System.out.println("远程调用接收到的数据"+s);}}

3.被调用服务方法

@RestController
@RequestMapping("/cloud-production")
public class ProductionController {@GetMapping("/test1")public String test1(){System.out.println("test1 被调用了");return "111";}}

4.测试结果

6.服务降级

1.编写降级工厂类

/*** 服务降级*/
@Slf4j
@Component
public class ProductionFallbackFactory implements FallbackFactory<ProductionFeign> {@Overridepublic ProductionFeign create(Throwable cause) {log.error("服务异常。。。。。。。。。。。。。。。。。。。" + cause);return new ProductionFeign() {@Overridepublic String test1() {return "Fallback回滚";}};}
}

2.使用

@FeignClient(value = "cloud-production",fallbackFactory = ProductionFallbackFactory.class)
7.重试配置,服务端异常捕获
@Slf4j
@Configuration
public class FeignConfiguration {/*** 自定义重试机制*/@Beanpublic Retryer feignRetryer() {//最大请求次数为5,初始间隔时间为100ms,下次间隔时间1.5倍递增,重试间最大间隔时间为1s,return new Retryer.Default();}/*** 客户端捕获服务端异常*/@Beanpublic ErrorDecoder feignError() {return (key, response) -> {if (response.status() == 400) {log.error("请求xxx服务400参数错误,返回:{}", response.body());}if (response.status() == 409) {log.error("请求xxx服务409异常,返回:{}", response.body());}if (response.status() == 404) {log.error("请求xxx服务404异常,返回:{}", response.body());}// 其他异常交给Default去解码处理// 这里使用单例即可,Default不用每次都去newreturn new ErrorDecoder.Default().decode(key, response);};}}
@FeignClient(value = "cloud-production",fallbackFactory = ProductionFallbackFactory.class,configuration = MyConfiguration.class)

8.连接池配置
<!--使用连接池--><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency>
feign:httpclient:# 支持httpClient的开关enabled: true#最大连接数max-connections: 200# 单个路径的最大连接数max-connections-per-route: 50

2.Loadbalancer负载均衡测试

1.复制客户端

2.修改端口启动

3.测试

默认轮询方式调用

4.修改负载均衡算法

1.创建核心配置类

@Configuration
public class RestTemplateConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}@BeanReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {// 获取负载均衡器的名称String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);// 创建并返回一个随机负载均衡器实例return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);}}

2.使用

@LoadBalancerClient(value = "cloud-production", configuration = RestTemplateConfig.class)

自带三个算法,轮询,随机和nacos

相关文章:

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址&#xff1a; 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…...

计算机视觉之图像处理-----SIFT、SURF、FAST、ORB 特征提取算法深度解析

SIFT、SURF、FAST、ORB 特征提取算法深度解析 前言 在图像处理领域亦或是计算机视觉中&#xff0c;首先我们需要先理解几个名词&#xff1a; 什么是尺度不变&#xff1f; 在实际场景中&#xff0c;同一物体可能出现在不同距离&#xff08;如远处的山和近处的树&#xff09;…...

DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署

DeepSeek接入Siri&#xff08;已升级支持苹果手表&#xff09;完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台&#xff0c;通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括&#xff1a;深度学习模型搜索&…...

elabradio入门第八讲——帧同步技术

一、帧同步的相关知识 数字通信中&#xff0c; 为了使接收到的码元能够被理解&#xff0c;需要知道其如何分组。一般说来&#xff0c;接收端需要利用帧同步码去划分接收码元序列。将标志码组开始位置的帧同步码插入于一个码组的前面&#xff0c;如图所示。 这里的帧同步码是一…...

站长工具SEO综合查询是什么?怎么利用站长工具SEO综合查询

你的网站是否像一辆没有仪表盘的车&#xff1f;明明在狂奔却不知道油耗、时速、故障灯状态&#xff1f;2025年SimilarWeb数据显示&#xff0c;83%的站长因缺乏数据化诊断工具&#xff0c;导致50%以上的流量白白流失。今天我们用“修车师傅”的视角&#xff0c;拆解SEO综合查询工…...

超简单理解KMP算法(最长公共前后缀next数组、合并主子串、子串偏移法)

KMP算法理解 最长公共前后缀next合并主子串子串偏移 参考b站&#xff1a;子串偏移、合并主子串 最长公共前后缀next 这个概念是一个trick&#xff0c;帮助我们记录遍历了一遍的数组的相似特性&#xff0c;想出来确实很nb&#xff0c;我也不理解逻辑是怎么想出来的。 字符串的…...

【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model

下载PDF或阅读论文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 我们推出了TESS 2&#xff0c;这是一种通用的指令跟随扩散语言模型&#xff0c;其性能优于当代的指令调整扩散模型&#xff0c;有…...

如何在 React 中测试高阶组件?

在 React 中测试高阶组件可以采用多种策略&#xff0c;以下是常见的测试方法&#xff1a; 1. 测试高阶组件返回的组件 高阶组件本身是一个函数&#xff0c;它返回一个新的组件。因此&#xff0c;可以通过测试这个返回的组件来间接测试高阶组件的功能。通常使用 Jest 作为测试…...

设计模式学习笔记

说了一万遍&#xff01;学习要做笔记&#xff01; 时间一长&#xff0c;就会忘了&#xff0c;后面再来学&#xff0c;又要从头学起 关键是重难点&#xff01;&#xff01;&#xff01;当初学的时候就是因为攻克难点、寻找重点花费时间 不做笔记每次复习都要浪费时间在重难点上…...

写论文技巧 :Word文档插入图片,实现自动对齐

插入表格&#xff0c;调整大小 取消自动适应 插入图片&#xff0c;去掉边框...

VSCode - VSCode 切换自动换行

VSCode 自动换行 1、基本介绍 在 VSCode 中&#xff0c;启用自动换行可以让长行代码自动折行显示&#xff0c;避免水平滚动条频繁使用&#xff0c;提升代码阅读体验 如果禁用自动换行&#xff0c;长行代码就需要手动结合水平滚动条来阅读 2、演示 启用自动换行 禁用自动换…...

postman传query一个数组类型的参数,并且数组里面只有一个值的时候

1.在所加的检索项目后面加上[0], 例&#xff1a; item[0]2.数组里面多个值的时候&#xff0c;写两个相同的项目名&#xff0c;值不相同 itemvalue1 itemvalue2再看不懂&#xff0c;我也没办法了。...

【智能客服】ChatGPT大模型话术优化落地方案

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、项目背景 1.1 行业背景 1.2 业务现…...

vue3 文件类型传Form Data数据格式给后端

在 Vue 3 中&#xff0c;如果你想将文件&#xff08;例如上传的 Excel 文件&#xff09;以 FormData 格式发送到后端&#xff0c;可以通过以下步骤实现。这种方式通常用于处理文件上传&#xff0c;因为它可以将文件和其他数据一起发送到服务器。 首先&#xff0c;创建一个 Vue…...

高考或者单招考试需要考物理这科目

问题&#xff1a;帮忙搜索一下以上学校哪些高考或者单招考试需要考物理这科目的 回答&#xff1a; 根据目前获取的资料&#xff0c;明确提及高考或单招考试需考物理的学校为湖南工业职业技术学院&#xff0c;在部分专业单招时要求选考物理&#xff1b;其他学校暂未发现明确提…...

深入剖析 DeepSeek:张量计算范式全解析

一、引言 在 AI 技术迅猛发展的当下&#xff0c;DeepSeek 以其卓越的性能成为研究热点。清华大学的《DeepSeek&#xff1a;从入门到精通》这一珍贵资料&#xff0c;为我们深入挖掘 DeepSeek 核心原理提供了指引&#xff0c;其中张量计算范式更是关键所在&#xff0c;它构建起整…...

VSCode集成deepseek使用介绍(Visual Studio Code)

VSCode集成deepseek使用介绍&#xff08;Visual Studio Code&#xff09; 1. 简介 随着AI辅助编程工具的快速发展&#xff0c;VSCode作为一款轻量级、高度可扩展的代码编辑器&#xff0c;已成为开发者首选的工具之一。DeepSeek作为AI模型&#xff0c;结合Roo Code插件&#x…...

【保姆级教程】DeepSeek R1+RAG,基于开源三件套10分钟构建本地AI知识库

一、总体方案 目前在使用 DeepSeek 在线环境时&#xff0c;页面经常显示“服务器繁忙&#xff0c;请稍后再试”&#xff0c;以 DeepSeek R1 现在的火爆程度&#xff0c;这个状况可能还会持续一段时间&#xff0c;所以这里给大家提供了 DeepSeek R1 RAG 的本地部署方案。最后实现…...

vue,vue3 keepalive没有效果,无法缓存页面include无效,keep-alive

keepalive没有效果&#xff0c;无法缓存页面&#xff1f; 问题大概是组件的name值不对应&#xff0c;vue2修改组件文件的name值&#xff0c;vue3保持组件文件名称和路由页面配置的name一致就可以了&#xff0c;如果vue3不想保持一致&#xff0c;必须手动在文件后面添加export..…...

Windows逆向工程入门之指针类型

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 1. 指针特性 1.1 指针的优点 1.2 指针的缺点 2. 智能指针 2.1 智能指针的优点 2.2 智能指针的缺点 3. 指针的安全攻防 3.1 指针使用 3.2 指针运算 3.3 指针引用 3.4 参数传递 …...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...