SpringCloud 是什么?
SpringCloud 是一系列框架的集合,集成 SpringBoot,提供很多优秀服务:服务发现
和注册,统一配置中心, 负载均衡,网关, 熔断器等的一个微服务治理框架.
SpringCloud 的优势?
因为 SpringCloud 源于 Spring,所以它的质量,稳定性,持续性都是可以保证的。
SpringCloiud 天热支持 SpringBoot 框架,就可以提高开发效率,能够实现需求。
SpringCloud 更新很快,后期支持很给力。
SpringCloud 可以用来开发微服务。
SpringCloud 有哪些核心组件?
Eureka: 注册中心, 服务注册和发现
Ribbon: 负载均衡, 实现服务调用的负载均衡
Hystrix: 熔断器
Feign: 远程调用
Zuul: 网关
Spring Cloud Config: 配置中心
(1)Eureka
提供服务注册和发现, 是注册中心. 有两个组件: Eureka 服务端和 Eureka 客户端
Eureka 服务端: 作为服务的注册中心, 用来提供服务注册, 支持集群部署.
Eureka 客户端: 是一个 java 客户端, 将服务注册到服务端, 同事将服务端的信息缓存
到本地, 客户端和服务端定时交互.
Eureka-Server:就是服务注册中心(可以是一个集群),对外暴露自己的地址。
提供者:启动后向 Eureka 注册自己信息(地址,服务名称等),并且定期进行服务续
约
消费者:服务调用方,会定期去 Eureka 拉取服务列表,然后使用负载均衡算法选出一
个服务进行调用。
心跳(续约):提供者定期通过 http 方式向 Eureka 刷新自己的状态
2. 服务下线、失效剔除和自我保护
服务的注册和发现都是可控制的,可以关闭也可以开启。默认都是开启
注册后需要心跳,心跳周期默认 30 秒一次,超过 90 秒没发心跳认为宕机
服务拉取默认 30 秒拉取一次.
Eureka 每个 60 秒会剔除标记为宕机的服务
Eureka 会有自我保护,当心跳失败比例超过阈值(默认 85%),那么开启自我保护,不
再剔除服务。
Eureka 高可用就是多台 Eureka 互相注册在对方上.
(2)Ribbon
Ribbon 是 Netflix 发布的云中服务开源项目. 给客户端提供负载均衡, 也就是说
Ribbon 是作用在消费者方的.
简单来说, 它是一个客户端负载均衡器, 它会自动通过某种算法去分配你要连接的机
器.
SpringCloud 认为 Ribbon 这种功能很好, 就对它进行了封装, 从而完成负载均衡.
Ribbon 默认负责均衡策略是轮询策略.
(3)Hystrix 熔断器
有时候可能是网络问题, 一些其它问题, 导致代码无法正常运行, 这是服务就挂了, 崩
溃了. 熔断器就是为了解决无法正常访问服务的时, 提供的一种解决方案.
解决因为一个服务崩溃而引起的一系列问题, 使问题只局限于这个服务中,不会影响其
他服务.
Hystrix 提供了两种功能, 一种是服务降级, 一种是服务熔断.
1. 服务降级原理
Hystrix 为每个服务分配了小的线程池, 当用户发请求过来, 会通过线程池创建线
程来执行任务, 当创建的线程池已满或者请求超时(这里和多线程线程池不一样,不
存在任务队列), 则启动服务降级功能.
降级指的请求故障时, 不会阻塞, 会返回一个友好提示(可以自定义, 例如网站维
护中请稍后重试), 也就是说不会影响其他服务的运行.