做游戏ppt下载网站有哪些内容建造师招聘网
web/
2025/10/7 19:29:26/
文章来源:
做游戏ppt下载网站有哪些内容,建造师招聘网,wordpress游览器标签页,网站域名费用从《高可用服务设计之二#xff1a;Rate limiting 限流与降级》中的“自动降级”中#xff0c;我们这边将系统遇到“危险”时采取的整套应急方案和措施统一称为降级或服务降级。想要帮助服务做到自动降级#xff0c;需要先做到如下几个步骤#xff1a; 可配置的降级策略Rate limiting 限流与降级》中的“自动降级”中我们这边将系统遇到“危险”时采取的整套应急方案和措施统一称为降级或服务降级。想要帮助服务做到自动降级需要先做到如下几个步骤 可配置的降级策略降级策略达到降级的条件降级后的处理方案策略一定得可配置因为不同的服务对服务的质量定义不一样降级的方案也将不一样。可识别的降级边界一定要精确的知道需要对谁进行降级可以是一个对外服务、对下游的一个依赖或者是内部一段处理逻辑。降级边界主要用来植入降级逻辑。数据采集是否达到降级条件依赖于采集的数据这些数据可以是当前某段时间的数据也可以是很长一段时间的历史数据。行为干预进入降级状态后将会对正常的业务流程产生干预可能是限流、熔断也可能是同步流程变为异步流程等比如发送MQ的变成oneway的形式等。结果干预是返回null还是默认值还是流程上的同步改异步等。快速恢复即如何从降级状态变回正常状态这也需要达到某些条件。我们来逐步看下Hystrix是如何做到以上几点的 ### 可配置的降级策略 ### Hystrix提供了三种降级策略并发、耗时和错误率而Hystrix的设计本身就能很好的支持动态的调整这些策略简单的说就是调整并发、耗时和错误率的阈值当然如何去动态调整需要用户自己来实现Hystrix只提供了入口就是说Hystrix并没有提供一个服务端界面来动态调整这些策略这多少有点让人遗憾。如果要了解Hystrix具体的策略配置可以看看HystrixCommandProperties 和 HystrixThreadPoolProperties两个类。 ### 可识别的降级边界 ### 降级工具面临的第一个难题就是如何在业务代码中植入降级逻辑业务研发人员得提前明确和定义哪些地方是风险点然后将这些地方的逻辑抽取出来Hystrix包装需降级的业务逻辑采用的是Command设计模式我们知道命令模式主要是将请求封装到对象内部让我们使用对象一样来使用请求。这样对Hystrix大有好处因为你需要降级的业务逻辑和数据已经封装成一个Command对象交给Hystrix了Hystrix直接来接管业务逻辑的执行权该何时调用或者甚至不调用都可以我们来看看Hystrix定义的命令接口。 只需要简单继承HystrixCommand就相当于接入了Hystrix泛型R代表返回值类型在run()方法中直接实现正常的业务逻辑并返回R类型的结果如果降级后需要返回特殊的值你只需要覆盖getFallback()方法即可。 举个例子见《服务容错保护断路器Hystrix之六缓存功能的使用》 可以看出我们创建了一个BookCommand 的实例然后调用了execute方法来获取结果这样就基本完成了Hystrix库类已经给逻辑附上了缓存、自动降级等逻辑了当然里面使用了大量Hystrix默认的降级策略配置本文不是Hystrix使用的详细教程所以这里主要突出的是用法而不强调具体的策略配置。这里同样也说明了为什么动态调整配置是很容易的因为每个请求都会新建Command对象注意Command对象是有状态的不能重用你只需要在创建时调整策略参数就行了当然这得用户自己来实现。 虽然看起来很简单但老司机马上会发现问题 系统中每一处需要降级的逻辑都需要将其封装成一个Command类哪怕需要降级的方法只有一行代码。如果一个系统有一百个需要降级的点那么我们需要在系统中新增一百个Command类有时候这让人难以接受。对老的业务系统来说接入Hystrix将意味着巨大的工作量因为你要把很多逻辑都封装成Command你能接受但测试同学未必愿意。每次请求都将创建一个Command对象因为Command对象包含了降级逻辑的大部分操作是个重状态的对象不能复用如果QPS过高将产生大量的朝生夕死的对象对内存分配和GC将产生一定的压力。很多用户确实也提出过抱怨为何Hystrix的侵入性那么强但Hystrix设计者们这么做自然有他们的道理(详见https://github.com/Netflix/Hystrix/wiki/FAQ%20:%20General 的Why is it so intrusive?部分)他们认为我们需要给应用的依赖提供一个清晰的屏障使用Command模式不仅仅是出于功能上的原因也是作为一种标准机制通过Command对象来向用户传递它是受保护的资源。可见Hystrix的设计者们并不建议我们使用基于注解或AOP来作为接入Hystrix的方式但他们仍然说If you still feelstrongly that you shouldnt have to modify libraries and add command objectsthen perhaps you can contribute an AOP module.直译过来就是如果你嫌麻烦不想创建这么多Command对象有本事你自己去实现AOP啊开个玩笑(*^__^*) 。 ### 数据采集 ### 收集数据是必不可少的一步每个降级点需要采取降级保护的点的数据是独立的所以我们可以给每个降级点配置单独的策略。这些策略一般是建立在我们对这些降级点的了解之上的初期甚至可以先观察一下采集的数据来指定降级策略。采集哪些数据数据如何存储数据如何上报这都是Hystrix需要考虑的问题Hystrix采用的是滑动窗口分桶的形式来采集数据具体细节见另一篇这样既解决了数据在统计周期间切换而带来的跳变问题通过时间窗口也控制了切换了力度通过桶大小。另一个有意思的地方是与常规的同步统计数据的方式不同Hystrix采用的是RxJava来进行事件流的异步统计数据类似于观察者模式具体细节见另一篇这样做的好处是降低统计时阻塞业务逻辑的风险在某些情况下还能享受多核CPU所带来的性能上的收益。 ### 行为干预 ### 一旦发现采集的数据命中了降级策略那么降级工具就将对请求进行行为干预行为干预是评价一个降级工具好坏的重要指标它的设计直接关系到系统的“弹性”到底有多大。但有时候行为干预和上面提到的数据采集这两个动作是同时完成的比如使用信号量、线程池或者令牌桶算法来进行降级的时候。行为干预的设计是很有技巧的一般来说有如下两种方案 实时采集当前某段时间周期的数据对每笔请求都进行策略判断每笔请求都会加入数据并进行分析一旦命中策略当即对这笔请求进行行为干预如果没有命中则执行正常的业务逻辑。实时采集当前某段时间周期的数据对每笔请求都进行策略判断每笔请求都会加入数据并进行分析一旦有一笔请求命中了策略接下来的一段时间可配内的所有请求都会被行为干预哪怕接下来再也没有请求命中策略一直到该段时间过去。方案a似乎是比较合理的它总是将系统的行为尽可能的控制在我们预期之内即各项指标都在配置的策略之下但多数情况下我们配置策略会比较宽泛不那么严格那这时候采用方案a对系统来说还是有一定的风险。这时候就出现了相对更激进的方案b一但某些请求导致统计数据触犯了降级策略那么系统会对后续一段时间的所有请求进行降级处理即我们熟知的降级延长。而Hystrix将两者结合起来了让行为干预更加灵活。 ### 结果干预 ### 被降级后的请求是应该返回null还是默认值还是抛异常这些都要根据业务而定。Hystrix也在HystrixCommand提供了getFallback方法来方便用户返回降级后的结果。 ### 快速恢复 ### 快速恢复功能在那些经常由于外部因素而导致进入降级状态的系统来说尤为重要降级系统或工具的一个重大目标就是自动性摆脱需要人为控制开关来保证功能熔断的“原始时代”所以当外部条件已经恢复系统也应该在最短的时间内恢复到正常服务状态这就要求降级系统能够在让业务系统进入降级状态的同时让业务系统有探测外界环境的机会。大多数降级系统都会在一段时间后“放”一笔请求进来让它去“试一试”如果结果是成功的那么将让业务系统恢复到正常状态Hystrix同样也是采用这种做法。 如果看到这里其实大家已经对Hystrix的功能有一定的了解这里再给一张官方的图 这张图已经充分说明了官方推荐的是通过Command线程池的模式来进行业务功能的剥离和管理这些大大小小的线程池使用不当将产生隐患所以千万不要让Hystrix的这种用法变成反模式。 在最后我们来简单总结下Hystrix的特色 Hystrix内部大量使用了响应式编程模型通过RxJava库把能异步做的都做成异步了。这似乎能降低代码复杂度我是指对RxJava了解的人并且在多核CPU的服务器上能带来意外性能收获。Hystrix能做到通过并发、耗时和异常来进行降级并能在并发、限流或内部产生的异常导致的错误率达到一定阈值时进行服务熔断并且还能做到从降级状态快速恢复。Hystrix通过Command模式来包装降级业务这有时候提高了接入成本。Hystrix只提供了策略变更的入口但具体的策略可视化和动态配置还是得用户来实现这确实非常尴尬。Hystrix默认的仪表盘只提供了简单的实时数据显示如果要持久化历史数据也得用户来实现。 转载于:https://www.cnblogs.com/duanxz/p/9679596.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88646.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!