学习笔记:微服务11 spring cloud ribbon(负载均衡)+ hystrix(熔断)

【金三银四】Spring Cloud面试题(2021最新版) Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开 阅读详情

为了提高服务稳定性和服务能力,相同的微服务可能会配置运行多个副本,这些微服务同时提供同等服务,这里要解决的是如何实现负载均衡,随机地访问其中某个微服务,再就是某个微服务宕机时,需要熔断,就是不再分配任务到这个服务器,但恢复服务后又给它分配任务,spring的方案是 ribbon(负载均衡)+ hystrix(熔断)配合使用。

这里要测试这个功能,需要至少四台服务器,一个是eureka 注册中心,reibbon需要它来发现备选服务器列表,二是有两台相同功能的微服务提供者,这两台可以分布在两个ip上,或一个ip的两个端口上,但注册到eureka的应用名要相同,三是一台ribbon+ hystrix功能的服务消费者。

下面介绍这个ribbon+hystrix的配置,主要参考https://blog.youkuaiyun.com/wcblog/article/details/80251226 及其他文章,再抄集理解测试通过。

1. pom.xml 添加依赖

      <dependency> 
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
       </dependency>
        <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
       </dependency> 

2. application.properties

server.port: 8803
spring.application.name=MicroserviceRibbonHystrix8803
spring.cloud.discovery.enabled=true
eureka.client.serviceUrl.defaultZone=http://admin:123@centos7.linbsoft.com:8101/eureka/,http://admin:123@microservice1.linbsoft.com:8102/eureka/
 

3. 启动类 MicroserviceRibbonHystrix8803Application

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
public class MicroserviceRibbonHystrix8803Application {

    public static void main(String[] args) {
        SpringApplication.run(MicroserviceRibbonHystrix8803Application.class, args);
    }
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
在这里定义restTemplate为具有LoadBalanced负载均衡注解。restTemplate是一个发起rest访问请求功能的模板。

4.发起ribbon访问的类

@RestController
public class UserManagementRibbonClient {
	   @Autowired
	    RestTemplate restTemplate;
	   @Value("${server.port}")
	   String port;
	   
	   @GetMapping("/listUsersByRibbon")
	   @HystrixCommand(fallbackMethod="listUsersByRibbonFallback")
	   public String listUsersByRibbon(){
		   // MicroserviceServerA8801 是提供同类服务的多个应用的同名eureka注册名称
		   String result = this.restTemplate.getForObject("http://MicroserviceServerA8801/listusers", String.class);
		   return result;
		   }
	   
	   public String listUsersByRibbonFallback(){
		   return "listUsersByRibbon异常,端口:" + port;
		   }

}

其中 @HystrixCommand(fallbackMethod="listUsersByRibbonFallback") 指定访问超时(时间可在配置文件设置),执行listUsersByRibbonFallback并发起熔断,ribbon不再指向这个熔断的服务器,但服务恢复一段时间后,会自动再加入服务列表。

上图显示两个同名的服务提供者MicroserviceServerA8801,启动一个8801端口副本后修改端口为8802,再启动。

5.访问测试,分别测试两个服务提供者都启动,停止其中一个,停止两个,再启动一个,看访问8803端口的不同响应。

其中服务提供者简单返回字符串

@RestController
public class listUsers {
       @Value("${server.port}")
       String port;
      @RequestMapping("/listusers")
        public String listusersmain() {
            return "服务器端口:" + port + " | users[{'id':'1',name':'张三'},{'id':'2',name':'李四'},{'id':'3',name':'王五'}]";
        }
}

结果:轮询两个服务器,并识别宕机。

 

Spring Cloud微服务架构核心组件与实战指南 微服务架构通过将单体应用拆分为多个松耦合的服务,显著提升了系统的可扩展性和开发效率。Spring Cloud作为微服务架构的标准化工具集,基于Spring Boot的自动配置特性,提供了服务发现、配置中心、负载均衡等分布式系统核心功能的开箱即用解决方案。在技术实现上,Eureka实现服务注册与发现,Feign简化服务间调用,Hystrix提供熔断保护,这些组件协同工作确保了分布式系统的弹性与可靠性。典型应用场景包括电商平台的订单与库存服务解耦、金融系统的分布式事务处理等。通过合理配置Eureka集群、优化F 阅读详情

相关推荐

【2023最新版】Spring Cloud面试题总结(35道题含答案解析)

答:Spring cloud 流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。答:Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。思考以下微服务。

m0_69519298的博客 1万+

一文带你了解Ribbon负载均衡和Hystrix熔断器

Ribbon负载均衡和Hystrix熔断器

技术成就梦想 1670

【2022最新版】Spring Cloud面试题总结(35道题含答案解析)

最近面试的小伙伴很多,对此整理了一份Java面试题手册:基础知识、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、等等。可以分享给大家学习。 【持续更新中】......

m0_58479954的博客 7098

Spring Cloud 介绍及负载均衡Ribbon、服务容错Hystrix 组件使用详解

Spring Cloud 介绍及负载均衡Ribbon、服务容错Hystrix 组件使用详解

墨鸦的博客 7098

【WorkBuddy】WorkBuddy 智能体快速上手:从零到一的实践指南

文章摘要: 传统自动化脚本难以应对灵活多变的自然语言需求,导致逻辑复杂、维护成本高。智能体(Agent)通过理解语义意图、动态决策和松耦合组件解决了这些问题。WorkBuddy采用声明式配置,通过可视化界面定义意图、实体和对话策略,无需编码即可快速构建智能体。其核心组件包括意图分类、实体提取、对话策略、故事样本和回退机制,适用于客服支持、知识问答等高频场景。通过环境准备(Python/Node.js/Redis)和简单配置,用户可以快速搭建可运行的智能体,显著提升自动化效率。

ruiqideng的博客 1625

开源分享:苹果群控手机源代码解析与实战

本文介绍了苹果设备群控的基本原理和实现方法,重点解析了基于Python+Appium的群控系统构建。主要内容包括:1)设备连接管理技术(USB/Wi-Fi);2)自动化控制方式(WDA/AppleScript/Appium);3)实战演示了通过Python脚本实现多设备同时控制,涵盖环境配置、代码解析和功能说明;4)提出了多线程、图像识别等优化方向。文章为开发者提供了快速上手的群控方案,适用于自动化测试、批量管理等场景,并推荐了相关开源项目参考。

