Hystrix翻译

教程:一起学习Hystrix--Hystrix处理异常机制(降级方法)

♀尐吖头ヾ 提交于 2019-12-02 20:19:58
目录 降级 异常传递 惊喜 Fallback(降级) 我们可以通过增加一个 fallback (回退)方法在hystrix命令实现优雅降级,如果主命令失败,hystrix可以获取一个默认值或者值集合。我们可能想为更多的可能失败的hrstrix命令实现一个回退方法,但是会有以下几种例外: 执行写操作的命令 如果设计的hrstrix命令是执行一个写操作而不是返回一个结果(这个写操作在 HystrixCommand 通常返回 void,在 HystrixObservableCommand 返回一个空的可观察者),此场景下执行回退方法没有什么意义,如果写操作失败,服务方应该是希望告知调用方,让调用方再进一步处理。 批处理系统/离线分析 如果Hystrix命令正在填充一个缓存,或者生成一个报告,或者做任何离线计算。如果发生错误,通常应该将错误 告知调用方,让调用方做进一步处理,而不应该发送一个默认的响应。 如果命令执行异常,无论 Hystrix命令是否有回退方法,hystrix命令状态、断路器/度量器都会更新为此条命令失败。 在一个普通的 HystrixCommand 中通过重写 getFallback() 方法实现一个回退方法,比如 run() 方法有异常, hystrix会为所有类型的异常执行回退方法,比如 超时、线程池或信号量拒绝,以及断路器短路。 包含回退方法的示例如下:

教程:一起学习Hystrix--Hystrix初识

时光毁灭记忆、已成空白 提交于 2019-12-02 20:19:44
目录 Hystrix是什么 Hystrix用来做什么 Hystrix解决什么问题 Hystrix设计原则 Hystrix如何实现目标 Hystrix是什么 在分布式环境下,难免出现许多服务之间调用失败的场景, Hystrix是一个通过添加延迟容忍和容错逻辑帮助您控制这些分布式服务之间交互的库。 Hystrix通过隔离服务之间的访问点来实现应用之间连锁故障(因下游服务失败,导致上游服务不可用),出现故障提供备选方案来提高应用整体的可用性。 举例:抢购活动中,由于库存服务超时或者崩掉,可以通过提示抢购失败,请稍后重试等预防抢购应用不可用 Hystrix用来做什么 Hystrix可以做一些事情: 通过第三方客户端库,为控制延迟和依赖之间调用失败提供保护。 在复杂的分布式系统中阻止连锁故障 快速故障恢复 在可能的情况下,做到服务隔离和优雅降级 尽可能的实时监控、报警、运维控制 Hystrix解决什么问题 复杂的分布式应用有许多依赖调用,在某一时刻它们之间必然会出现失败,这就是导致应用整体故障的风险。 例如,对于一个依赖于30个服务的应用程序,每个服务的正常运行时间为99.99%,下面是您可以预期的结果。 99.99 的30次方= 99.7% (意味着有0.3%的失败) 10亿*0.3% = 300万(10亿次请求会有300万次请求失败) 即使每个月在很好的正常运行的时间

教程:一起学习Hystrix--Hystrix常用场景--降级(回退)

