springboot、springCloud的面试题。

  • 什么是springboot
    • springboot常用的starter有哪些
    • springboot自动配置的原理
    • springboot读取配置文件的方式
    • springboot集成mybatis的过程
    • springboot如何添加【修改代码】自动重启功能
    • 插入链接与图片
    • springcloud如何实现服务的注册和发现
    • Ribbon和Feign的区别
    • SpringCloud断路器的作用
      • 如何使用springboot部署到不同的服务器
      • JPA和Hibernate有哪些区别
    • 什么是spring cloud
    • Zookeeper是什么框架
    • Spring Cloud 与 Dubbo 区别
    • Spring Cloud 与 Spring boot区别

什么是springboot

用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(propertites或yml文件)

                        创建独立的spring引用程序main方法运行

                        嵌入的tomcat无需部署war文件

                        简化maven配置

                        自动配置spring      添加对应功能starter自动化配置

springboot常用的starter有哪些

spring-boot-starter-web嵌入tomcat和webkaifa需要servlet与jsp支持

     spring-boot-starter-data-jpa数据库支持

     spring-boot-starter-data-redis数据库支持

     spring-boot-starter-data-solr solr支持

     mybatis-spring-boot-starter第三方的mybatis集成starter

springboot自动配置的原理

在spring程序main方法中添加@SpringBootApplication或者@EnableAutoConfiguration

     会自动去mavenzhong读取每个starter中的spring.factories文件,该文件配置了所有需要被创建spring容器中的bean

springboot读取配置文件的方式

springboot默认读取配置文件为application.properties或者application.yml

springboot集成mybatis的过程

添加mybatis的starter maven依赖

…mybatis-spring-boot-starter1.2.0

      在mybatis的接口中添加@Mapper注解

      在application.yml配置数据源信息

springboot如何添加【修改代码】自动重启功能

添加开发者工具·spring-boot-devtools

插入链接与图片

什么是微服务

以前的模式是所有的代码在同一个工程中 部署在同一个服务器中 同一个项目的不同模块不同功能互相抢占资源

     微服务 将工程根据不同的业务规则拆分成微服务 微服务部署在不同的机器上  服务之间进行相互调用

     java微服务的框架有dubbo(只能用来做微服务),springCloud(提供了服务的发现,断路器等)

springcloud如何实现服务的注册和发现

服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者zookeeper)

     这一过程时springcloud自动实现  只需要在main方法添加@EnableDisscoveryClient 同一个服务修改端口就可以启动多个实例

     调用方法:传递服务名称通过注册中心获取所有的可用实例,通过负载均衡策略调用(ribbon和feign)对应的服务

Ribbon和Feign的区别

Ribbon和Feign都是用于调用其他服务,不过方式不同。

     1、启动类使用的注解不同,Ribbon使用的时@RibbonClient,Feign用的时@EnableFeignClients

     2、服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口使用@FeignClient声明。

     3、调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。

               Feign则是在Ribbon的基础进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可。

               不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

SpringCloud断路器的作用

当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 ,调用者就会等待被调者的响应,

     当更多的服务请求到这些资源时,导致更多的请求等待,这样就会发生连锁效应,断路器就是解决这一问题的。

     断路器有完全打开状态:

               一定时间内,达到一定的次数无法调用,并且多次检测没有恢复的迹象,断路器完全打开,那么下次的请求不会请求到该服务。

     半开:

               短时间内有回复迹象,断路器会将部分请求发送给服务,当能正常调用时,断路器关闭。

     关闭:

               当服务一直处于正常状态,能正常调用,断路器关闭。

如何使用springboot部署到不同的服务器

1、在一个项目中生成一个war文件。

     2、将它部署到想要部署的服务器中(websphere或者weblogic或者Tomcat and so on)

JPA和Hibernate有哪些区别

简而言之:

 1、JPA是一个规范或者接口
 2、Hibernate是JPA的一个实现
  当我们使用JPA的时候,我们使用javax.persistence包中的注释和接口时,不需要使用hibernate的导入包。

什么是spring cloud

Spring Cloud为开发人员提供了快速构建分布式系统的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致了锅炉板模式,并且使用

  1. Spring Cloud开发人员可以快速地站起来来实现这些模式的服务和应用程序。它们可以在任何分布式环境中正常工作,包括开发人员

2.自己的笔记本电脑,裸机数据中心和受管平台,Cloud Foundry。

Zookeeper是什么框架

分布式的、开源的分布式应用程序协调服务,原本是Hadoop、Hbase的一个重要组件,它为分布式应用提供一致性服务的软件,

     包括:配置维护、域名服务、分布式同步、组服务等。

应用场景:

     Zookeeper的功能很强大,应用场景很多,Zookeeper主要是做注册中心用。基于Dubbo框架开发的提供者、消费者都向Zookeeper

     注册自己的URL,消费者还能拿到并订阅提供者的注册URL,一边在后续程序的执行中去调用提供者。而提供者发生了变动,

     也会通过Zookeeper向订阅的消费者发送通知。

Zookeeper有哪几种节点类型:

     持久:创建之后一直存在,除非有删除操作,创建节点的客户端会话失效也不影响此节点。

     持久顺序:跟持久一样,就是父节点在创建下一级节点的时候,记录每个子节点创建的先后顺序。会给每个子节点加上一个数字后缀。

     临时:创建客户端会话失效(注意是会话失效,而不是断了),节点也就没了,不能创建子节点。

     临时顺序:。。。。

Spring Cloud 与 Dubbo 区别


最大的区别:Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。

总结:
Dubbo和Spring Cloud并不是完全的竞争关系,两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微服务架构下的一站式解决方案。
非要比较的话,Dubbo可以类比到Netflix OSS技术栈,而Spring Cloud集成了Netflix OSS作为分布式服务治理解决方案,但除此之外Spring Cloud还提供了包括config、stream、security、sleuth等分布式服务解决方案。
当前由于RPC协议、注册中心元数据不匹配等问题,在面临微服务基础框架选型时Dubbo与Spring Cloud只能二选一,这也是两者总拿来做对比的原因。
Dubbo之后会积极寻求适配到Spring Cloud生态,比如作为SpringCloud的二进制通讯方案来发挥Dubbo的性能优势,或者Dubbo通过模块化以及对http的支持适配到Spring Cloud

Spring Cloud 与 Spring boot区别

1.spring boot专注于快速、方便的开发单个微服务个体,spring cloud关注全局的服务治理框架
2.spring boot可以离开spring cloud 独立使用开发项目,但是spring cloud 离不开spring boot,属于依赖关系。

更多推荐

SpringBoot和springCloud的面试题