一、概念:
简单来说,Spring Cloud是一个微服务框架的规范,注意,只是规范,他不是任何具体的框架。所以说SpringCloud是各个微服务架构落地技术的集合体,俗称微服务全家桶。springcloud是一种微服务生态。
二、SpringCloud五大组件:
1、服务注册与发现——Netflix Eureka
2、负载均衡:
客户端负载均衡——Netflix Ribbon
服务端负载均衡:——Feign(其也是依赖于Ribbon,只是将调用方式RestTemplete 更改成 Service 接口)
3、断路器——Netflix Hystrix
4、服务网关——Netflix Zuul
5、分布式配置——Spring Cloud Config
三、什么是服务雪崩、熔断和降级:
1、服务雪崩:
(1)概念
在微服务之间进行服务调用时由于某一个服务故障,导致级联服务故障的现象,称为雪崩效应。雪崩效应描述的是提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。
(2)原因
假如存在以下调用链路:ServiceA调用serviceB,serviceB调用ServiceC
ServiceA的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算ServiceA能扛得住请求,ServiceB和ServiceC未必能扛得住这突发的请求。如果此时ServiceC因为抗不住请求,变得不可用。那么Service B的请求也会阻塞,慢慢耗尽ServiceB的线程资源,ServiceB就会变得不可用。紧接着,ServiceA也会不可用
服务雪崩出现的根本原因:在调用链路中某一服务因为执行业务时间过长、或者是大规模出现异常导致自身服务不可用并把这种不可用放大的情况
线程资源耗尽是怎么回事呢?我们知道springboot是内嵌tomcat的,tomcat替我们处理请求都是一个个的线程。这个线程的多少不是无上线的而是跟操作系统有关。所以tomcat默认的线程数是150个。当大批量的请求瞬间涌进来,但是服务处理能力跟不上就会耗尽线程资源
2、服务熔断:
(1)概念
“熔断器”本身是一种开关装置,通过断路器(Hystrix)的故障监控,当某个异常条件被触发时直接熔断整个服务。向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,就保证了服务调用方的线程不会被长时间占用,避免故障在分布式系统中蔓延,乃至雪崩。
如果目标服务情况好转则恢复调用。服务熔断是解决服务雪崩的重要手段。
(2)熔断过程
3、服务降级
(1)概念
服务压力剧增的时候根据当前的业务情况及流量对一些服务和页面有策略的降级,以此缓解服务器的压力,以保证核心任务的进行。同时保证部分甚至大部分任务客户能得到正确的响应。也就是当前的请求处理不了了或者出错了,给一个默认的返回。
也就是说:关闭微服务系统中某些边缘服务以保证系统核心服务正常运行
四、Spring Cloud和Spring Boot的关系
(1)SpringBoot专注于开发,方便的开发单个个体微服务;
(2)SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务;
(3)SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系;
(4)SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架;
五、Spring Cloud和Dubbo的关系
(1)Dubbo是基于RPC调用的,而Spring Cloud是基于HTTP的REST方式,所以效率上是Dubbo更快。
(2)Dubbo的组件不是很齐全,他的很多功能比如服务注册与发现你需要借助于类似Zookeeper等组件才能实现,而Spring Cloud则是提供了一站式解决方案。
注:
- 熔断必会触发降级,所以熔断也是降级一种,区别在于熔断是对调用链路的保护,而降级是对系统过载的一种保护处理;