SpringCloud面试解析:Eureka、Feign、Hystrix与服务发现

版权申诉
5星 · 超过95%的资源 2 下载量 78 浏览量 更新于2024-09-12 1 收藏 1.54MB PDF 举报
"这份资料包含了2021年银盛支付公司Java中级面试的真题,主要关注SpringCloud的相关知识,包括服务注册与发现、服务调用、负载均衡、熔断降级以及API网关等功能。" 在Java开发中,SpringCloud是一个广泛使用的微服务框架,它提供了一整套解决方案来构建和管理分布式系统。本文主要围绕SpringCloud的核心组件展开,如Eureka、Ribbon、Feign、Hystrix和Zuul。 1. SpringCloud的工作原理: - Eureka作为服务注册与发现组件,服务提供者在启动时会在Eureka Server上注册自身信息,而服务消费者则可以查询Eureka Server获取服务提供者的位置。 - Ribbon是客户端负载均衡器,它允许服务消费者在发起请求时,从多个服务实例中选择一个进行调用。 - Feign是基于接口的声明式HTTP客户端,使得服务间的调用就像调用本地方法一样简单,隐藏了HTTP请求的细节。 - Hystrix提供了断路器模式,防止服务雪崩,通过独立的线程池隔离服务调用,当某个服务不可用时,Hystrix会快速失败并返回一个备选响应。 - Zuul作为API网关,它是所有客户端请求的统一入口,负责路由转发和服务过滤。 2. 发起请求的组件: 在SpringCloud中,Feign被用来简化服务间的通信,通过注解和动态代理实现HTTP请求,给开发者带来类似本地方法调用的体验。 3. 注册中心心跳间隔: 默认情况下,Eureka客户端每30秒向服务端发送一次心跳,而服务端如果90秒内未收到心跳,会将该实例标记为下线。但存在保护模式,在网络问题时,服务端不会立即注销大量客户端。 4. 消费者如何发现服务提供者: 当服务启动时,其信息会被注册到Eureka;服务消费者在调用其他服务时,会先查看本地是否有缓存的服务信息;如果没有,Ribbon会定期从Eureka刷新本地缓存。 5. 多个消费者调用同一接口的默认分配策略: - RoundRobinRule:轮询策略,每个服务实例被均匀地按顺序访问。 - RandomRule:随机选择策略,消费者随机选取一个服务实例进行调用。 - BestAvailableRule:最佳可用策略,会选择当前连接数最少的服务器,以减轻可能的负载压力。 以上内容详细介绍了SpringCloud的几个关键组件及其在实际应用中的工作方式,对于理解微服务架构和应对面试具有很高的参考价值。了解并掌握这些知识点,有助于提升在Java开发领域的专业素养,特别是在处理大型分布式系统时。