面试题答案
一键面试常用实现服务间可靠通信的方式及Spring Cloud对应组件作用
- 负载均衡
- 方式:将客户端请求分摊到多个服务实例上,避免单个实例压力过大,提高系统整体性能和可用性。
- Spring Cloud组件 - Ribbon:Ribbon是一个客户端负载均衡器。它在客户端集成,从服务注册中心获取服务实例列表,通过内置的负载均衡算法(如轮询、随机等),在调用服务时选择合适的实例。例如,当一个服务有多个实例时,Ribbon可以根据配置的算法,每次请求轮流选择不同实例,实现负载均衡。
- 容错机制
- 方式:在服务调用出现故障时,提供相应的处理策略,防止故障扩散,保证系统的稳定性。
- Spring Cloud组件 - Hystrix:Hystrix实现了断路器模式。当对某个服务的调用失败次数达到一定阈值,断路器会跳闸,后续请求不再实际调用该服务,而是直接返回一个预设的 fallback 响应,避免长时间等待无效响应,防止级联故障。同时,Hystrix还提供了资源隔离机制,通过线程池或信号量限制对某个服务的并发请求数,确保其他服务不受影响。
- 服务熔断
- 方式:与容错机制相关,当某个服务出现高频率故障时,暂时切断对该服务的调用,避免大量无效请求。
- Spring Cloud组件 - Hystrix:如上述,Hystrix实现了服务熔断功能。断路器根据请求失败率等指标判断是否熔断服务,熔断后会定期尝试半开状态,若请求成功则关闭断路器恢复正常调用,若仍失败则保持熔断状态。
- 服务降级
- 方式:当系统资源紧张或某个服务不可用时,暂时降低服务的功能或性能,保证核心功能可用。
- Spring Cloud组件 - Hystrix:Hystrix通过 fallback 机制实现服务降级。在服务调用失败、超时或断路器跳闸等情况下,执行 fallback 逻辑,返回一个简单的、降级后的响应,例如返回静态数据或提示信息,而不是执行完整的服务逻辑。
- 重试机制
- 方式:在服务调用失败时,自动尝试重新调用,提高成功的可能性。
- Spring Cloud组件 - Ribbon:Ribbon可以配置重试策略,当一次请求失败后,按照设定的重试次数和重试间隔,再次尝试调用其他服务实例,以增加请求成功的机会。例如,在网络抖动导致请求短暂失败时,通过重试可能使请求成功。