Nacos
面试题:
- 请简述Nacos是什么,它主要解决了什么问题?
- Nacos提供了哪些核心功能?
- Nacos是如何支持服务发现的?
- 如何使用Nacos作为配置中心?
- Nacos的集群部署是如何实现的?
答案:
- Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它主要解决了微服务架构中的服务发现和配置管理问题。
- Nacos的核心功能包括服务发现、配置管理、动态DNS服务、服务健康检查等。
- Nacos通过注册中心和客户端SDK支持服务发现。服务提供者将服务信息注册到Nacos注册中心,服务消费者从注册中心订阅服务,并通过负载均衡策略调用服务。
- 使用Nacos作为配置中心,可以通过Nacos客户端SDK或控制台发布配置,客户端监听配置变化并实时更新本地配置。
- Nacos的集群部署可以通过多个Nacos节点组成集群,实现高可用性和数据一致性。节点之间通过Raft协议进行选举和数据同步。
Gateway
面试题:
- Spring Cloud Gateway是什么?它与其他API网关相比有何优势?
- Spring Cloud Gateway的核心功能有哪些?
- 如何使用Spring Cloud Gateway实现路由功能?
- Spring Cloud Gateway是如何处理请求的?
- 如何在Spring Cloud Gateway中实现请求过滤和限流?
答案:
- Spring Cloud Gateway是Spring Cloud生态中的一个API网关,它提供了路由、过滤、监控等核心功能。与其他API网关相比,Spring Cloud Gateway基于WebFlux实现,支持响应式编程,且易于与Spring Cloud生态集成。
- 核心功能包括路由、过滤、安全、监控等。
- 可以通过配置路由断言和路由处理器来实现路由功能,如基于路径、请求头、请求参数等进行路由。
- Spring Cloud Gateway使用WebFlux框架处理请求,通过Reactor模型实现非阻塞IO,提高性能。
- 可以通过自定义全局过滤器或路由过滤器实现请求过滤,使用Sentinel或RateLimiter等组件实现限流。
OpenFeign
面试题:
- 请解释OpenFeign是什么,它解决了什么问题?
- 如何使用OpenFeign进行远程服务调用?
- OpenFeign的负载均衡是如何实现的?
- OpenFeign支持哪些自定义配置?
- OpenFeign与Ribbon相比有何不同?
答案:
- OpenFeign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。OpenFeign解决了在微服务架构中服务调用复杂和代码冗余的问题。
- 通过在Spring Cloud项目中引入OpenFeign依赖并定义接口,使用@FeignClient注解指定服务名称,即可进行远程服务调用。
- OpenFeign的负载均衡默认使用Ribbon实现,也可以集成其他负载均衡组件如LoadBalancerClient。
- OpenFeign支持自定义配置,如请求超时时间、日志级别、解码器等。
- OpenFeign与Ribbon相比,OpenFeign提供了更高级的声明式调用方式,而Ribbon更多是基于接口的动态代理实现。此外,OpenFeign还支持Hystrix熔断降级等功能。
Sentinel
面试题:
- 请简述Sentinel是什么,它的主要作用是什么?
- Sentinel支持哪些流量控制策略?
- Sentinel如何实现熔断降级?
- Sentinel的系统自适应保护是如何工作的?
- 如何集成Sentinel到Spring Cloud项目中?
答案:
- Sentinel是阿里巴巴开源的一个流量防卫兵,它的主要作用是进行流量控制、熔断降级、系统自适应保护等功能,确保微服务的稳定性和可用性。
- Sentinel支持QPS流量控制、线程数流量控制、并发控制等流量控制策略。
- Sentinel通过熔断降级规则,当某个资源的请求达到一定阈值或满足其他条件时,触发熔断逻辑,快速失败后续请求,保护系统免受雪崩效应的影响。
- Sentinel的系统自适应保护通过负载保护因子等机制,动态调整系统阈值,实现系统的自我保护。
- 集成Sentinel到Spring Cloud项目可以通过引入Sentinel依赖,配置相关规则,并使用@SentinelResource注解标识需要进行流量控制或熔断降级的资源。