Design Microservices Architecture for Failures
这是在hacknoon看到一篇微服务的文章,里面应对异常的方案非常好,所以提取要点,总结如下。。
1、Grace Service Degredation(优雅的服务退化):
1)部分上线,观察指标;
2)prod和pre,在pre上线确认无误,上prod
注意:有问题,立即回滚是一件好事.
2、Health-check and Load Balancing
3、self-healing
注意一些资源不可用,会导致restarting失败。
4、Failover caching
可以专门设定一个故障时访问的缓存,减少不可访问时间(the outdated data better than nothing.)
5、Retry Logic
访问设定重试机制,但要注意次数,避免雪崩情况
6、Rate Limiter and Load Shedders(负载和限流)
7、Bulkheads(分隔)
比如池,可以适当划分成sections,这样能避免公用连接池,导致资源不够用时,公用所有服务都失败
8、Circuit Breakers(开关)
9、Teating for Failures(验错)
chaos monkey
这个更偏向自身实现微服务要考虑的一些要点。如果要从更系统的角度思考,需要考虑权限认证,业务流跟踪(openzipkin),错误集中收集(ELK)。