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

网站制作零基础学习杭州比较好的软装设计公司

网站制作零基础学习,杭州比较好的软装设计公司,网店策划书模板,如何与老板谈网站建设Polly是.NET生态非常著名的组件包一 介绍Polly 的能力• 失败重试#xff1a;当我们服务调用失败时#xff0c;能够自动的重试• 服务熔断#xff1a;当我们服务部分不可用时#xff0c;我们的应用可以快速响应一个熔断结果#xff0c;避免持续的请求这些不可用的服务而导… Polly是.NET生态非常著名的组件包一 介绍Polly 的能力• 失败重试当我们服务调用失败时能够自动的重试• 服务熔断当我们服务部分不可用时我们的应用可以快速响应一个熔断结果避免持续的请求这些不可用的服务而导致整个应用程序出现问题• 超时处理我们为服务的请求设置一个超时时间当超过超时时间可以按照我们预定的操作进行处理比如返回一个缓存的结果。• 舱壁隔离实际上是一个限流的功能我们可以为服务定义最大的流量和队列这样可以避免我们的服务因为请求量过大而被压崩。• 缓存策略可以让我与类似于AOP方式为应用嵌入缓存的机制当缓存命中时我们可以快速地响应缓存而不是持续的请求服务。• 失败降级当我们的服务不可用时我们可以响应一个更友好的结果而不是报错。• 组合策略可以让我们将上面的 策略组合在一起按照一定的顺序我们可以对不同的场景组合不同的策略类实现我们的应用程序。Polly 使用步骤• 定义要处理的异常类型或返回值• 定义要处理动作重试、熔断、降级响应等• 使用定义的策略来执行代码适合失败重试的场景• 服务“失败”是短暂的可自愈的在失败的场景里我们可以非常有效的避免这种网络闪断这种情况• 服务是幂等的重复调用不会有副作用在失败重试情况下有可能会造成多次调用的情况因为有些失败可能是你的命令已经发出了但是你没收到响应它会重试。场景举例• 网络闪断• 部分服务节点异常重试的过程可能就可以命中到正常的节点最佳实践• 设置失败重试次数• 设置带有步长策略的失败等待间隔• 设置降级响应• 设置断路器尽量设置重试的次数尽量设置不同的间隔,否则会造成类似于DDOS的情况当我们的重试的次数达到上限以后我们应该为服务提供一个降级的响应更友好的响应结果。DDOS 全称Distributed Denial of Service中文意思为“分布式拒绝服务”就是利用大量合法的分布式服务器对目标发送请求从而导致正常合法用户无法获得服务策略的类型• 被动策略异常处理、结果处理• 主动策略超时处理、断路器、舱壁隔离、缓存组合策略• 降级响应• 失败重试• 断路器• 舱壁隔离策略与状态共享Policy类型状态说明CircuitBreaker断路器有状态共享成功失败率以决定是否熔断Bulkhead舱壁隔离有状态共享容量使用情况以决定是否执行动作Cache缓存有状态共享缓存的对象以决定是否命中其它策略无状态-有状态时间参数、次数参数等计数实例来承载的对不同的服务进行定义不同的策略二  应用我们本次使用的组件包如下:Polly Polly.Extensions.Http Microsoft.Extensions.Http.Polly瞬时Http错误重试策略  错误规则网络故障HttpRequestExceptionHTTP 5XX 状态代码服务器错误HTTP 408 状态代码请求超时有关配置策略的指南请参阅有关 PolicyHttpMessageHandler 的备注。public void ConfigureServices(IServiceCollection services) {services.AddHttpClient(myClient, conifg {conifg.BaseAddress new Uri(http://localhost:9090);}).//瞬时http错误重试策略 执行10次//抛出 HttpRequestException 或者响应码为5XX或者408AddTransientHttpErrorPolicy(p //错误重试配置  重试次数p.RetryAsync(10)).AddTransientHttpErrorPolicy(p p.WaitAndRetryAsync(10, i TimeSpan.FromSeconds(2))).AddTransientHttpErrorPolicy(p //等待第i次*两秒重试 总共重试10次 越往后等的时间越久p.WaitAndRetryAsync(10, i TimeSpan.FromSeconds(2 * i))).AddTransientHttpErrorPolicy(p //等待第i次*两秒重试 一直重试 直到成功p.WaitAndRetryForeverAsync(i TimeSpan.FromSeconds(i * 3))); }使用自定义的Http错误重试策略  可以根据HttpResponseMessage定义自己的重试条件public void ConfigureServices(IServiceCollection services) {//定义自己的策略 var reg services.AddPolicyRegistry();//根据返回的状态码自定义自己的返回策略 reg.Add(retryforever, Policy.HandleResultHttpResponseMessage(message {return message.StatusCode System.Net.HttpStatusCode.Created;}).RetryForeverAsync());//配置httpclient使用retryforever 的策略 services.AddHttpClient(myClient2). AddPolicyHandlerFromRegistry(retryforever);//根据HttpRequestMessage 来定义策略 services.AddHttpClient(myClient3). AddPolicyHandlerFromRegistry((registry, message) { return message.Method HttpMethod.Get ?registry.GetIAsyncPolicyHttpResponseMessage(retryforever) :Policy.NoOpAsyncHttpResponseMessage();});} });}熔断策略public void ConfigureServices(IServiceCollection services) {//熔断services.AddHttpClient(myClient4).AddPolicyHandler(PolicyHttpResponseMessage.HandleHttpRequestException().CircuitBreakerAsync( //报错10次后尽行熔断 handledEventsAllowedBeforeBreaking: 10, //熔断的时间 10秒 durationOfBreak: TimeSpan.FromSeconds(10), //当我们熔断时触发的一个事件 onBreak: (r, t) { },//当我们熔断恢复时的事件 onReset: () { }, //在我们恢复之前进行验证服务是否可用  //打一部分的流量去验证我们的服务是否可用的事件 onHalfOpen: () { })); } 高级熔断策略public void ConfigureServices(IServiceCollection services) { //高级熔断策略 services.AddHttpClient(myClient4). AddPolicyHandler(PolicyHttpResponseMessage. HandleHttpRequestException(). AdvancedCircuitBreakerAsync( //比例0.8服务出错进行熔断 failureThreshold: 0.8, //10秒以内 请求出错比例0.8 进行熔断 samplingDuration: TimeSpan.FromSeconds(10), //最小的吞吐量100  //当我们请求量比较小的时候 //比如说我们十秒采样范围内  //当我们的请求数超过100个时才会进行熔断  //当请求量比较小的时候是不需要熔断 minimumThroughput: 100, //熔断的时长 20秒 durationOfBreak: TimeSpan.FromSeconds(20), //当我们熔断时触发的一个事件 onBreak: (r, t) { }, //当我们熔断恢复时的事件 onReset: () { }, //在我们恢复之前进行验证服务是否可用  //打一部分的流量去验证我们的服务是否可用的事件 onHalfOpen: () { }));} 服务降级策略publicvoid ConfigureServices(IServiceCollection services){//定义服务降级的策略//当我们遇到熔断时 我们响应一个异常的友好结果//定义我们的熔断 var breakPolicy PolicyHttpResponseMessage.HandleHttpRequestException().AdvancedCircuitBreakerAsync(//百分之八十的服务出错进行熔断failureThreshold: 0.8, //10秒以内 请求出错比例0.8 进行熔断 samplingDuration: TimeSpan.FromSeconds(10), //最小的吞吐量100 //当我们请求量比较小的时候比如说我们十秒采样范围内 //当我们的请求数超过00个时才会进行熔断 //当请求量比较小的时候是不需要熔断 minimumThroughput: 100, //熔断的时长 20秒 durationOfBreak: TimeSpan.FromSeconds(20), //当我们熔断时触发的一个事件 onBreak: (r, t) { }, //当我们熔断恢复时的事件onReset: () { }, //在我们恢复之前进行验证服务是否可用 //打一部分的流量去验证我们的服务是否可用的事件 onHalfOpen: () { } ); //定义返回结果 var message2 new HttpResponseMessage() { Content new StringContent({\IsError\:true,\ErrorMsg\:\服务异常\}) }; };//定义降级策略 var fallback PolicyHttpResponseMessage.HandleBrokenCircuitException().FallbackAsync(message2);//定义重试 var retry PolicyHttpResponseMessage. HandleException(). WaitAndRetryAsync(3, i TimeSpan.FromSeconds(1)); //定义请求策略组合 var fallbackBreak Policy.WrapAsync(fallback, retry, breakPolicy); //注入HttpClient定义策略 services.AddHttpClient(myClient5). AddPolicyHandler(fallbackBreak); }} 限流策略public void ConfigureServices(IServiceCollection services) {//限流//定义请求的并发是多少var bulk Policy.BulkheadAsyncHttpResponseMessage(  //最大请求并发数    maxParallelization: 30,// 当我们请求超过30的并发数时// 剩下的请求怎么处理的问题// 如果我们不定义我们的队列数// 它就会抛出异常// 如果定义了队列数// 可以有20个请求在队列里排队// 只有超出队列的请求才会抛出异常// 让多出来的请求不至于直接报错maxQueuingActions: 20,//当我们的请求超出了并发数时怎么处理 这里可以定义自己的规则    onBulkheadRejectedAsync: context Task.CompletedTask);var message3 new HttpResponseMessage(){Content new StringContent({})};//定义超出并发数策略 var fallback2 PolicyHttpResponseMessage.HandleBulkheadRejectedException().FallbackAsync(message3);//定义限流组合策略var fallbackBulk Policy.WrapAsync(fallback2, bulk);//注入HttpClient定义策略 services.AddHttpClient(myClient6).AddPolicyHandler(fallbackBulk);} } 参考地址:http://www.thepollyproject.org https://github.com/App-vNext/Polly.git https://github.com/App-vNext/Polly.Extensions.Http.git https://github.com/App-vNext/Polly-Samples.git
http://www.zqtcl.cn/news/256715/

