基于.NET CORE微服务框架 -谈谈surging的服务容错降级

发表于:2017-7-24 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:fanly11    来源:博客

  一、前言
  对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation 以方便国内.net core开源项目的推广,我果断接受邀请加入了队伍进行互相交流学习,最近也更新了surging新的版本
  更新内容:
  1. Castle.Core 兼容性问题,下一版本会去除,解决部分用户第一次编译VS卡死问题
  2. 增加容错降级
  3. 路由容错重构,针对于失败重试和失败没有重试,失败回调,
  4.增加部分功能单元测试
  5. 升级支持.NET CORE 2.0
  最新地址:https://github.com/dotnetcore/surging
  二、服务容错降级介绍和示例
  1.服务容错降级介绍
  对于上篇文章所提到的微服务可靠性,对于容错和降级省略没讲,这篇介绍下容错和降级
  当微服务不可用时,需要根据预置的策略做容错处理,大部分的容错能力和策略是公共的,因此可以放到框架中实现。
  服务容错
  当微服务调用失败之后,利用容错机制,可以在底层实现微服务的自动容错处理,提升系统的可靠性。
   surging容错策略包括:
   失败自动切换机制(Failover):微服务调用失败自动切换策略指的是当发生服务调用异常时,重新选路,查找下一个可用的微    服务提供者。微服务发布的时候,可以指定服务的集群容错策略。消费者可以覆盖服务提供者的通用配置,实现个性化的容错策略。
   失败回调机制(Injection):微服务调用失败之后,提供异常回调接口或者注入脚本,执行微服务消费者自定义的失败处理逻辑。
  服务降级
  服务因为某种原因不可用,但是流程不能直接失败,需要本地Injection服务端实现,比如年底购票12306大规模的访问,导致查询火车票服务不能正常工作,这时候要做业务放通,返回上次的缓存记录或者NULL,而不是返回失败。
  降级的常用策略:
   1、服务路由短路,直接返回空。例如Injection = “ return null;”。
   3、服务路由短路,直接执行本地模拟接口实现类。Injection = “ true;”。
  容错降级
  当服务不可用时,可以服务做业务逻辑放通,让服务正常运行
  自动容错降级:是根据定义的阚值自动匹配触发,调用相关的策略进行降级。
  强制降级:由运维根据系统运行情况手工操作触发的。
  2.服务容错降级示例
  创建服务容错降级,选择Injection策略脚本注入,直接返回null
[Command(Strategy= StrategyType.Injection ,Injection = @"return null;")]
  创建服务容错降级,选择Injection策略脚本注入,直接返回Task<UserModel>
  [Command(Strategy= StrategyType.Injection ,Injection = @"return
  Task.FromResult(new Surging.IModuleServices.Common.Models.UserModel
           {
              Name=""fanly"",
              Age=18
           });",InjectionNamespaces =new string[] { "Surging.IModuleServices.Common"})]
  创建服务容错降级,选择Injection策略直接本地模块调用
  [Command(Strategy= StrategyType.Injection ,Injection = @"return true;")]
   创建服务容错降级,选择Failover策略,自动切换重试远程调用
  [Command(Strategy= StrategyType.Failover )]
   配置相关参数列表
  三.测试
  测试环境
  CPU:Intel Core i7-4710MQ
  内存:16G
  硬盘:1T SSD+512G HDD
  网络:局域网
  测试结果如下:
  三、总结
  surging下一版本增加缓存降级、针对文件进行配置服务容错,降级等内容,添加单元测试。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号