springcloud
说说SpringBoot和SpringCloud的区别?
1、SpringCloud就是一个框架的整合集;
2、SpringCloud中最强的是SpringCloudAlibaba和Netflix(奈飞);
3、SpringBoot是用来快速开发Spring项目的;
4、SpringBoot和SpringCloud的关系是:由SpirngCloud将各类不同的框架整合,再由SpringBoot进行简化开发。
SpringCloud和Dubbo对比
1、SpringCloud与Dubbo都是实现微服务有效的工具;
2、Dubbo只是实现了服务治理,而SpringCloud子项目分别覆盖了微服务架构下的众多部件;
3、Dubbo使用RPC通讯协议(传输层,基于TPC协议),SpirngCloud使用RESTful完成通信
(应用层,基于HTTP协议),Dubbo效率略高于SpringCloud。
注:
RPC是TCP层(传输层)协议,底于底层协议效率更高,但功能不够丰富;
RESTful是HTTP协议(应用层),功能丰富,操作更简单,但效率相对较低。
Cloud ALibaba跟SpringCloud在使用上有什么区别?
伴随着在2018-12-12号Netflix 宣布停止开发Spring Cloud的相关服务:Ribbon、Feign、Eureka、Hystrix。因此阿里对外开源了一套用于管理springboot的微服务云框架Spring Cloud Alibaba。其采用阿里中间件作为基础,实现了 Spring Cloud 的微服务规范。
内部也有很多的组件,如通过Nacos替换Eureka,通过Nacos替换Spring Cloud Config,通过Sentinel替换Hystrix。将Dubbo 将会作为 Spring Cloud Alibaba 的 RPC 组件,并与 Spring Cloud 原生的 Feign 以及 RestTemplate 进行无缝整合。
但是由于Spring Cloud Alibaba还没有纳入到Spring Cloud的主版本管理中,所以在使用的时
候,还需要额外去引入它的依赖信息。
5大核心组件⭐
1、服务发现—Netflix Eureka
2、客服端负载均衡—Netflix Ribbon
3、断路器—Netflix Hystrix
4、服务网关—Spring Cloud Gateway
5、分布式配置—Spring Cloud Config
Eureka
Eureka是Netfilix公司公源的一个服务注册与发现的组件。
Eureka和其他Netfilix公司的服务组件(例如负载均衡、熔断器、网关等)一起被SpringCloud社区整合为Spring-Cloud-Netflix模块。
Eureka包含两个组件:EurekaServer(注册中心)和EurekaClient(服务提供者、服务消费者)。
不过Eureka目前已经停止更新了,现在一般用的是Nacos。
什么是Eureka的自我保护机制?
如果一个Eureka服务器上面注册了多个微服务,其中一个微服务器已经死机,按理说,我们Eureka服务器会把这个微服务给剔除,但是Eureka一旦开启自我保护机制(默认开启),这种死掉的机器也不会被剔除。
自我保护机制是防止微服务假死或者网络波动而导致暂时的死亡,宁可保留也不选择剔除
Ribbon?
Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具。(如果导入了Eureka的jar包,就不需要再导Ribbon的jar包)
Ribbo两大主要功能:
1、简化远程调用——通过服务名称,到服务,自动进行URL自动拼接
2、负载均衡——创建代理对象
Ribbon的负载均衡策略有哪些?
Ribbon负载均衡策略(七种):
1、随机:RandomRule
2、轮询:RoundRobinRule 【默认】
3、最小并发(访问最闲的,由Eureka判断):BestAvaliableRule
4、过滤(过滤掉并发太高,或者坏掉的):AvailabilityFilteringRule
java dubbo5、响应时间(发一个包,判断响应快慢):WeightedResponseTimeRule
6、轮询重试(再加一轮轮询):RetryRule
7、性能可用性(综合判断性能):ZoneAvoidanceRule
Feign?
Feign是一个声明式的REST客户端,它用了“基于接口”的注解方式,很方便实现客户端配置。
Feign是对Ribbon的封装,所以也可以作负载均衡本质作用还是实现两个服务之间的远程调用
使用Feign进行远程调用,不需要再去写URL。
Feign的底层就是http协议。
说说Feign和Dubbo的区别是什么?
相同点:都依赖注册中心、负载均衡。
不同点:
Dubbo:
支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。
默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。
Feign:
基于Http传输协议,短连接,不适合高并发的访问。
Hystrix
Hystrix主要用于出现级联失败(也就是雪崩),也就是防止一个失败而导致的一连串的失败(区分“缓存雪崩”,两者不同)。
Hystrix在微服务的外面进行保护,主要功能有:
隔离
线程池隔离(操作线程):总线程池针对不同的服务,各自分配一定数量的线程数,从而防止一个服务失败,占用所有线程。
信号量隔离(操作变量):设置不同服务的线程阈(yu)值,达到阈值则不再给该服务分配线程,理由如上。
降级:服务失败后,失败的服务方执行降级方案,并回一个失败信息。调用方收到信息后,设置对失败服务调用的降级方案。(两头都会进行设置,降级方案见下)
熔断:如果服务一直失败,调用方会进行熔断,拒绝所有调用失败服务的请求;如果失败的服务恢复了,调用方又会自动重新连接上服务。