1
服务问题
系统的运行是避免不了问题的产生,而服务问题可以从如下两个角度来分析:
服务系统问题:如机器宕机、网络、机房故障,虽然这个是有问题但概率很小,在面试的时候简单提即可。
服务程序问题:如业务响应慢、大量的超时等现象,这些问题主要是因服务程序在执行中因压力、负载过大而导致无法快速处理业务,产生的问题,但在微服务下也不排除是某一个服务因系服务程序异常而停止服务的情况导致的问题。
2
限流
限流在系统业务中大家听到的话题是最多的,无论是否为微服务项目基本上都会或多或少的谈论这个话题,特别在面试中如何应对高并发场景的问题。
限流要解决的问题主要是:
系统在对外提供服务的时候,在一定时间范围内它只能承受一定量的访问压力,可如果超过这个访问量则系统就会存在问题,比如一些请求就出现超时问题。
此时在系统服务中设置限流机制,只允许能够承受的访问量的请求进入,而超出的则采取提示稍后再试。
限流的实现方式:在业界中的限流方式有
基于nginx实现限流;
服务端采用令牌桶、漏斗等算法限流;
3
熔断
熔断是一种思想保护机制,在生活中的例子就如保险丝,当电器存在短路或者电流不稳时,保险丝自动的断开保护电器。
在微服务中亦是如此,当服务A需要服务B中的接口,但因服务B的接口响应慢或存在错误,导致服务A的任务会卡在对B服务调度的业务中,从而影响到A服务中的其他功能。这时我们就可以用到熔断机制熔断A与B的连接,当涉及到服务A请求服务B的请求的时候就会直接返回错误。
这里需要注意熔断的两个关键点:
开启熔断
在固定时间窗口内,接口调用超时比率达到一个阈值,会开启熔断。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的默认方法,达到服务降级的效果。
熔断恢复
熔断不可能是永久的。当经过了规定时间之后,服务将从熔断状态回复过来,再次接受调用方的远程调用。
4
降级
降级如其字面意思一样降低级别,而在系统服务中的降级也可以这么理解,在上一节点的内容中已经提到如果服务存在异常会被熔断直接返回出错误,那么思考一下针对这种情况有没有更好地处理方式呢,而不是直接就返回错误。
从程序的执行角度来说,如果流程中存在错误则会终止程序的执行,因此此时就可能用户请求都是错误的可能。为了解决这个问题,在业界中采用降级来优雅的处理,服务存在问题的情况。