什么是SpringBoot?

它使用”习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性配置,让你无需手动进行配置)的理念让你的项目快速运行起来. 使用SpringBoot你可以不用或者只需要很少的Spring配置。

Pandora解决什么问题:

现在很多项目都会使用大量的中间件,中间件之间可能就有版本依赖的问题,比如你的应用HSF和Diamond分别依赖了同名jar包的不同版本,maven只会引入其中一个版本。同样的中间件和应用之间也存在同样的Jar包依赖的问题,出于要解决这些依赖冲突的问题,简单的来说就是一个类隔离容器。具体都有哪些优势:

  1. 实现类隔离,提供稳定的运行环境,Pandora实现了应用与中间件之间隔离、中间件与中间件之间隔离,保证了类的正确加载,而不会让依赖关系与依赖加载出现不一一对应的情况。
  2. 中间件平滑升级,由于应用服务器会优先加载Pandora的类,因此只要升级Pandora中的插件即可,无需对应用中的pom.xml进行修改。
  3. 中间件统一管理,降低中间件接入和使用成本,Pandora会统一管理中间的启动、初始化以及资源回收等一系列操作,开发者基本上只需要了解它的配置及使用特性就好

    Pandora Boot是什么

    Pandora Boot是在Pandora的基础之上,发展处的更轻量使用集团中间件的方式;它基于Pandora和FatJar基础,可以在IDE中启动pandora环境。同时PandoraBoot完全拥抱和兼容SpringBoot

PandoraBoot和Springboot区别

  1. Spring Boot 通过 Maven 来管理依赖,是平板化的,最前面提到的二方包、三方包依赖问题,SpringBoot解决不了
  2. Pandora Boot很好的管理了中间件应用,用户可以快速的引入各类中间件,平滑的保持中间件升级。
  3. Pandora Boot 目前已经很好的集成了 autoconfig,外部也和 AONE2、PSP 等系统进行打通,开发起来更加的方便

springboot优缺点

优点:

  • 快速构建项目
  • 对主流开发框架的无配置集成
  • 项目可独立运行,无需外部依赖Servlet容器
  • 提供运行时的应用监控
  • 极大地提高了开发,部署效率
  • 与云计算的天然集成
    • Spring Boot 是一套快速开发框架,同时他具有强大的生态整合能力,使用maven管理依赖,提供了众多的 Starters 包。同时springboot继承第三方开源软件可以达到开箱即用的效果
    • 他是springcloud全家桶的一份子。

缺点:

  • 书籍文档较少,且不够深入
  • 版本迭代速度很快,一些模块改动很大。
  • 由于不用自己做配置,报错时很难定位。
  • 网上现成的解决方案比较少

    @SpringBootApplication 注解,


    @SpringBootApplication是springboot的核心注解:
  1. 组合了 @SpringBootConfiguration注解(继承自@Configuration),标注当前类是配置类,实现配置文件的功能。
  2. @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  3. @ComponentScan:Spring组件扫描。

    Spring Boot 的自动配置是如何实现的?

    springboot有一个全局配置文件:application.properties或application.yml
    主要是通过@SpringBootApplication ,其中包含三个注解

Spring Boot 加载配置文件的优先级了解么?

SpringBoot加载配置文件的优先级由高到低如下:
file: ./config/
file: ./
classpath: /config/
classpath: /
SpringBoot会从这四个位置全部加载主配置文件,高优先级的配置会覆盖低优先级的配置,并且 ,互补配置。
image.png

Spring Boot 的配置文件有哪几种格式

.properties 和 .yml,它们的区别主要是书写格式不同。
.yml是一种人类可读的数据序列化语言。
properties 是属性配置文件;
与属性文件相比,如果我们想要在配置文件中添加复杂的属性,yml文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。
.yml 格式不支持 @PropertySource 注解导入配置

运行 Spring Boot 有哪几种方式?

  1. 打包用命令或者放到容器中运行
  2. 用 Maven/ Gradle 插件运行
  3. 直接执行 main 方法运行

什么是SpringCloud?

我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如 服务发现注册配置中心消息总线负载均衡断路器数据监控 等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。

SpringCloud如何实现服务的注册和发现?

服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka)
这一过程是Springcloud自动实现 只需要在main方法添加@EnableDisscoveryClient 同一个服务修改端口就可以启动多个实例
调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务

作为服务注册中心,Eureka比Zookeeper好在哪里?

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。

因此,Zookeeper 保证的是CP, Eureka 则是AP。

什么是ribbon和feign,他们的区别?

SpringCloud的Netflix中提供了两个组件实现软负载均衡调用:ribbon 和 feign。
Ribbon和Feign都是用于调用其他服务的,不过方式不同
Ribbon使用使用RestTemplate调用远程服务对应的方法
Feign使用@FeignClient(“指定服务名”)调用提供方提供对外接口;
Ribbon和Feign的区别:
1),启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
2),服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
3),调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。
Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可