2403_88540309的博客 1344

SpringColud——Ribbon(负载均衡)&Hystrix(熔断器)

Ribbon和Histrix的学习笔记

程序员阿龙的博客 1368

单细胞分析(16)—— RNA Velocity 分析流程

RNA velocity 是一种强大的单细胞转录组分析工具,它可以预测细胞的未来状态,揭示发育轨迹,并用于探索细胞状态转换。RNA velocity 是一种通过单细胞 RNA 测序(scRNA-seq)数据推测细胞未来状态的分析方法。🚀**RNA velocity 提供了一个全新的角度来理解细胞的动态变化,为单细胞转录组分析带来了更深入的时空信息!

阅读文献,记录学习笔记 2979

Feign、Ribbon、Hystrix(铁三角)以及三者超时时间配置

在中很多功能都需要调用多个服务才能完成某一项功能,一个成熟的微服务集群,内部调用必然依赖一个好的 RPC 框架,比如:基于 Http 协议的Feign,基于私有 tcp 协议的Dubbo1. Feign 是什么Feign 是Spring Cloud Netflix组件中的轻量级Restful的 HTTP 服务客户端,实现了负载均衡和 Rest 调用的开源框架,封装了Ribbon和RestTemplate, 实现了WebService的面向接口编程,进一步降低了项目的耦合度。

码农崛起 7620

Arduino+L298N电机驱动模块避坑指南:从接线到PWM调速的5个常见错误

本文详细解析了使用Arduino与L298N电机驱动模块时,从电源配置、跳线帽使用到PWM调速的5个常见错误与避坑指南。重点阐述了如何正确分离逻辑与电机电源、拔掉ENA/ENB跳线帽以实现PWM调速、理解H桥接线逻辑以控制直流电机正反转,并提供优化代码与散热建议,帮助开发者稳定驱动电机。

rust6ferris的博客 562

从0入门LocoTrack:6倍加速的SLAM追踪新范式实战指南

传统点追踪方法(如CorrTracker、TAPIR)在处理大规模场景或实时任务时,要么精度不足,要么速度太慢。而LocoTrack通过“局部4D相关性”和“Transformer全局关联”的创新设计,实现了精度与速度的双重突破速度:比现有SOTA方法快6倍,吞吐量高达数万点/秒;精度:在Kinetics、DAVIS等数据集上,定位误差显著低于传统方法;鲁棒性:能应对低纹理、动态场景等复杂环境,这是传统方法的“噩梦场景”。

m0_71589036的博客 95

微服务系列:Spring Cloud 之 Feign、Ribbon、Hystrix 三者超时时间配置

Feign 和 Ribbon 1. 设置 OpenFeign 的超时时间 我们首先来看一下 OpenFeign 自己的请求超时配置,直接在 yml 文件中配置: feign: # 设置 feign 超时时间 client: config: # default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间 default: connectTimeout: 5000 readTimeout: 5000 复制代码 d

wdj_yyds的博客 4376

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 355

学习笔记:微服务11 spring cloud ribbon(负载均衡)+ hystrix(熔断)

为了提高服务稳定性和服务能力,相同的微服务可能会配置运行多个副本,这些微服务同时提供同等服务,这里要解决的是如何实现负载均衡,随机地访问其中某个微服务,再就是某个微服务宕机时,需要熔断,就是不再分配任务到这个服务器,但恢复服务后又给它分配任务,spring的方案是 ribbon(负载均衡)+ hys...

Pannahouse的博客 277

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1278

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

视觉人机器视觉的博客 1480

