您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# SpringCloud常见面试问答题有哪些
## 一、SpringCloud基础概念
### 1. 什么是SpringCloud?
SpringCloud是一系列框架的**有序集合**,基于SpringBoot提供了一套完整的**微服务解决方案**。它整合了服务发现(Eureka)、配置中心(Config)、断路器(Hystrix)、网关(Zuul/Gateway)等组件,通过约定优于配置的方式简化分布式系统开发。
### 2. SpringCloud与Dubbo的区别?
| 对比维度 | SpringCloud | Dubbo |
|----------------|-----------------------------|---------------------|
| **服务调用方式** | RESTful API(HTTP+JSON) | RPC(基于Netty) |
| **注册中心** | Eureka/Nacos/Consul | Zookeeper/Nacos |
| **功能覆盖** | 全套微服务解决方案 | 主要专注服务治理 |
| **生态整合** | 与Spring体系无缝集成 | 需要自行整合其他组件|
### 3. SpringCloud的核心组件有哪些?
- **服务注册与发现**:Eureka/Nacos
- **客户端负载均衡**:Ribbon
- **声明式服务调用**:Feign/OpenFeign
- **服务容错保护**:Hystrix/Sentinel
- **配置中心**:SpringCloud Config/Nacos
- **API网关**:Zuul/Gateway
- **消息总线**:Bus
- **分布式事务**:Seata
## 二、服务注册与发现
### 4. Eureka的工作原理?
1. **服务注册**:服务启动时向Eureka Server注册自己的信息(IP、端口、健康状态等)
2. **心跳续约**:客户端每30秒发送一次心跳(默认),90秒未收到则剔除实例
3. **服务获取**:客户端从Server定时拉取注册表并缓存(默认30秒)
4. **自我保护机制**:当85%以上节点心跳丢失时,保护现有注册信息不删除
### 5. Eureka与Nacos的区别?
- **CAP模型**:Eureka保证AP,Nacos支持AP/CP切换
- **配置管理**:Nacos原生支持动态配置,Eureka需配合Config
- **健康检查**:Nacos支持TCP/HTTP/MYSQL等多种检查方式
- **性能对比**:Nacos的实例变更推送速度更快(长轮询 vs 定时拉取)
## 三、服务调用与负载均衡
### 6. Ribbon的负载均衡策略?
- **RoundRobinRule**:轮询(默认)
- **RandomRule**:随机选择
- **WeightedResponseTimeRule**:根据响应时间加权
- **BestAvailableRule**:选择并发请求数最小的服务器
- **ZoneAvoidanceRule**:复合判断区域和可用性(默认高级策略)
可通过配置自定义策略:
```yaml
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
@EnableFeignClients
启用Feign@FeignClient(name="service-name")
性能优化建议:
# 启用OKHttp
feign.okhttp.enabled=true
# 开启GZIP压缩
feign.compression.request.enabled=true
feign.compression.response.enabled=true
配置示例:
@HystrixCommand(
fallbackMethod = "fallbackMethod",
commandProperties = {
@HystrixProperty(name="circuitBreaker.requestVolumeThreshold", value="10"),
@HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds", value="5000")
}
)
特性 | Sentinel | Hystrix |
---|---|---|
隔离策略 | 信号量隔离(并发控制) | 线程池/信号量 |
熔断降级 | 基于响应时间、异常比例等多维指标 | 仅支持异常比例 |
实时监控 | 提供控制台实时监控 | 需依赖Hystrix Dashboard |
规则配置 | 支持动态配置立即生效 | 需重启生效 |
@RefreshScope
支持动态刷新/actuator/bus-refresh
端点批量刷新所有节点安全配置建议:
spring:
cloud:
config:
server:
git:
uri: https://git.example.com/config-repo
username: encrypted-username
password: encrypted-password
search-paths: '{application}'
spring.profiles.active
自动匹配配置典型配置示例:
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/api/users/**
filters:
- StripPrefix=1
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 10
redis-rate-limiter.burstCapacity: 20
一阶段:
二阶段提交:
二阶段回滚:
关键配置:
# 使用Seata数据源代理
spring.datasource.druid.filter.seata.enabled=true
# 关闭数据源自动代理
seata.enable-auto-data-source-proxy=false
feign.client.config.default.connectTimeout=5000
feign.client.config.default.readTimeout=30000
spring.main.web-application-type=reactive
-Xms2048m -Xmx2048m
持续学习建议:关注SpringCloud官方博客(spring.io/blog)和GitHub仓库,定期查看Release Notes了解新特性。建议通过实际项目实践掌握核心组件,并关注云原生技术(如Kubernetes、Service Mesh)与SpringCloud的整合方案。 “`
该文档共约2500字,采用Markdown格式编写,包含: 1. 9大核心模块分类 2. 17个深度技术问题解析 3. 多组对比表格和配置示例 4. 代码片段和YAML配置示例 5. 最新技术演进方向 6. 实践建议和性能优化方案
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。