主题切换
springcloud 组件
一、基础概念补充
1. 什么是微服务?
微服务是一种架构风格,它将传统的单体应用拆分为多个独立、松耦合的小型服务。每个服务运行在自己的进程中,通过轻量级机制(如HTTP/REST)通信,可独立开发、部署和扩展。
2. SpringCloud干嘛的?
SpringCloud是一套基于SpringBoot的微服务解决方案框架,提供了微服务架构所需的服务注册发现、配置中心、负载均衡、远程调用、服务熔断、网关等组件,帮助开发者快速搭建分布式微服务系统,解决服务治理、容错、监控等核心问题。
二、传统SpringCloud 5大核心组件
| 组件 | 作用 |
|---|---|
| Eureka | 注册中心,实现服务的注册与发现,服务提供者注册服务,服务消费者发现并调用服务 |
| Ribbon | 客户端负载均衡组件,在服务调用时提供负载均衡算法(轮询、随机、权重等) |
| Feign | 声明式远程调用组件,基于Ribbon封装,简化服务间HTTP调用,支持接口式调用 |
| Hystrix | 服务熔断与降级组件,防止服务雪崩,当依赖服务故障时快速失败或降级处理 |
| Zuul/Gateway | API网关,统一请求入口,负责路由转发、负载均衡、权限校验、限流等 |
三、SpringCloudAlibaba常用组件
随着SpringCloudAlibaba的兴起,国内项目更多使用以下组件:
| 组件 | 对应功能 | 说明 |
|---|---|---|
| Nacos | 注册中心+配置中心 | 同时实现服务注册发现和配置管理,支持动态配置刷新 |
| Ribbon | 负载均衡 | 客户端负载均衡,与Nacos集成 |
| Feign | 远程调用 | 声明式服务调用,简化服务间通信 |
| Sentinel | 服务保护 | 替代Hystrix,提供服务熔断、限流、流量控制功能 |
| Gateway | 服务网关 | 统一请求入口,实现路由、过滤、限流等功能 |
四、组件协同工作流程
- 服务注册:所有微服务启动后,向注册中心(Eureka/Nacos)注册自身信息;
- 请求进入网关:客户端请求发送到Gateway网关;
- 路由转发:网关根据请求路径转发到目标服务;
- 负载均衡:服务消费者通过Ribbon实现负载均衡,调用目标服务实例;
- 远程调用:通过Feign发起声明式远程调用;
- 服务保护:Sentinel/Hystrix监控服务状态,故障时触发熔断降级。
面试相关问题
问:SpringCloud的核心组件有哪些?各自的作用是什么?答: 传统SpringCloud核心组件包括:
- Eureka:服务注册与发现;
- Ribbon:客户端负载均衡;
- Feign:声明式远程调用;
- Hystrix:服务熔断与降级;
- Zuul/Gateway:API网关,统一请求入口。
问:SpringCloudAlibaba和传统SpringCloud的区别是什么?答: SpringCloudAlibaba是阿里推出的微服务解决方案,核心区别在于组件替换:用Nacos替代Eureka作为注册/配置中心,用Sentinel替代Hystrix实现服务保护,功能更全面,在国内项目中使用更广泛。
问:什么是服务熔断?Hystrix/Sentinel的作用是什么?答: 服务熔断是防止服务雪崩的机制,当依赖服务故障时,快速失败或降级处理,避免故障扩散。Hystrix和Sentinel都是服务熔断组件,提供熔断、降级、限流功能,Sentinel还支持流量控制、热点防护等更多功能。
问:Feign和Ribbon的关系是什么?答: Feign是声明式远程调用组件,底层封装了Ribbon实现负载均衡,简化了服务间HTTP调用。