ARTS | Content |
---|---|
Algorithm | Stack、Heap、Queue |
Review | 如何使用好超时控制? |
Tip/Techni | hystrix-go |
Share | 熔断器理解实现 |
ARTS是什么?
- Algorithm:每周至少做一个leetcode的算法题;
- Review:阅读并点评至少一篇英文技术文章;
- Tip/Techni:学习至少一个技术技巧;
- Share:分享一篇有观点和思考的技术文章;
Algorithm
Review
Context Deadlines and How to Set Them
文章要点
- 什么是Timeout
- Timeout的作用,以及在微服务中的分析
- 如何设置一个合适的Timeout
- 在Go中的使用及代码示例
个人理解
调用超时后,服务一般有以下行为:
- Return Error
- Return fallback
- Retry
如何设置一个合理的超时时间:
如图,一个不合理的超时时间会导致计算资源泄露,由于从B到A的调用超时,A(或A的客户端)可能会重试,导致B上的负载增加。这反过来导致C上的负载增加,最终所有服务都将停止响应。这就是常见的级联故障。
一个合格的超时时间应该根据服务提供方所提供的SLA(service-level agreements)来设定。
Tip/Techni
一个优秀的熔断器实现(go): hystrix-go
hystrix-go旨在帮助Gopher轻松构建一个具有基于Java的Hystrix库的类似执行语义的应用程序。