当前位置: 首页 > news >正文

南京市高淳县建设厅网站个人做的网站

南京市高淳县建设厅网站,个人做的网站,手机网站营销,图片海报制作软件[每日一句] 也许你度过了很糟糕的一天#xff0c;但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加#xff0c;随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中#xff0c;【熔断、隔离、降级、限流】是经常被使…[每日一句] 也许你度过了很糟糕的一天但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中【熔断、隔离、降级、限流】是经常被使用的。而相关的技术Hystrix本身早已算不上什么新技术但它却是最经典的技术体系。Hystrix以实现熔断降级的设计从而提高了系统的可用性。Hystrix是一个在调用端上实现断路器模式以及隔舱模式通过避免级联故障提高系统容错能力从而实现高可用设计的一个Java服务组件库。*Hystrix实现了资源隔离机制 前提介绍 Hystrix的超时检测本质上通过启动单独线程去检测的线程的执行的时间刚好就是任务超时的时间本质上就是这么个简单的逻辑。 Hystrix超时后会抛出一个 HystrixTimeoutException的异常。 超时检测逻辑 Hystrix的超时包括注册过程和执行过程两个注册过程如下 执行lift(new HystrixObservableTimeoutOperator(_cmd))关联超时检测任务。在HystrixObservableTimeoutOperator类中new TimerListener()负责创建检测任务HystrixTimer.getInstance().addTimerListener(listener)负责关联定时任务。 在HystrixObservableTimeoutOperator类中addTimerListener通过java的定时任务服务scheduleAtFixedRate在延迟超时时间后执行。 Hystrix的超时执行过程如下 在超时后执行listener.tick()方法后执行类TimerListener的tick方法在TimerListener类的tick方法中执行timeoutRunnable.run()后执行HystrixContextRunnable的run方法在HystrixContextRunnable类run方法中执行child.onError(new HystrixTimeoutException())实现超时。executeCommandWithSpecifiedIsolation(_cmd).lift(new HystrixObservableTimeoutOperator(_cmd)); private static class HystrixObservableTimeoutOperator implements Operator {final AbstractCommand originalCommand;public HystrixObservableTimeoutOperator(final AbstractCommand originalCommand) {this.originalCommand originalCommand;}public Subscribersuper R call(final Subscribersuper R child) {final CompositeSubscription s new CompositeSubscription();child.add(s);final HystrixRequestContext hystrixRequestContext HystrixRequestContext.getContextForCurrentThread();TimerListener listener new TimerListener() {public void tick() {if(originalCommand.isCommandTimedOut.compareAndSet(TimedOutStatus.NOT_EXECUTED, TimedOutStatus.TIMED_OUT)) {originalCommand.eventNotifier.markEvent(HystrixEventType.TIMEOUT,originalCommand.commandKey);s.unsubscribe();final HystrixContextRunnable timeoutRunnable new HystrixContextRunnable(originalCommand.concurrencyStrategy, hystrixRequestContext, new Runnable() {public void run() {child.onError(new HystrixTimeoutException());}});timeoutRunnable.run();}}public int getIntervalTimeInMilliseconds() {return originalCommand.properties.executionTimeoutInMilliseconds().get();}};final Reference tl HystrixTimer.getInstance().addTimerListener(listener);originalCommand.timeoutTimer.set(tl);Subscriber parent new Subscriber() {public void onCompleted() {if (isNotTimedOut()) {tl.clear();child.onCompleted();}}public void onError(Throwable e) {if (isNotTimedOut()) {tl.clear();child.onError(e);}}public void onNext(R v) {if (isNotTimedOut()) {child.onNext(v);}}private boolean isNotTimedOut() {return originalCommand.isCommandTimedOut.get() TimedOutStatus.COMPLETED ||originalCommand.isCommandTimedOut.compareAndSet(TimedOutStatus.NOT_EXECUTED,TimedOutStatus.COMPLETED);}};s.add(parent);return parent;}}public Reference addTimerListener(final TimerListener listener) {startThreadIfNeeded();Runnable r new Runnable() {public void run() {try {listener.tick();} catch (Exception e) {logger.error(Failed while ticking TimerListener, e);}}};ScheduledFuture f executor.get().getThreadPool().scheduleAtFixedRate(r,listener.getIntervalTimeInMilliseconds(), listener.getIntervalTimeInMilliseconds(),TimeUnit.MILLISECONDS);return new TimerReference(listener, f);}public class HystrixContextRunnable implements Runnable {private final Callable actual;private final HystrixRequestContext parentThreadState;public HystrixContextRunnable(Runnable actual) {this(HystrixPlugins.getInstance().getConcurrencyStrategy(), actual);}public HystrixContextRunnable(HystrixConcurrencyStrategy concurrencyStrategy, final Runnableactual) {this(concurrencyStrategy, HystrixRequestContext.getContextForCurrentThread(), actual);}public HystrixContextRunnable(final HystrixConcurrencyStrategy concurrencyStrategy,final HystrixRequestContext hystrixRequestContext, final Runnable actual) {this.actual concurrencyStrategy.wrapCallable(new Callable() {public Void call() throws Exception {actual.run();return null;}});this.parentThreadState hystrixRequestContext;}public void run() {HystrixRequestContext existingState HystrixRequestContext.getContextForCurrentThread();try {HystrixRequestContext.setContextOnCurrentThread(parentThreadState);try {actual.call();} catch (Exception e) {throw new RuntimeException(e);}} finally {HystrixRequestContext.setContextOnCurrentThread(existingState);}} } 复制代码分享资源 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2m51L4re-1691416305735)(https://pic.imgdb.cn/item/64d0dc6a1ddac507cc857b30.png)] 获取以上资源请访问开源项目 点击跳转
http://www.w-s-a.com/news/846791/

相关文章:

  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语
  • 各大网站收录查询汕尾手机网站设计
  • 东莞网站平台费用58同城推广能免费做网站吗
  • 网站建设的组织机构做博客网站赚钱吗
  • 移动网站建设的前期规划内容南阳网站备案
  • 天津公司网站建设公司哪家好网站建设评估
  • 猪八戒网网站建设wordpress建网 打不开
  • 廊坊网站排名优化报价自学网站建设和seo
  • 摄影网站开发背景vs2012做网站
  • 网站建设空间使用标准沈阳网站建设招标公司
  • 网站流量怎么做的成都山而网站建设公司
  • 天河区网站建设公司爱站网排名
  • 怎样开发设计网站建设博物馆网页设计案例
  • 山西建设厅网站查不了seo搜索引擎优化包邮
  • 临沂网站建设价格太原网站优化公司
  • 网页设计基础课程设计搜索引擎优化英文
  • 网站备案号怎么查楼书设计素材网站
  • 网站设计机构有哪些中国建设银行网站登录不上
  • 烟台理工学校网站罗湖建设网站
  • 卑鄙的网站开发公司郑州人才网站
  • 成都专业的网站设计公司文化建设的成就