Ray Data 集成实战:与 Ray Train、PyTorch、TensorFlow 构建端到端 ML 数据管道(AI-Research-SKILLs 数据预处理技能深度解析)

Ray Data 是 Ray 生态中面向 ML 与 AI 负载的分布式数据处理库,本指南以仓库内 [integration.md](https://link.gitcode.com/i/4792f8c07ed2a4bb6bf0fbbb7df05df1) 为核心脉络,系统讲解 Ray Data 与 Ray Train、PyTorch、TensorFlow 三类主流训练框架的对接方式。读完本文,你将掌

gitblog_00761的博客 767

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring Cloud微服务系列-深入理解 Ribbon-Hystrix-Feign

引言 今天和大家聊一聊在Spring Cloud微服务框架实践中,比较核心但是又很容易把人搞得稀里糊涂的一个问题,那就是在Spring Cloud中Hystrix、Ribbon以及Feign它们三者之间在处理微服务调用超时从而触发熔断降级的关系是什么? 我们知道在Spring Cloud微服务体系下,微服务之间的互相调用可以通过Feign进行声明式调用,在这个服务调用过程中Feign会通...

Java666999的博客 769

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【2021最新版】Spring Cloud面试题总结(35道题含答案解析)

文章目录1、什么是Spring Cloud?2、使用Spring Cloud有什么优势?3、服务注册和发现是什么意思?Spring Cloud如何实现?4、负载平衡的意义什么?5、什么是Hystrix?它如何实现容错?6、什么是Hystrix 断路器?我们需要它吗?7、什么是Netflix Feign?它的优点是什么?8、什么是Spring Cloud Bus?我们需要它吗?9、SpringBoot和SpringCloud的区别?10、Spring Cloud和SpringBoot版本对应关系11、Spri

程序媛小琬的博客 4万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

spring cloud ----> RibbonClient设置的熔断器Hystrix不起作用

Ribbon spring.io官网的简介: Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients. 自己的翻译: Ribbon是一个用来负载均衡的客户端,对于http和tcp客户端行为,Ribbon能给与你很多的控制方式。 在给Ribbon设置熔断器Hystrix的时候发现熔断器不起作用。 代码如下: 例子...

ywb201314的专栏 314

gh_mirrors/sp/spring-microservices:终极Spring微服务架构完整指南

Spring微服务架构是现代分布式系统开发的核心技术,本指南将为您详细介绍如何使用Spring Boot和Spring Cloud构建完整的企业级微服务系统。通过这个开源项目,您将掌握从基础RESTful服务到复杂微服务架构的完整知识体系,实现服务注册发现、配置中心、API网关等关键功能。💡 ## 📊 为什么选择Spring微服务架构? **Spring微服务架构** 提供了完整的解决方案

gitblog_00632的博客 1074

Spring Cloud 学习笔记(1 / 3)

spring cloud

You can walk as far as you want. 2534

Spring Cloud项目搭建及组件介绍:Zuul,Ribbon,Eureka,Feign,RestTemplate,Hystrix,zookeeper,seata

一、前言 最近正好面试,发现各大公司对于spring cloud的越来越重视,已经是微服务时代的基础技能了,于是特别针对spring cloud的常用组件做阐述,并且完整搭建一个spring cloud架构的项目,供需要的人参考 二、组件介绍 (针对以下概念了解的可直接跳过看后面的搭建过程) 要理解spring cloud架构的组件,首先要理解微服务架构,什么是微服务?粗略的讲就是随着单机架构包含的service层越来越多,越来越大,大家开始把同功能属性的service层单独抽离出来做成了一个个的单机架构,

55555的博客 2078

Spring Cloud & SpringCloud Alibaba(一套标准化的微服务解决方案)

本文介绍了Spring Cloud微服务架构的基本概念、系统架构演变过程以及核心组件。主要内容包括:Spring Cloud作为微服务落地方案的优势,支持分布式系统开发,提供服务发现、负载均衡等功能;Spring Cloud Alibaba作为补充方案,具备高性能、高可用特性;微服务基础环境搭建步骤,创建父工程聚合管理多个微服务模块。文章通过架构图对比了单体架构、动静分离架构、分布式架构和微服务架构的差异,并提供了Spring Cloud与Spring Boot版本对应关系参考。

m0_48853274的博客 844

科普文:Java基础Spring系列之【微服务系统架构Spring cloud】

构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册配置中心消息总线负载均衡断路器数据监控。

为无为,事无事,味无味。 1321

【Spring-Cloud】使用教程 基础篇 Eureka Ribbon Feign Hystrix Zuul Dashboard Sleuth Zipkin Config Bus

虽然用了好久,还是把有道云上的笔记 1. Eureka-Server 1.1 添加pom依赖 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;dependency&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;group

植富宝 460
上一篇: 学习笔记:微服务10 spring cloud config server配置中心
下一篇: 学习笔记:微服务12 spring cloud Feign(Rest请求)+ hystrix(熔断)
领尚
博客等级 码龄14年 1143粉丝 271原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值