springboot+springcloud相关面试题

什么是springbootweb

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

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

                嵌入的Tomcat 无需部署war文件sql

                简化maven配置数据库

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

                

springboot经常使用的starter有哪些springboot

        spring-boot-starter-web 嵌入tomcat和web开发须要servlet与jsp支持服务器

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

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

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

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

        

springboot自动配置的原理

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

        会自动去maven中读取每一个starter中的spring.factories文件  该文件里配置了全部须要被建立spring容器中的bean

 

springboot读取配置文件的方式

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

        

springboot集成mybatis的过程

        添加mybatis的starter maven依赖

                <dependency>

                        <groupId>org.mybatis.spring.boot</groupId>

                        <artifactId>mybatis-spring-boot-starter</artifactId>

                        <version>1.2.0</version>

                </dependency>

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

        在application.yml配置数据源信息

        

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

        添加开发者工具集=====spring-boot-devtools

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
        

什么是微服务

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

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

        Java微服务的框架有 dubbo(只能用来作微服务),spring cloud(提供了服务的发现,断路器等)

        

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

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

        这一过程是springcloud自动实现 只须要在main方法添加@EnableDisscoveryClient  同一个服务修改端口就能够启动多个实例

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

 

ribbon和feign区别

        Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonClient(value="服务名称") 使用RestTemplate调用远程服务对应的方法

        feign添加maven依赖 spring-starter-feign 服务提供方提供对外接口 调用方使用 在接口上使用@FeignClient("指定服务名")

Ribbon和Feign的区别:

        Ribbon和Feign都是用于调用其余服务的,不过方式不一样。

        1.启动类使用的注解不一样,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

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

        3.调用方式不一样,Ribbon须要本身构建http请求,模拟http请求而后使用RestTemplate发送给其余服务,步骤至关繁琐。

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

        不须要本身构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法彻底一致。

        

springcloud断路器的做用

        当一个服务调用另外一个服务因为网络缘由或者自身缘由出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时

                致使更多的请求等待 这样就会发生连锁效应(雪崩效应) 断路器就是解决这一问题

                断路器有彻底打开状态

                        必定时间内 达到必定的次数没法调用 而且屡次检测没有恢复的迹象 断路器彻底打开,那么下次请求就不会请求到该服务

                半开

                        短期内 有恢复迹象 断路器会将部分请求发给该服务 当能正常调用时 断路器关闭

                关闭

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

欢迎工做一到五年的Java工程师朋友们加入Java架构开发: 855835163

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!

相关文章
相关标签/搜索