- 浏览: 599431 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
一、Hystrix说明
1.服务雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。
1.A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了。
2.雪崩原因:
1) 服务提供者不可用
a.硬件故障
a1.硬件损坏造成的服务器主机宕机
a2.网络硬件故障造成的服务提供者的不可访问
b.程序Bug
c.缓存击穿:缓存应用重启, 所有缓存被清空时,以及短时间内大量缓存失效时. 大量的缓存不命中, 使请求直击后端,造成服务提供者超负荷运行,引起服务不可用
d.用户大量请求:在秒杀和大促开始前,如果准备不充分,用户发起大量请求造成服务提供者的不可用
2) 重试加大流量
a.用户重试:用户由于忍受不了界面上长时间的等待,而不断刷新页面甚至提交表单
b.代码逻辑重试:服务调用端的会存在大量服务异常后的重试逻辑
3) 服务调用者不可用
a.同步等待造成的资源耗尽:使用同步调用时,会产生大量的等待线程占用系统资源. 一旦线程资源被耗尽,服务调用者提供的服务也将处于不可用状态, 造成服务雪崩效应产生
3.雪崩应对策略:
1) 流量控制
a.网关限流
因为Nginx的高性能, 目前一线互联网公司大量采用Nginx+Lua的网关进行流量控制, 由此而来的OpenResty也越来越热门.
b.用户交互限流
具体措施:
a21. 采用加载动画,提高用户的忍耐等待时间.
a22. 提交按钮添加强制等待时间机制.
c.关闭重试
2) 改进缓存模式
a.缓存预加载
b.同步改为异步刷新
3) 服务自动扩容
a.AWS的auto scaling
4) 服务调用者降级服务
a.资源隔离:主要是对调用服务的线程池进行隔离.
b.对依赖服务进行分类
依赖服务分为: 强依赖和若依赖. 强依赖服务不可用会导致当前业务中止,而弱依赖服务的不可用不会导致当前业务的中止.
c.不可用服务的调用快速失败
一般通过 超时机制, 熔断器 和熔断后的 降级方法 来实现
4.解决方案:
1)使用Hystrix预防服务雪崩
2)Netflix的 Hystrix是一个帮助解决分布式系统交互时超时处理和容错的类库,
它同样拥有保护系统的能力
3)Hystrix的设计原则包括:资源隔离、熔断器、命令模式
二.示例
command有四种获取结果的方式:
1.单一的结果execute
2.异步的结果queue
3.多个结果toObservable/observe(返回observable发射源)
4.相应的fallback也可以设置成异步和同步
Hystrix的主要目标是保护应用线程,而且fallbacks也有可能在调用者线程中,Hystrix需要限制并发的数量,当达到数量时无论多少fallback都不再运行了,就直接返回HystrixRuntimeException。
1.服务雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。
1.A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了。
2.雪崩原因:
1) 服务提供者不可用
a.硬件故障
a1.硬件损坏造成的服务器主机宕机
a2.网络硬件故障造成的服务提供者的不可访问
b.程序Bug
c.缓存击穿:缓存应用重启, 所有缓存被清空时,以及短时间内大量缓存失效时. 大量的缓存不命中, 使请求直击后端,造成服务提供者超负荷运行,引起服务不可用
d.用户大量请求:在秒杀和大促开始前,如果准备不充分,用户发起大量请求造成服务提供者的不可用
2) 重试加大流量
a.用户重试:用户由于忍受不了界面上长时间的等待,而不断刷新页面甚至提交表单
b.代码逻辑重试:服务调用端的会存在大量服务异常后的重试逻辑
3) 服务调用者不可用
a.同步等待造成的资源耗尽:使用同步调用时,会产生大量的等待线程占用系统资源. 一旦线程资源被耗尽,服务调用者提供的服务也将处于不可用状态, 造成服务雪崩效应产生
3.雪崩应对策略:
1) 流量控制
a.网关限流
因为Nginx的高性能, 目前一线互联网公司大量采用Nginx+Lua的网关进行流量控制, 由此而来的OpenResty也越来越热门.
b.用户交互限流
具体措施:
a21. 采用加载动画,提高用户的忍耐等待时间.
a22. 提交按钮添加强制等待时间机制.
c.关闭重试
2) 改进缓存模式
a.缓存预加载
b.同步改为异步刷新
3) 服务自动扩容
a.AWS的auto scaling
4) 服务调用者降级服务
a.资源隔离:主要是对调用服务的线程池进行隔离.
b.对依赖服务进行分类
依赖服务分为: 强依赖和若依赖. 强依赖服务不可用会导致当前业务中止,而弱依赖服务的不可用不会导致当前业务的中止.
c.不可用服务的调用快速失败
一般通过 超时机制, 熔断器 和熔断后的 降级方法 来实现
4.解决方案:
1)使用Hystrix预防服务雪崩
2)Netflix的 Hystrix是一个帮助解决分布式系统交互时超时处理和容错的类库,
它同样拥有保护系统的能力
3)Hystrix的设计原则包括:资源隔离、熔断器、命令模式
二.示例
@HystrixCommand(fallbackMethod = "findOrderFallback", commandProperties = { //timeoutInMilliseconds 使用线程隔离时,调用超时时间 @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000") }) public String findOrder(Long userId,String orderNo) throws InterruptedException { Random random = new Random(); sleepRandom = random.nextInt(2000); System.out.println("sleepRandom="+sleepRandom); Thread.sleep(sleepRandom); ConsumerBeehiveUser user = findById(userId); if (user != null) { return user.getUsername() + " 的订单" + orderNo + " 找到啦!sleepRandom="+sleepRandom; } return "用户不存在!sleepRandom="+sleepRandom; } public String findOrderFallback(Long userId, String orderNo) { return "订单查找失败!sleepRandom="+sleepRandom; }
@SpringBootApplication @EnableDiscoveryClient //开启eureka服务 @EnableFeignClients //开启feigin注解 @EnableCircuitBreaker //开启Hystrix @EnableCircuitBreaker或@EnableHystrix @EnableHystrixDashboard //开启dashboard图形监控 public class ConsumerBeehiveApplication { @Bean @LoadBalanced public RestTemplate restTemplate() { //用于调用"提供者"的方法 return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(ConsumerBeehiveApplication.class, args); } }
command有四种获取结果的方式:
1.单一的结果execute
2.异步的结果queue
3.多个结果toObservable/observe(返回observable发射源)
4.相应的fallback也可以设置成异步和同步
Hystrix的主要目标是保护应用线程,而且fallbacks也有可能在调用者线程中,Hystrix需要限制并发的数量,当达到数量时无论多少fallback都不再运行了,就直接返回HystrixRuntimeException。
发表评论
文章已被作者锁定,不允许评论。
-
Spring BeanFactoryPostProcessor和BeanPostProcessor的区别
2018-11-14 15:40 706链接:https://blog.csdn.net/caihai ... -
spring BeanPostProcessor理解
2018-11-14 11:31 321链接:https://blog.csdn.net/ginkgo ... -
Spring 源码解析之Initializer
2018-11-14 11:27 456链接:https://blog.csdn.net/ktlife ... -
spring transaction同一个类不回滚解决方法
2018-10-11 10:59 7711.修改配置文件 <aop:aspectj-autopr ... -
Spring @Transaction学习
2018-10-08 10:36 2921.考虑有下面这么一个类 public class Foo ... -
spring mvc i18n国际化学习(spring:message)
2018-06-09 09:35 641spring.xml文件中配置: <!-- 存储区域 ... -
Spring Boot Oauth2.0授权服务器
2018-05-11 14:19 1652什么是OAuth? OAuth(Open Authoriza ... -
Spring Boot @Import注解(将指定类实例注入到IOC容器中)
2018-05-09 10:20 1597SpringBoot 的 @Import 用于将指定的类实例注 ... -
Spring Boot @Conditional注解
2018-05-09 10:15 1816Spring Boot的强大之处在于使用了Spring 4框架 ... -
Spring Boot自定义starter pom实例(/META-INFO/spring.factory文件)
2018-05-09 09:48 1139自定义starter pom 自己实现一个简单的例子,当某个类 ... -
Spring Boot自动配置原理(@Conditional @Import)
2018-04-26 14:45 1338Springboot的自动配置是SpringBoot的关键,主 ... -
Spring Boot优缺点总结
2018-04-16 10:25 1536优点: 1.去除了大量的xml配置文件 2.简化 ... -
SpringBoot JPA @Transaction 知识学习
2018-03-16 09:09 761一、事务相关概念 1、事务的特点 原子性:事务是一个原子操 ... -
Sprint @Query注解的用法(nativeQuery=true/false)(Spring Data JPA)
2018-03-15 16:33 38411. 一个使用@Query注解的简单例子 @Query(val ... -
Spring Boot JpaRepository知识学习(Spring Data JPA)
2018-03-14 11:17 18011.Spring Data所解决的问题 Spring Dat ... -
SpringCloud @LoadBalanced注解学习
2018-03-13 09:48 2221当时我们说开启负载均衡很简单,只需要在RestTemplate ... -
Spring Boot配置方式(java配置和注解配置)
2018-03-12 15:09 1109Java配置 从Spring 3.x开始,Spring提供了J ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
SpringCloud | 第七篇: 高可用的服务注册中心
2018-02-26 14:31 484文章 第一篇: 服务的注册与发现(Eureka) 介绍了服务注 ... -
SringCloud | 第六篇: 分布式配置中心(Spring Cloud Config)
2018-02-26 09:13 411一、简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文 ...
相关推荐
接下来,Hystrix是SpringCloud中用于实现断路器模式的重要组件,旨在防止服务雪崩效应。当某个服务因故障无法正常工作时,断路器会打开,阻止其他请求继续调用该服务,从而保护整个系统免受故障服务的影响。 Zuul和...
Hystrix是SpringCloud中的断路器组件,它防止了服务雪崩效应,通过隔离请求和提供降级策略,确保系统的稳定性和可用性。学习Hystrix意味着要理解断路器模式,配置熔断规则,以及监控断路器状态。 SpringCloud ...
5. **Hystrix**:熔断器,用来防止服务间的依赖导致的雪崩效应,实现服务之间的隔离和容错。 6. **Zuul**:API网关,作为所有请求的入口,负责路由转发和过滤。 7. **Sleuth**:用于收集服务间的调用链路数据,便于...
5. **断路器**:Hystrix 提供了容错机制,当服务不可用时,能防止雪崩效应,保护系统稳定性。 6. **服务间通信**:Feign 是一个声明式的 HTTP 客户端,简化了服务间的调用。 7. **智能路由**:Spring Cloud ...
3. **Spring Cloud Hystrix**:Hystrix是断路器模式的实现,用于防止服务雪崩效应,通过隔离服务调用和降级策略,确保系统的稳定性和可用性。 4. **Spring Cloud Zuul**:Zuul是边缘服务和动态路由组件,可以作为...
3. **Hystrix**:断路器,用于防止服务雪崩效应。当某个服务因故障无法响应时,断路器打开,后续请求将直接返回失败,避免影响整个系统。 4. **Config Server**:配置中心,集中管理各个微服务的配置,支持动态刷新...
Hystrix是Spring Cloud中的断路器组件,用于防止服务雪崩效应。通过Hystrix,我们可以监控服务的健康状态,当服务出现故障时,能快速隔离并恢复系统的稳定性。书中会介绍如何使用Hystrix实现熔断、降级和回退策略。 ...
5. **断路器**:Hystrix是Netflix的一个断路器库,用于防止服务雪崩效应,当服务不可用或者响应时间过长时,Hystrix会打开断路,避免请求过多地堆积。 6. **数据访问与缓存**:集成MySQL数据库,可以学习如何在...
Hystrix是SpringCloud中的容错管理工具,用于隔离服务之间的调用,防止因某个服务故障导致整个系统的雪崩效应。它提供了熔断、降级、隔离、监控等多种策略,确保在高并发场景下系统的稳定性和健壮性。 在学习这些...
3. **断路器模式**:Hystrix是Spring Cloud实现断路器模式的主要组件,它能够防止服务雪崩效应,通过隔离请求、降级策略和超时机制来提高系统的容错能力。 4. **配置中心**:Spring Cloud Config提供了集中式的配置...
3. **Hystrix**:Netflix开发的熔断器,用于处理服务间的调用失败,通过隔离请求和故障服务,防止服务雪崩效应,提高系统的整体容错能力。 4. ** Ribbon**:客户端负载均衡器,与Eureka结合使用,可以在客户端选择...
3. **断路器**:Hystrix是Netflix开源的一个断路器库,用于防止服务雪崩效应。当服务调用出现故障时,断路器会打开,避免了故障服务对整个系统的持续影响。 4. **API Gateway**:SpringCloud Gateway是SpringCloud...
Hystrix能够防止服务雪崩效应,通过隔离请求、降级策略和超时控制来提高系统的容错能力。 4. **Ribbon**:客户端负载均衡器。Ribbon是Netflix提供的一个客户端负载均衡器,用于在客户端侧实现服务的负载均衡。 5. ...
3. **断路器模式**:Hystrix 或 Resilience4j 如何防止雪崩效应,确保服务的稳定性。 4. **API 网关**:Zuul 或 Gateway 作为统一入口,处理路由、认证、限流等。 5. **配置管理**:Config Server 和 Client 提供...
6. **Hystrix 断路器**: Hystrix 是 Netflix 开源的一个库,用于防止服务雪崩效应,通过断路器模式监控服务的健康状态,当服务不可用时,可以快速失败或降级到备用策略。 7. **Spring Cloud Gateway**: Spring ...
Hystrix是一个强大的断路器库,可以防止服务雪崩效应。当某个服务因网络延迟或故障无法响应时,断路器会打开,避免后续请求阻塞,而是快速返回一个默认值或者错误信息,保证系统的整体可用性。 在这些项目中,你还...
- **容错与限流**:借助 Hystrix 断路器机制,有效地避免了服务雪崩效应,增强了系统的健壮性。 - **API 网关**:使用 Zuul 作为统一的入口,实现了服务路由、权限控制等功能,降低了客户端与后端服务之间的耦合度。...
5. **断路器模式**:Hystrix是Netflix开源的一个断路器库,用于防止服务雪崩效应,当服务出现故障时,可以快速失败或者降级,保证系统的稳定性。 6. **配置中心**:Spring Cloud Config为微服务提供集中化的外部...
Hystrix 是一个强大的断路器库,用于防止服务雪崩效应,保证系统的稳定性。Ribbon 是一个客户端负载均衡器,可以在服务消费者端进行负载均衡。 在学习 Spring Cloud 时,通常会从创建一个简单的 Eureka 服务器开始...