面试题答案
一键面试- 熔断(Circuit Breaker)
- 策略说明:熔断机制就像电路中的保险丝,当某个微服务调用失败次数达到一定阈值(例如短时间内多次调用超时或返回错误),熔断器就会“熔断”。在熔断状态下,后续对该微服务的调用不再实际发起,而是直接返回一个预设的 fallback 响应,避免大量无效的请求堆积,消耗系统资源。
- 可用性保障:防止因单个微服务的故障导致整个系统级联故障。比如在电商系统中,若商品库存微服务出现故障,频繁调用它可能拖垮调用方服务,而熔断后调用方可以快速返回友好提示给用户,保证自身业务流程能继续进行部分操作,维持一定可用性。
- 降级(Degradation)
- 策略说明:当系统整体资源紧张(如高并发导致服务器负载过高)或某个微服务出现故障时,主动降低一些非核心业务的服务质量或暂时停止非核心服务。例如减少一些实时性要求不高的数据更新频率,或者关闭某些对系统整体运行影响较小的功能模块。
- 可用性保障:优先保障核心业务的可用性。例如在双 11 等电商大促时,为保证订单处理、支付等核心流程顺畅,暂时关闭一些如用户个性化推荐等非核心功能,把系统资源集中到关键业务上,确保主要业务能正常运转,满足用户最基本的需求。
- 限流(Rate Limiting)
- 策略说明:通过限制单位时间内对某个微服务的请求数量,来防止因请求过多而导致服务过载。可以基于 IP 地址、用户标识等维度进行限流,常见的算法有令牌桶算法和漏桶算法。令牌桶算法中,系统以固定速率生成令牌放入桶中,每个请求获取令牌才能通过,若桶中无令牌则请求被限流;漏桶算法则像一个底部有洞的桶,请求像水一样流入,以固定速率流出,多余的请求会被丢弃。
- 可用性保障:确保微服务不会因为瞬间的高并发请求而崩溃。例如在秒杀活动中,对商品详情微服务进行限流,避免大量用户同时请求该服务导致服务瘫痪,保证一定数量的用户能够正常获取商品信息,维持系统的基本可用。
- 重试(Retry)
- 策略说明:当微服务调用出现故障(如网络波动导致的短暂失败)时,在一定条件下自动重新发起调用。可以设置重试次数、重试间隔时间等参数。例如,第一次调用失败后,等待 1 秒重试,若再次失败,等待 2 秒后再重试,依此递增等待时间(即指数退避策略),直到达到最大重试次数。
- 可用性保障:对于一些短暂性的故障,通过重试有可能使调用成功,从而保障业务流程继续执行。比如在调用支付微服务时,因网络抖动支付请求未成功返回,通过重试机制,可能在后续重试中成功完成支付,维持支付业务的可用性。