Polly是一个开源框架,在github上可以找到,被善友大哥收录,也是.App vNext的一员!

App vNext:https://github.com/App-vNext

GitHub:https://github.com/App-vNext/Polly

NanoFabric是一个开源的微服务架构,也是善友大哥推荐的:https://github.com/geffzhang/NanoFabric

对于NanoFabric来说,它集成了很多.net core开源项目,其中包括了Consul + .NET Core + Polly + Ocelot + Exceptionless + IdentityServer,你是否闻到了某种味道!

Polly给我们带来了什么

  1. 对http请求提供重试机制

  2. 对指定异常进行特殊的处理

  3. 提供了多种策略

程序中的使用

封装一个方法,对外提供一个委托的参数,把需要进行polly的代码段输入进来即可,对于http,数据库,网络通讯等非常必要,因为这些场景可能存在不稳定的因素!polly正好可以帮我们非常友好的解决它,下面的代码主要实现了对所有异常的跟踪,然后每1秒重新执行一次,可以重试5次!

/// <summary>

/// polly重试机制

/// </summary>

private static HttpResponseMessage retryTwoTimesPolicy(Func<HttpResponseMessage> action)

{

var policy = Policy

.Handle<Exception>()

.WaitAndRetry(

5,

retryAttempt => TimeSpan.FromSeconds(Math.Pow(1, retryAttempt)),

(ex, timer, c, i) =>

{

logger.Logger_Info($"执行失败! 重试次数 {c}");

logger.Logger_Info($"异常来自 {ex.GetType().Name}");

});

return policy.Execute(action);

}

我们之前的httpHelper请求对象,也可以引入polly机制,全局进行控制!

/// <summary>

/// GET请求

/// </summary>

/// <param name="requestUri">服务地址</param>

/// <param name="nv">参数键值</param>

/// <returns></returns>

public static HttpResponseMessage Get(

string requestUri,

NameValueCollection nv)

{

try

{

return retryTwoTimesPolicy(() =>

{

var result = httpClient.GetAsync(GeneratorUri(requestUri, nv)).Result;

UnGZip(result);

return result;

});

}

catch (Exception ex)

{

throw ex;

}

}

自己开两个api进程,一个是对外提供服务,别一个作为主服务器,被其它进行访问,当它挂了之后,其实进行可以通过polly进行重试!

感谢各位的阅读!

微服务来了,但需要我们关注的点多了!

相关文章:

  • API网关Ocelot 使用Polly 处理部分失败问题

  • 弹性和瞬态故障处理库Polly介绍

原文地址:http://www.cnblogs.com/lori/p/8387205.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

Polly组件对微服务场景的价值相关推荐

  1. CI Weekly #11 | 微服务场景下的自动化测试与持续部署

    又一周过去了,最近我们的工程师正在搞一个"大事情" --「flow.ci 配置文件」,稍微剧透一下,这个功能预计会在春节前上线.详情请大家关注 flow.ci Changelog ...

  2. 微服务场景下的数据一致性解决方案

    数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性.但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题.ServiceComb作为开源的微服务框架 ...

  3. 微服务场景下数据抽取与统计

    案例小故事 某公司的技术架构体系目前还是以集群扩展体系为主,集群扩展体系架构如图9-1所示.在这种体系结构中,可以看到应用都是单块结构,但是单块结构的应用具有扩展性,通过部署在多个Tomcat上实现应 ...

  4. 面试专题之:微服务场景

    目录 Dubbo支持哪些负载均衡策略 Dubbo是如何完成服务导出的? Dubbo是如何完成服务引入的? Dubbo的架构设计是怎样的? 各层说明 关系说明 ​ Spring Cloud有哪些常用组件 ...

  5. SpringCloud之消息总线组件及微服务网关

    消息总线组件 Spring Cloud Bus 单个工程更新 有了配置中心,我们就可以吧配置文件放到git上来统一管理了,但是如果配置文件发生了变化,客户端 又如何更新呢? 1.在配置文件中增加自定义 ...

  6. 分布式场景实战第七节 微服务场景实战

    18 如何处理好微服务之间千丝万缕的关系? 17 讲讲解了服务间数据依赖的场景,除了这种场景之外,其实我们还会碰到服务间依赖太杂乱的场景,这一讲我们将围绕这个场景进行讨论,还是先把整个场景描述一下. ...

  7. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践

    本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享. 编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云 ...

  8. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  9. springcloud微服务介绍及应用场景

    目录 1 微服务的介绍 1.1系统架构演变 1.1.1 单体应用架构 1.1.2 垂直应用架构 1.1.3 分布式架构 1.1.5 微服务架构 1.2 微服务架构介绍 1.2.1 微服务架构的常见问题 ...

最新文章

  1. AI K-means算法对数据进行聚类分析-实验报告
  2. 区块链+数字经济发展白皮书,45页pdf
  3. 企业云桌面-02-安装第2台域控制器和第2台DNS服务器-012-DC02
  4. 【转载】【Python-ML】SKlearn库谱聚类SpectralClustering模型
  5. windows密钥连接linux,windows使用密钥登录linux
  6. flowable 动态多实例
  7. Java一个小练习----String类型转换int类型
  8. UEFI和Legacy及UEFI+Legacy的区别 做系统时注意事项
  9. mac azure git_在Azure Data Studio中使用Git组件
  10. combobox is not a function 问题解决
  11. python 爬虫论_Python网络爬虫(理论篇)
  12. 著名书画家顾永泉对我诗集出版的贺词
  13. 模板题——单链表双链表,数组模拟的栈和队列,单调栈和单调队列
  14. 宏观经济学考前主观大题汇总复习
  15. python单词必背打印_为什么Python要用print打印这个单词?
  16. html语言单词背不下来,单词背不下来
  17. 如何修改微信公众号内部网页的头部标签内容
  18. 使用gb2312乱码,utf-8正常
  19. Unity局部坐标与世界坐标
  20. 【PIL】图像分割竞赛中8位深调色板模式的mask读取与保存(PASCAL VOC)

热门文章

  1. CentOS 6.9通过RPM安装EPEL源(http://dl.fedoraproject.org)
  2. [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
  3. Python: logging日志模块简单示例
  4. 第二十五章补充内容 5 不能为0的变量
  5. AutoCAD VBA基于对象的分层
  6. Prism源代码解析(IRegionManager)
  7. VS扩展CodeMaid代码整理插件
  8. 如何入门.NET Core ? 推荐这10个优秀的开源项目!
  9. .NET | 多线程下的调用上下文 : CallContext
  10. 基于单TCP连接的高吞吐模型设计