Skip to content

springcloud 组件

一、基础概念补充

1. 什么是微服务?

微服务是一种架构风格,它将传统的单体应用拆分为多个独立、松耦合的小型服务。每个服务运行在自己的进程中,通过轻量级机制(如HTTP/REST)通信,可独立开发、部署和扩展。

2. SpringCloud干嘛的?

SpringCloud是一套基于SpringBoot的微服务解决方案框架,提供了微服务架构所需的服务注册发现、配置中心、负载均衡、远程调用、服务熔断、网关等组件,帮助开发者快速搭建分布式微服务系统,解决服务治理、容错、监控等核心问题。


二、传统SpringCloud 5大核心组件

组件作用
Eureka注册中心,实现服务的注册与发现,服务提供者注册服务,服务消费者发现并调用服务
Ribbon客户端负载均衡组件,在服务调用时提供负载均衡算法(轮询、随机、权重等)
Feign声明式远程调用组件,基于Ribbon封装,简化服务间HTTP调用,支持接口式调用
Hystrix服务熔断与降级组件,防止服务雪崩,当依赖服务故障时快速失败或降级处理
Zuul/GatewayAPI网关,统一请求入口,负责路由转发、负载均衡、权限校验、限流等

三、SpringCloudAlibaba常用组件

随着SpringCloudAlibaba的兴起,国内项目更多使用以下组件:

组件对应功能说明
Nacos注册中心+配置中心同时实现服务注册发现和配置管理,支持动态配置刷新
Ribbon负载均衡客户端负载均衡,与Nacos集成
Feign远程调用声明式服务调用,简化服务间通信
Sentinel服务保护替代Hystrix,提供服务熔断、限流、流量控制功能
Gateway服务网关统一请求入口,实现路由、过滤、限流等功能

四、组件协同工作流程

  1. 服务注册:所有微服务启动后,向注册中心(Eureka/Nacos)注册自身信息;
  2. 请求进入网关:客户端请求发送到Gateway网关;
  3. 路由转发:网关根据请求路径转发到目标服务;
  4. 负载均衡:服务消费者通过Ribbon实现负载均衡,调用目标服务实例;
  5. 远程调用:通过Feign发起声明式远程调用;
  6. 服务保护:Sentinel/Hystrix监控服务状态,故障时触发熔断降级。

面试相关问题

  1. 问:SpringCloud的核心组件有哪些?各自的作用是什么?答: 传统SpringCloud核心组件包括:

    • Eureka:服务注册与发现;
    • Ribbon:客户端负载均衡;
    • Feign:声明式远程调用;
    • Hystrix:服务熔断与降级;
    • Zuul/Gateway:API网关,统一请求入口。
  2. 问:SpringCloudAlibaba和传统SpringCloud的区别是什么?答: SpringCloudAlibaba是阿里推出的微服务解决方案,核心区别在于组件替换:用Nacos替代Eureka作为注册/配置中心,用Sentinel替代Hystrix实现服务保护,功能更全面,在国内项目中使用更广泛。

  3. 问:什么是服务熔断?Hystrix/Sentinel的作用是什么?答: 服务熔断是防止服务雪崩的机制,当依赖服务故障时,快速失败或降级处理,避免故障扩散。Hystrix和Sentinel都是服务熔断组件,提供熔断、降级、限流功能,Sentinel还支持流量控制、热点防护等更多功能。

  4. 问:Feign和Ribbon的关系是什么?答: Feign是声明式远程调用组件,底层封装了Ribbon实现负载均衡,简化了服务间HTTP调用。

Powered by VitePress 1.6.4 | 持续更新中