相关文章:

  • 张家口网站建设公司柒零叁网站建设湖南长沙
  • 网站建设合同或方案书手机链接ppt在哪个网站做
  • 宁波专业做网站免费网站模板大全
  • 高站网站建设平台设计标准
  • api网站模板wordpress 函数api文件
  • 泉州哪个公司网站做的好百度反馈中心
  • 宽屏蓝色企业网站源码软件工程师英文
  • 中企动力网站建设公司网站的设计路线
  • 宠物网站制作内容正规货源网站大全
  • 网站建设pc端软件公司简介
  • 科技公司企业网站源码如何免费建购物网站
  • 用动物做网站名甘肃省城乡建设网站
  • 重庆网站制作长沙榆林网站建设
  • 加快政务公开网站建设在中企动力工作的感受
  • 佛山网站搜索排名宿迁新站seo
  • 上海免费网站建设公司南通高端网站
  • 网站被镜像 站长学院那个网站都有做莱的图片
  • 个人简历 网站开发做同城网站需要哪些手续
  • 建网站的公司南京网站权重是什么
  • 网站建设策略百度云域名没有备案怎么做网站
  • 档案网站建设图片网站名查找
  • 九亭镇村镇建设办官方网站好看的网站设计公司
  • 怎样建立门户网站怎么用wordpress模板
  • 潍坊专业建站wordpress建个人博客
  • 手把手网站开发网站建设违法行为
  • 网站模板插件做网站要审批吗
  • 建立网站如何盈利有哪些做室内设计好用的网站有哪些
  • 商城网站设计服务商网站开发时的闭包写法
  • 福建永安建设局网站如何在百度免费发布广告
  • 网站建设要用到哪些应用工具国际新闻最新消息今天2024年