.NET CORT 进阶二

一、熔断与降级

服务熔断:类似于保险丝,当服务出现不可用或响应超时,防止整个系统出现大面积奔溃,暂时停止对该服务的调用

服务降级:从整个系统的负荷情况出发考虑,出现负荷过载,响应慢的情况,在其内部暂时舍弃一些非核心的接口和数据请求,返回一个提前准备好的fallback错误处理信息,虽然提供了一个有损的服务单保证了整个系统的稳定性和可用性

熔断与降级比较:

相同点:目标一致,都是从可用性和可靠性出发的,防止系统奔溃,让用户体验到的是某些功能暂时不可用

不同点:触发原因不同,服务熔断由某个服务故障引起,而服务降级一般是从整体负荷考虑

Polly概述:.net 弹性和瞬态故障处理,允许开发人员以流畅和线程安全的方式表达策略,如重试、断路器、超时、隔离和回退策略,它的处理策略具有多样性和灵活性,它的各种策略可以灵活的定义和组合

Polly的应用创建:通过策略处理错误,执行委托引发特定异常或返回结果,当发生请求异常或网络错误时,就重试三次,

获取异常:

satic void Main(string[] args){
 Policy.Handle<ArgumentException>()//故障
.Fallback( ()=>{

    Console.WriteLine("程序执行出错");
},
ex=>{
 Console.WriteLine("错误信息:"+ex);

}
).Execute(()=>{
    Console.WriteLine("开始任务");
   throw new ArgumentException("Hello world!");
});

}

Execute返回值,只要使用Policy<T>类就可以获取返回值

static void Main(string[] args){
 Policy<string>policy=Policy<string>
.Handle<Exception>()//故障
.Fallback(()=>{
  Console.WriteLine("执行出错");
  return "降级的值";
});
string value=policy.Execute(()=>{
 Console.WriteLine("开始任务");
Console.WriteLine("完成任务")
return "正常的值";
});
Console.WriteLine("返回值:"+value);
}

FallBack的重载方法最多,有的异常可以直接提供降级的后值,在异常中可以通过Lambda表达式对异常进行判断,既满足特定条件的异常,程序才会处理,又可以处理多个异常或处理不同类型的异常。还可以处理多个异常或处理不同类型的异常,还可以使用HandleResult的返回值进行故障判断

Polly策略应用

七种恢复策略:重试策略;断路器;超时;隔板隔离;缓存;回退;重试策略

Policy计数的范围是Policy对象的作用域,如果需要对整个服务器的所有代码做短路保护,需要共用一个Policy对象

策略包装:目的在于可以同时执行多个策略

二、面向切面编程

AOP:面向切面编程,动态的将代码切入到类的指定方法,指定位置上的编程思想,遵循.net  core的模型开发理念,可以更容易构建低耦合,易扩展的web应用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值