sping boot and spring cloud区别(面试问题)

sping boot and spring cloud区别(面试问题)

spring boot 我理解就是对springmvc的一个升级,按照约定大约配置的理念,对ssm项目进行简化。比如对spring的配置进行简化,省掉xml,只保留属性文件,从而实现几乎零配置。同时对spring 需要的jar 也进行了整合,解决jar冲突的问题。提供了spring-boot-starter-parent的整合工具包。集成了他以后,项目中大部分jar包就不需要再引用了。内置了Tomcat插件,可以直接用main方法运行;
spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE(伦敦地铁站命名)

spring_cloud是基于spring_boot的微服务分布式架构,它将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,形成各种springboot微服务,然后这些微服务共同组成了springcloud微服务架构:前段时间,看官方网站已经有20多个子项目。我比较熟悉的微服务组件主要有:

1、 服务注册中心:Eureka Server(相当于dubbo的zookeeper,提供了服务的存储和展示管理等功能),搭建非常简单,只需引入依赖,在启动类上加上@EnableEurekaServer注解就可以实现;
也可以使用zookeeper或者consul实现;
EurekaServer基于cap(c一致性,a高可用、p容错性不能全部保证)定理的ap原理;
zookeeper基于cap(c一致性,a高可用、p容错性不能全部保证)定理的Cp原理;
consul是Eureka的替代,Eureka2.0版本不在开源,很多人选择了consul,据说是支持ca原理;

Eureka心跳机制
在应用启动后,节点们将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka自我保护机制:
自我保护机制的工作机制是如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,不会移除节点

eureka在某一瞬间全部挂掉,消费端还能调到服务吗?:
可以的,eureka只是给调用端提供一个可以提供该服务的列表。然后客户端自己去负载决定调用哪一个;这个列表客户端会缓存。所以可以调到。就是这个列表无法及时更新了
2、 服务生成者:服务生产者可以用@EnableEurekaClient或者@EnablediscoveryClient实现;
当注册中心Eureka时,两者都可用,但是当注册中心不是Eureka时,只能用@EnablediscoveryClient

3、服务消费端:可以用ribbon或者feign实现;
ribbon 实现了负载均衡,在高可用的情况下服务会部署多个,达到高并发高可用目的。默认是按照轮询的方式去为服务分配请求。由于springcloud微服务都是通过httpclient发布服务,所以这里调用需要通过RestTemplate模板进行调用;不是很方便。于是有了第二个服务消费端Feign,Feign是对ribbon的封装,模仿dubbo的RPC调用方式,通过注解就可以实现对服务端的调用,使用起来,感觉和在1个项目里调用本地方法没多大区别,比较方便。

4、熔断器Hystrix:feign里边还集成了熔断器,他的原理是:
当A 服务调用B服务时,如果正常调用,熔断器默认处于关闭状态,不起作用。但如果B服务发生异常,调用失败,连着几次调用失败后,熔断器就会自动开启,对B服务降级处理,接下来的请求,就不会再去调用B,而是由A直接通过fallback里边的方法响应用户,保证A服务器不会线程阻塞,从而发生连带宕机。
过一段时间后,熔断器回自动变为“半开状态”,这是如果再来请求,熔断器就会放1-2个请求去调用B,如果调用成功,熔断器关闭,放行所有请求,如果调用还是失败,再次变为“开启状态”,拒绝其他请求调用B;这就是熔断器;

5、路由网关zuul
Zuul的主要功能是路由转发、负载均衡和拦截过滤
在启动类上通过@EnableZuulProxy开启;
负载均衡基于ribbion;zuul中默认集成了ribbion
拦截过滤通过zuulfilter过滤器实现;
另外zuul还可以公共组件ralelimit实现限流功能
Spring Cloud Gateway是Spring Cloud大家族的一个新进成员,在Spring Cloud 2.0之后用于取代非官方的Zuul。Getaway基于Spring 5.0与SpringCloud的F版本开发

5、Springcloud config统一配置;通过这个统一配置,可以把各个微服务的properties或yml属性文件,统一放在远程服务器git上统一进行管理

6、消息总线组件SpringCloudBus:就是对消息队列的一种封装,通过SpringCloudBus我们可以实现服务直接的异步通信。项目中,可以通过这种异步通信机制,帮我们实现配置文件的热部署(也就是,在远程git上修改了配置文件以后,bus自动帮我们把文件的修改同步到运行环境中)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值