Spring Cloud
构建在Spring Boot基础上,用于快速构建分布式系统的工具集
Spring Cloud核心功能
- 分布式配置管理
- 服务注册与发现
- 路由
- 端到端的调用
- 负载均衡
- 断路器
- 全局锁
- 选举和集群管理
- 分布式消息
Spring Cloud组件
- 注册器:Eureka,Nacos、Zookeeper
- 熔断器:Hystrix、Sentinel
- 网关:Zuul、Spring Cloud Gateway
- 负载均衡:Ribbon、Dubbo、Spring Cloud Load Balancer
Spring Cloud 和 Spring Boot
- Spring Boot:微服务个体
- Spring Cloud:全局治理框架
微服务优缺点
-
服务内聚
-
开发效率高,一个服务一个任务
-
松耦合
-
面向接口编程
-
易于第三方集成
-
前后分离
-
运维压力大
-
部署依赖多
-
通信成本高
-
数据一致性
Feign 和 Ribbon 的区别
Ribbon要自己构建HTTP请求,Feign不用
Eureka,Ribbon,Feign整合
- 用户调用Feign创建动态代理
- Feign调用Ribbon发起调用流程
- Ribbon从Eureka获取服务列表
- 使用负载均衡算法获取使用的服务器
- 最后,Ribbon调用Feign,Feign调用HTTP库最终使用的服务
断路器
微服务里服务和服务互相调用,集群部署的服务,不能保证100%可用,单个服务器出问题就可能网络延迟,一个服务延迟导致和他相关的服务都处在等待状态,导致整个服务瘫痪,甚至造成雪崩。为了解决这个问题,出现了断路器
保护系统,控制故障的范围,避免引起雪球效应
隔离系统服务和第三方库
熔断降级
相同点:
防止系统崩溃
用户体验类似,最终都让用户体验到的是某些功能暂时不可用
不同点:
触发原因不同 熔断一般是某个下游服务故障引起,而降级是从整体负荷考虑
网关
动态路由
限流熔断
负载均衡
反向代理