MST

星途 面试题库

面试题:Spring Cloud微服务架构持续部署的高可用与容错机制

在Spring Cloud微服务架构的持续部署过程中,如何确保服务的高可用性和容错性?请详细说明在部署过程中,从服务注册与发现、负载均衡到熔断机制、降级策略等方面,你会采取哪些措施来保障系统的稳定性,以及如何通过配置和代码实现这些机制。
36.8万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

服务注册与发现

  1. 措施:使用Eureka、Consul等服务注册中心。服务实例启动时向注册中心注册自身信息,其他服务通过注册中心获取可用服务实例列表。
  2. 配置实现:以Eureka为例,在服务端,引入Eureka Server依赖,在配置文件(如application.yml)中配置Eureka Server相关属性,如端口、注册地址等。在客户端,引入Eureka Client依赖,配置文件中指定Eureka Server地址,开启服务注册与发现功能。
  3. 代码实现:在Spring Boot应用的主类上添加@EnableEurekaServer(服务端)或@EnableEurekaClient(客户端)注解。

负载均衡

  1. 措施:采用Ribbon或Feign等负载均衡组件。Ribbon是客户端负载均衡器,Feign内置了Ribbon。它们会从服务注册中心获取服务实例列表,并根据负载均衡策略选择一个实例进行调用。
  2. 配置实现:在配置文件中可配置负载均衡策略,如ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule(使用随机策略)。对于Feign,只需引入依赖并进行简单配置即可使用负载均衡功能。
  3. 代码实现:在使用RestTemplate调用服务时,通过@LoadBalanced注解开启负载均衡,例如@Bean @LoadBalanced RestTemplate restTemplate()。在Feign客户端接口定义中,直接使用注解定义服务调用方法,如@FeignClient(name = "service - name") public interface MyFeignClient { }

熔断机制

  1. 措施:引入Hystrix组件。当某个服务调用失败次数达到一定阈值,Hystrix会熔断该服务调用,避免级联故障。
  2. 配置实现:引入Hystrix依赖,在配置文件中设置熔断相关参数,如hystrix.command.default.circuitBreaker.requestVolumeThreshold=20(20次请求内失败次数达到一定比例就熔断)。
  3. 代码实现:在需要熔断的服务调用方法上添加@HystrixCommand注解,并指定熔断后的降级方法,如@HystrixCommand(fallbackMethod = "fallbackMethod") public String callService() { } public String fallbackMethod() { }

降级策略

  1. 措施:在服务不可用或出现异常时,返回兜底数据或执行简单逻辑,保证系统基本功能可用。
  2. 配置实现:通过Hystrix配置文件设置降级相关参数,如hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=10(设置信号量隔离的最大并发请求数)。
  3. 代码实现:与熔断机制代码实现类似,在@HystrixCommand注解中指定降级方法,在降级方法中编写兜底逻辑,如返回静态数据或执行简单计算。