Fork me on GitHub

Spring Cloud Alibaba迁移指南2:一行代码从Hystrix迁移到Sentinel

本文对Hystrix、Resilience4j、Sentinel进行对比,并探讨如何使用一行代码将Hystrix迁移到Sentinel。 作者:洛夜,校对:周立 在本博客首发,欢迎转载。 前段时间,Netflix宣布Hystrix进入维护模式,详见Hystrix停止开发,我们该何去何从? ,而Spring Cloud亦宣布Spring Cloud Netflix进入维护状态,后续不再进行更新已成为事实。作为开发者的我们,如何使用极简的方式替换Hystrix成为首要解...

跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点,用来监控Hystrix Command。当被@HystrixCommand 注解了的方法被调用时,就会产生监控信息,并暴露到该端点中。当然,该端点默认是不会暴露的,需使用如下配置将其暴露。 12345manag...

跟我学Spring Cloud(Finchley版)-14-Feign使用Hystrix

Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节。 服务降级 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有的Feign Client都会受到Hystrix保护! 123feign: hystrix: enabled: true 提供Fallback: 12345678910111213@FeignClient(name = "microservice-provid...

跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。 包裹请求 使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用到了设计模式中的“命令模式”。 跳闸机制 当某服务的错误率超过一定阈值时,Hys...

跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络通信的,网络可能出问题;微服务本身也不可能100%可用。 如何提升应用的可用性呢?这是我们必须考虑的问题—— 举个例子:某大型系统中,服务A调用服务B,某个时刻,微服务B突然崩溃了。微服务A中,依然有大量请求在请求B,如果没有任何措施,微服务A很可能很快就会被拖死——因为在Java中,一次请...

Hystrix停止开发,我们该何去何从?

是的,Hystrix停止开发了。官方的新闻如下: 考虑到之前Netflix宣布Eureka 2.0孵化失败时,被业界过度消费(关于Eureka 2.x,别再人云亦云了!),为了防止再度出现类似现象,笔者编写了这篇文章。…

实用技巧:Hystrix传播ThreadLocal对象(两种方案)

目前,Spring Cloud已在南京公司推广开来,不仅如此,深圳那边近期也要基于Spring Cloud新开微服务了。 于是,领导要求我出一套基于Spring Cloud的快速开发脚手架(近期开源)。在编写脚手架的过程中,也顺带总结一下以前在项目中遇到的问题: 使用Hystrix时,如何传播ThreadLocal对象? 我们知道,Hystrix有隔离策略:THREAD以及SEMAPHORE。 如果你不知道Hystrix的隔离策略,可以阅读我的书籍《Spring Cloud与Docker微服务架构实战》,或者参考文档:https://github.com/Netflix/Hystrix/wiki/Configuration#executionisolationstrategy …

Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题?

Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? TIPS 本文于2019-01-10更新,基于Spring Cloud Finchley。 造成该问题的原因Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。而首次请求往往会比较慢(由于Ribbon是懒加载的,在首次请求时,才会开始初始化相关类),这个响应时间可能就大于1秒了。知道原因后,我们来总结一下解决方案。以feign为例,解决方案有如下四种。…