幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

SpringCloud升级之路2020。0。x版30。Fei

  本系列代码地址:https:github。comJoJoTecspringcloudparent需要重试的场景
  微服务系统中,会遇到在线发布,一般的发布更新策略是:启动一个新的,启动成功之后,关闭一个旧的,直到所有的旧的都被关闭。SpringBoot具有优雅关闭的功能,可以保证请求处理完再关闭,同时会拒绝新的请求。对于这些拒绝的请求,为了保证用户体验不受影响,是需要重试的。
  云上部署的微服务,对于同一个服务,同一个请求,很可能不会所有实例都同时异常,例如:Kubernetes集群部署的实例,可能同一个虚拟机Node在闲时部署了多个不同微服务实例,当压力变大时,就需要迁移和扩容。这时候由于不同的微服务压力不同,当时处于哪一个Node也说不定,有的可能处于压力大的,有的可能处于压力小的。对于同一个微服务,可能并不会所有实例位于的Node压力都大。云上部署一般会跨可用区部署,如果有一个可用区异常,另一个可用区还可以继续提供服务。某个业务触发了Bug,导致实例一直在GC,但是这种请求一般很不常见,不会发到所有实例上。
  这时候,就需要我们对请求进行无感知的重试。重试需要考虑的问题重试需要重试与之前不同的实例,甚至是不处于同一个虚拟机Node的实例,这个主要通过LoadBalancer实现,可以参考之前的LoadBalancer部分。后面的文章,我们还会改进LoadBalancer重试需要考虑到底什么请求能重试,以及什么异常能重试:假设我们有查询接口,和没有做幂等性的扣款接口,那么很直观的就能感觉出查询接口是可以重试的,没有做幂等性的扣款接口是不能重试的。业务上不能重试的接口,对于特殊的异常(其实是表示请求并没有发出去的异常),我们是可以重试的。虽然是没有做幂等性的扣款接口,但是如果抛出的是原因是ConnectTimeout的IOException,这样的异常代表请求还没有发出去,是可以重试的。重试策略:重试几次,重试间隔。类比多处理器编程模式中的BusySpin策略会造成很大的总线通量从而降低性能这个现象,如果失败立刻重试,那么在某一个实例异常导致超时的时候,会在同一时间有很多请求重试到其他实例。最好加上一定延迟。使用resilience4j实现FeignClient重试
  FeignClient本身带重试,但是重试策略相对比较简单,同时我们还想使用断路器以及限流器还有线程隔离,resilience4j就包含这些组件。原理简介
  Resilience4J提供了Retryer重试器,官方文档地址:https:resilience4j。readme。iodocsretry
  从配置上就能理解其中的原理,但是官方文档配置并不全面,如果想看所有的配置,最好还是通过源码:
  RetryConfigurationProperties。java重试间隔,默认500msNullableprivateDurationwaitDuration;重试间隔时间函数,和waitDuration只能设置一个,默认就是waitDurationNullableprivateClasslt;?extendsIntervalBiFunctionObjectintervalBiFunction;最大重试次数,包括本身那次调用NullableprivateIntegermaxAttempts;通过抛出的异常判断是否重试,默认是只要有异常就会重试NullableprivateClasslt;?extendsPredicateThrowableretryExceptionPredicate;通过结果判断是否重试,默认是只要获取到结果就不重试NullableprivateClasslt;?extendsPredicateObjectresultPredicate;配置抛出这些异常以及子类则会重试SuppressWarnings(unchecked)NullableprivateClasslt;?extendsThrowable〔〕retryExceptions;配置抛出这些异常以及子类则不会重试SuppressWarnings(unchecked)NullableprivateClasslt;?extendsThrowable〔〕ignoreExceptions;启用ExponentialBackoff延迟算法,初次重试延迟时间为waitDuration,之后每次重试延迟时间都乘以exponentialBackoffMultiplier,直到exponentialMaxWaitDurationNullableprivateBooleanenableExponentialBackoff;privateDoubleexponentialBackoffMultiplier;privateDurationexponentialMaxWaitDuration;启用随机延迟算法,范围是waitDurationrandomizedWaitFactorwaitDurationwaitDurationrandomizedWaitFactorwaitDurationNullableprivateBooleanenableRandomizedWait;privateDoublerandomizedWaitFactor;NullableprivateBooleanfailAfterMaxAttempts;
  引入resilience4jspringboot2的依赖,就可以通过Properties配置的方式去配置Retryer等所有resilience4j组件,例如:
  application。ymlresilience4j。retry:configs:default:最大重试次数,包括第一次调用maxRetryAttempts:2重试等待时间waitDuration:500ms启用随机等待时间,范围是waitDurationrandomizedWaitFactorwaitDurationwaitDurationrandomizedWaitFactorwaitDurationenableRandomizedWait:truerandomizedWaitFactor:0。5testclient1:最大重试次数,包括第一次调用maxRetryAttempts:3重试等待时间waitDuration:800ms启用随机等待时间,范围是waitDurationrandomizedWaitFactorwaitDurationwaitDurationrandomizedWaitFactorwaitDurationenableRandomizedWait:truerandomizedWaitFactor:0。5
  这样,我们就可以通过如下代码,获取到配置对应的Retryer:AutowiredRetryRegistryretryRegistry;读取resilience4j。retry。configs。testclient1下的配置,构建Retry,这个Retry命名为retry1Retryretry1retryRegistry。retry(retry1,testclient1);读取resilience4j。retry。configs。default下的配置,构建Retry,这个Retry命名为retry1不指定配置名称即使用默认的default下的配置Retryretry2retryRegistry。retry(retry2);
  引入resilience4jspringcloud2的依赖,就相当于引入了resilience4jspringboot2的依赖。并在其基础上,针对springcloudconfig的动态刷新RefreshScope机制,增加了兼容。dependencygroupIdio。github。resilience4jgroupIdresilience4jspringcloud2artifactIddependency使用resilience4jfeign给OpenFeign添加重试
  官方提供了粘合OpenFeign的依赖库,即resilience4jfeigndependencygroupIdio。github。resilience4jgroupIdresilience4jfeignartifactIddependency
  接下来,我们使用这个依赖,给OpenFeign添加重试,首先启用OpenFeignClient并指定默认配置:
  OpenFeignAutoConfigurationEnableFeignClients(valuecom。github。jojotech,defaultConfigurationDefaultOpenFeignConfiguration。class)
  在这个默认配置中,通过覆盖默认的Feign。Builder的方式粘合resilience4j添加重试:BeanpublicFeign。Builderresilience4jFeignBuilder(ListFeignDecoratorBuilderInterceptorfeignDecoratorBuilderInterceptors,FeignDecorators。Builderbuilder){feignDecoratorBuilderInterceptors。forEach(feignDecoratorBuilderInterceptorfeignDecoratorBuilderInterceptor。intercept(builder));returnResilience4jFeign。builder(builder。build());}BeanpublicFeignDecorators。BuilderdefaultBuilder(Environmentenvironment,RetryRegistryretryRegistry){Stringnameenvironment。getProperty(feign。client。name);Retryretrynull;try{retryretryRegistry。retry(name,name);}catch(ConfigurationNotFoundExceptione){retryretryRegistry。retry(name);}覆盖其中的异常判断,只针对feign。RetryableException进行重试,所有需要重试的异常我们都在DefaultErrorDecoder以及Resilience4jFeignClient中封装成了RetryableExceptionretryRetry。of(name,RetryConfig。from(retry。getRetryConfig())。retryOnException(throwable{returnthrowableinstanceoffeign。RetryableException;})。build());returnFeignDecorators。builder()。withRetry(retry);}