孤人 提交于 2019-12-01 12:13:20
目录 Hystrix本系列博文 静态降级(返回默认值) 自定义降级 网络缓存降级 主备降级 声明 Hystrix本系列博文 以下为博主写Hystrix系列的文章列表, 顺便骗个赞,觉得写的还可以的,不要吝啬你的赞哟 点击查看 Hystrix入门 点击查看 Hystrix命令执行 点击查看 Hystrix处理异常机制(降级方法) 点击查看 Hystrix命令名称、分组、线程池 点击查看 Hystrix命令名称、Hystrix请求处理 点击查看 Hystrix请求处理 点击查看 Hystrix常用场景--失败 静态降级(返回默认值) 可以在代码中静态的返回默认值进行降级, 这不会导致功能或服务以“静默失败”的方式被删除,而是导致默认行为发生。 例如,如果一个命令基于用户凭据返回true/false,如果命令执行失败,它可以默认为true: @Override protected Boolean getFallback() { return true; } HystrixObservableCommand 等价 对于 HystrixObservableCommand 的静默失败解决方案是调用重写 resumeWithFallback 方法,示例如下: @Override protected Observable<Boolean> resumeWithFallback() { return

教程:一起学习Hystrix--Hystrix请求处理

拈花ヽ惹草 提交于 2019-12-01 12:13:08
目录 Hystrix本系列博文 请求缓存 请求合并 请求上下文设置 声明 Hystrix本系列博文 以下为博主写Hystrix系列的文章列表 点击查看 Hystrix入门 点击查看 Hystrix命令执行 点击查看 Hystrix处理异常机制(降级方法) 点击查看 Hystrix命令名称、分组、线程池 请求缓存 您可以通过在 HystrixCommand 或 HystrixObservableCommand 上实现 getCacheKey() 方法来启用请求缓存,如下所示: public class CommandHelloRequestCache extends HystrixCommand<Boolean> { private final int value; protected CommandHelloRequestCache(int value) { super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")); this.value = value; } @Override protected Boolean run() { return value == 0 || value % 2 == 0; } @Override protected String getCacheKey() { return String

教程:一起学习Hystrix--Hystrix命令名称、分组、线程池

有些话、适合烂在心里 提交于 2019-12-01 12:12:56
目录 Hystrix本系列 命令名称 命令分组 命令线程池 惊喜 Hystrix本系列 以下为博主写Hystrix系列的文章列表 点击查看 Hystrix入门 点击查看 Hystrix命令执行 点击查看 Hystrix处理异常机制(降级方法) 命令名称 默认情况下,命令名称来源于类名。 getClass().getSimpleName(); 如果要显示定义名称的话,可以通过 HystrixCommand 或者 HystrixObservableCommand 的构造函数: public HystrixHelloWorldCommand(String name) { super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("Command Group: Hello World")) .andCommandKey(HystrixCommandKey.Factory.asKey("Command Name: Hello World"))); this.name = name; } 为了给每个命令集合保存Setter配置,可以缓存Setter,示例如下: private static final Setter cachedSetter = Setter.withGroupKey

教程:一起学习Hystrix--Hystrix常用场景--失败

雨燕双飞 提交于 2019-12-01 12:12:46
目录 Hystrix本系列博文 快速失败 静默失败 声明 Hystrix本系列博文 以下为博主写Hystrix系列的文章列表 点击查看 Hystrix入门 点击查看 Hystrix命令执行 点击查看 Hystrix处理异常机制(降级方法) 点击查看 Hystrix命令名称、分组、线程池 点击查看 Hystrix命令名称、Hystrix请求处理 快速失败 最基本的操作是仅仅执行一个操作,没有回退或者降级方案。如果出现异常,则直接抛出一个异常。 就像下面示例一样: // 转帖请注明原贴地址:https://my.oschina.net/u/2342969/blog/1817652 public class HystrixFailsFast extends HystrixCommand<String> { private final boolean throwException; public HystrixFailsFast(boolean throwException) { super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")); this.throwException = throwException; } @Override protected String run() { if (throwException) {

教程:一起学习Hystrix--Hystrix入门

£可爱£侵袭症+ 提交于 2019-11-30 07:09:46
目录 获取hystrix库 "hello world" 构建hystrix 获取hystrix库 在 http://search.maven.org (国内访问较慢)找到hystrix关于 Maven, Ivy, Gradle等的二进制文件以及依赖信息。还可以通过 http://mvnrepository.com(推荐)获取。 maven的示例: <!-- https://mvnrepository.com/artifact/com.netflix.hystrix/hystrix-core --> <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>x.x.x</version> </dependency> lvy如下: <!-- https://mvnrepository.com/artifact/com.netflix.hystrix/hystrix-core --> <dependency org="com.netflix.hystrix" name="hystrix-core" rev="x.x.x"/> Gradle如下: // https://mvnrepository.com/artifact/com.netflix