
1) 【一句话结论】在微服务架构下,通过服务注册发现(如Nacos)实现动态实例发现,结合负载均衡(如Ribbon/Nginx)分发请求,并引入熔断降级(如Hystrix)处理故障,可有效提升服务间通信的可靠性、可扩展性,避免单点故障和雪崩效应,保障系统整体稳定性。
2) 【原理/概念讲解】老师讲解:
3) 【对比与适用场景】
| 机制 | 定义 | 核心特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 服务注册发现 | 微服务启动时向注册中心注册,其他服务通过注册中心获取实例列表 | 动态、实时更新,支持多实例 | 服务间调用时获取目标服务实例 | 需高可用注册中心,避免单点故障 |
| 熔断降级 | 服务调用失败率/超时率超阈值时,暂时停止调用 | 防止故障扩散,保护系统 | 高风险服务调用(如支付、库存) | 阈值设置需合理,避免误触发或未触发 |
| 负载均衡 | 将请求分发到多个服务实例 | 均衡负载,提高吞吐量 | 高并发场景,多实例部署 | 策略选择(轮询、随机、权重)需匹配业务 |
4) 【示例】
假设快手业务中,用户服务(UserService)调用订单服务(OrderService)获取用户订单信息。流程:
伪代码(客户端调用):
List<ServiceInstance> instances = discoveryClient.getInstances("order-service");
ServiceInstance instance = loadBalancer.select(instances);
String result = restTemplate.getForObject("http://" + instance.getHost() + ":" + instance.getPort() + "/order", String.class);
5) 【面试口播版答案】(约90秒)
“面试官您好,在微服务架构下,服务间通信主要通过服务注册发现、熔断降级、负载均衡等机制实现。首先,服务注册发现,我们用Nacos作为注册中心,每个服务启动时向Nacos注册自身信息,其他服务调用时通过Nacos获取实例列表,实现动态发现,比如用户服务调用订单服务时,先从Nacos获取实例,避免手动配置。然后是负载均衡,通过Ribbon或Nginx将请求分发到多个实例,比如订单服务部署3个实例,请求轮询分配,确保负载均衡。接着是熔断降级,用Hystrix,当订单服务调用库存服务时,若库存服务超时或错误率超过阈值(如5%),熔断器触发,暂时停止调用,避免雪崩。这些机制结合使用,提升系统可扩展性和稳定性。”
6) 【追问清单】
7) 【常见坑/雷区】