史上最佳配色,iPhone14Pro高贵紫色登场,真的会变色随着智能手机的技术创新和发展达到瓶颈,智能手机在功能创新上难以取得重大突破。能做的就是改进和完善手机现有的功能。给用户留下的印象是手机产品没有新的创意和创新,所以科技厂商也在绞……苹果新机最新消息,屏下指纹没了,折叠屏有一次延期这段时间各个手机品牌的消息都比较多,对于苹果来说,大家最期待的肯定是新的iPhone14系列以及苹果的折叠屏手机。这两款产品最近都有了新的爆料,而且感觉还挺靠谱,今天小编就给大……倒序洗头真的是一绝!姐妹们快去试试最近一直有刷集美们好多都在用这个方法啊!!!发质不好的姐妹们可以试试这个方法!洗头发之前一定要用气垫梳子把头发梳开,然后浸湿发尾用护发素涂发尾,厚厚敷上一层然……武大靖的三大悬念武大靖:我真正的对手就是自己图新华社武大靖能否再夺冬奥会金牌图新华社1月25日清晨,北京冬奥会中国体育代表团的100多名运动员和教练员代表来到天安门广场观看升国旗仪……微星强袭GE77HX游戏本评测4K光追也能跃然屏上在如今高端旗舰游戏本的屏幕配置上,有面向电竞游戏,追求超快响应的360Hz高刷屏,另外一个路线就是为了体验超高清游戏画面,会提供2。5K甚至4K高分辨率的屏幕,相信对于大多数喜……第一次来朝鲜旅行,平壤必去的三大街道,感受现代高科技几乎所有的旅游都不过走马观花,如果没有足够的时间逗留在当地,你是不可能对其有一个充分了解的,所以人们在规划行程时总会划出重点,特别像朝鲜这样游客不可以待太长时间的地方,其实朝鲜……排面!全红婵C位合唱陈伟霆等明星,抹口红可爱,邓超扎马步合影10月26日消息,今天,冬奥倒计时100天主题活动的节目录制现场曝光,14岁跳水奥运冠军全红婵再次成为台上台下的焦点人物,在大合唱表演中她成为全场C位,而在幕后著名演员邓超也化……盘点近10年内国外动,战争,科幻等类准备好爆米花和快乐水吧您最喜欢的新电影正在Netflix上等着您。凭借其庞大的新电影和经典电影库,以及您在其他任何地方都找不到的大量电影,流媒体服务为每个人提供了一些东西。随着每个月新电影进入Net……八一特供连环画八一风暴。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。……华为Nova10到底值不值得买?全面评测!1部手机能顶1个v2022年7月4日,华为在夏季新品发布会上发布了首款主角影像手机华为nova10和华为nova10pro。我也第一时间拿到了华为nova10的样机,在我拿到手以后,给我的第一感……中戏96级明星艺考照曝光,章子怡清纯秦海璐大气,曾黎不愧是班最近一次网上曝光了一组中央戏剧学院96级女生的老照片,照片中的女明星们是一副青春靓丽的样子,网友纷纷对此纷纷留言。在一大群照片中,章子怡扎着两个麻花辫,显得十分可爱;梅婷……正式离队!北京首钢老臣告别CBA赛场曾帮助球队拿到总冠军在秦晓雯成为北京首钢负责人之后,曾经表示要在三年内让球队重返争冠行列,为此他们引进了杰克逊、汉密尔顿、林书豪、尤度等大牌外援,以及范子铭、李慕豪等优秀球员,然而四个赛季过去了,……
美国推动世界银行应对气候变化和其他问题的使命取得更快进展大家好,随着全球气候变化和其他全球危机的影响继续困扰着世界,美国财政部长珍妮特耶伦呼吁世界银行加快其扩大放贷能力以应对这些问题的计划。世界银行的演变路线图本月早些时候曾被……每日状态追踪湖人盼望浓眉全明星前复出,凯斯勒2021每日状态追踪是公众号小霸龙侃球的日更栏目致力于服务广大希望了解赛事的球迷,在大球队高热点事件占据各家媒体首页又流言满天飞的今天,给你最专业、纯粹、全面的赛事信息。内……LNG有惊无险击败RED!Ale杰斯对线打穿,icon劫绕后S11入围赛第二个比赛日打响,LNG迎来了与RED的较量。两支战队在首日都是未尝一败,RED的整体表现非常不错。不过在面对LNG时,RED苦战29分钟败下阵来,LNG有惊无险拿……李鸿章临终前曾告诫后人,中国要强大需先灭此国,此国是哪一国?李鸿章是我国近代饱受争议的人物,自《马关条约》签订后,一直被我国人以卖国贼冠名。但是实际上,李鸿章此人还是有雄才大略的,他开启的洋务运动拉开了中国历史的一段新篇章。更厉害……中国科技人才大数据广东总量第一,北上这类人才多北京、上海虽然RD人员总量并未进入前三,但从结构上看,高层次人才占比较多,北京RD研究人员占RD人员全时当量比例达66。2,上海为58。4。作为科技创新的最关键因素,创新……CBA三消息广东赵睿已经复出,李添荣胜廖三宁,邬挺嘉单独加练大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!球迷们都非常清楚,现在广东队遇到了比较麻烦的问题,那就是人员非常不齐整,第二阶段常规赛刚开始的时候,球队的主力锋线……去年北京二手房成交量同比降26,今年1月上旬市场活跃度回升2022年,受多重外部因素影响,北京整体二手房市场预期转弱。根据北京市住建委官网数据统计,2022年,北京二手房共成交约14。24万套,较2021年下降26。3。不过,贝壳研究……1949年毛泽东点将陈正人,出发前交代要活捉此人20年的账该图丨陈正人前言1949年4月下旬,中国人民解放军以雷霆万钧之势向江西挺进,全国胜利指日可待。其实早在3月份的时候,中共中央就已经在考虑解放江西后的问题了,其中最重要……四年级作文下雪了这样写才出彩这两天,我们大东北下雪了,而且是百年不遇的暴雪。大雪整整下了一天两夜。雪花是从前天晚上就开始飘落的,昨天早上起来,向窗外一看,楼房、树木、街道全都被白茫茫的大雪笼罩着,停……散文人到中年,不惧岁月沧桑,亦无需感伤作者:子墨等风来不如追风去,追逐的过程就充满了人生的意义。虽然路上要经历千辛万苦,经历风霜侵袭,在风雨兼程中收获人生所得,所以说,任何值得到达的地方,都没有捷径,更……哈利波特手游虎牙西客为何死磕赫敏,单排双排都能无敌哈利波特手游MA2赛季到来之后,游戏体验非常不错。其中最强的套路,个人认为是多比。不过虎牙有一位知名主播,却并不选择随大流,而是一直在死磕赫敏。赫敏作为游戏内最早的回响之一,核……12强赛0叙利亚!提前进军世界杯,金珍洙头槌权昶勋远射北京时间2月1日,世预赛亚洲区12强赛叙利亚主场迎战韩国。上半场韩国队占据进攻主动优势,但叙利亚的进攻更有效率,开场不久取得进球但被判越位,随后韩国队后防线失误,险些丢球,韩国……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网