设为首页 加入收藏

TOP

Go微服务容错与韧性(Service Resilience)(五)
2019-09-26 18:14:08 】 浏览:155
Tags:服务 容错 韧性 Service Resilience
它无需编程,这样就不需要每一种语言都有一套服务韧性的库。当然Service Mesh也有不同的实现,每一种实现在设置参数时都有它自己的语法格式,理想的情况是它们都遵守统一的接口,希望以后会是这样。

什么时候需要这些技术?

上面提到的技术都不错,但不论你是用程序还是用Service Mesh来实现,都有大量的工作要做,尤其是当服务众多,并且之间的调用关系复杂时。那么你是否应该让所有的服务都具有这些功能呢?我的建议是,在开始时只给最重要的服务增加这些功能,而其他服务可以先放一放。当在生产环境运行一段时间之后,就能发现那些是经常出问题的服务,再根据问题的性质来考虑是否增加这些功能。应用本文中的修饰模式的好处是,它增加和删除修饰功能都非常容易,并且不会影响业务逻辑。

结论:

服务韧性是微服务里非常重要的一项技术,它可以在服务环境不可靠的情况下仍能提供适当的服务,大大提高了服务的容错能力。它使用的技术包括服务超时 (Timeout),服务重试 (Retry),服务限流(Rate Limiting),熔断器 (Circuit Breaker),故障注入(Fault Injection)和舱壁隔离技术(Bulkhead)。你可以用代码也可以用Service Mesh来实现这些功能,Service Mesh是将来的方向。但实现它们需要大量的工作,因此需要考虑清楚到底哪些服务真正需要它们。

源码:

完整源码的github链接

索引:

[1]Go kit
http://gokit.io/examples/stringsvc.html

[2] Circuit Breaker Pattern
https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker

[3]gobreaker
https://github.com/sony/gobreaker

[4]Bulkhead pattern
https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead

[5]How it Works
https://github.com/Netflix/Hystrix/wiki/How-it-Works

[6]It takes more than a Circuit Breaker to create a resilient application
https://developers.redhat.com/blog/2017/05/16/it-takes-more-than-a-circuit-breaker-to-create-a-resilient-application/

[7]Netflix/concurrency-limits
https://github.com/Netflix/concurrency-limits

[8]Istio
https://istio.io/

[9]Linkerd
https://linkerd.io/

[10]下一代的微服务架构基础是ServiceMesh?
https://www.sohu.com/a/271138706_355140

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[系列] go-gin-api 路由中间件 - .. 下一篇阿里云CentOS服务器下安装Golang1..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目