Spring Boot/Spring Cloud
什么是 Spring Boot?
在 Spring 框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc 框架等,Spring 的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在 spring 配置文件中创建 <bean>
,依赖注入即为由 spring 容器为应用程序的某个对象提供资源,比如 引用对象、常量数据等。
SpringBoot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了 Spring 众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot 是一个服务于框架的框架,服务范围是简化配置文件。
为什么要用 Spring Boot?
- Spring Boot 使编码变简单
- Spring Boot 使配置变简单
- Spring Boot 使部署变简单
- Spring Boot 使监控变简单
- Spring 的不足
Spring Boot 核心配置文件是什么?
Spring Boot 提供了两种常用的配置文件:
- properties 文件
- yml 文件
Spring Boot 配置文件有哪几种类型?它们有什么区别?
Spring Boot 提供了两种常用的配置文件,分别是 properties 文件和 yml 文件。相对于properties 文件而言,yml 文件更年轻,也有很多的坑。可谓成也萧何败萧何,yml 通过空格来确定层级关系,使配置文件结构跟清晰,但也会因为微不足道的空格而破坏了层级关系。
Spring Boot 有哪些方式可以实现热部署?
https://mp.weixin.qq.com/s/UscOEtOBq5qjy1-SJLYtaw
JPA 和 Hibernate 有什么区别?
- JPA Java Persistence API,是 Java EE 5 的标准 ORM 接口,也是 ejb3 规范的一部分。
- Hibernate,当今很流行的 ORM 框架,是 JPA 的一个实现,但是其功能是 JPA 的超集。
- JPA 和 Hibernate 之间的关系,可以简单的理解为 JPA 是标准接口,Hibernate 是实现。那么 Hibernate 是如何实现与 JPA 的这种关系的呢。Hibernate 主要是通过三个组件来实现的,及 hibernate-annotation、hibernate-entitymanager 和 hibernate-core。
- hibernate-annotation 是 Hibernate 支持 annotation 方式配置的基础,它包括了标准的 JPA annotation 以及 Hibernate 自身特殊功能的 annotation。
- hibernate-core 是 Hibernate 的核心实现,提供了 Hibernate 所有的核心功能。
- hibernate-entitymanager 实现了标准的 JPA,可以把它看成 hibernate-core 和 JPA 之间的适配器,它并不直接提供 ORM 的功能,而是对 hibernate-core 进行封装,使得Hibernate 符合 JPA 的规范。
什么是 Spring Cloud?
从字面理解,Spring Cloud 就是致力于分布式系统、云服务的框架。
Spring Cloud 是整个 Spring 家族中新的成员,是最近云服务火爆的必然产物。
Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如:
- 配置管理
- 服务注册与发现
- 断路器
- 智能路由
- 服务间调用
- 负载均衡
- 微代理
- 控制总线
- 一次性令牌
- 全局锁
- 领导选举
- 分布式会话
- 集群状态
- 分布式消息
- ……
使用 Spring Cloud 开发人员可以开箱即用的实现这些模式的服务和应用程序。这些服务可以任何环境下运行,包括分布式环境,也包括开发人员自己的笔记本电脑以及各种托管平台。
Spring Cloud 断路器的作用是什么?
在 Spring Cloud 中使用了 Hystrix 来实现断路器的功能,断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决,如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响。它可以帮助快速地拒绝对一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态。
Spring Cloud 的核心组件有哪些?
①. 服务发现——Netflix Eureka
一个 RESTful 服务,用来定位运行在 AWS 地区(Region)中的中间层服务。由两个组件组成:Eureka 服务器和 Eureka 客户端。Eureka 服务器用作服务注册服务器。Eureka 客户端是一个 java 客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix 在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
②. 客服端负载均衡——Netflix Ribbon
Ribbon,主要提供客户侧的软件负载均衡算法。Ribbon 客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon 内置可插拔、可定制的负载均衡组件。
③. 断路器——Netflix Hystrix
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
④. 服务网关——Netflix Zuul
类似 nginx,反向代理的功能,不过 netflix 自己增加了一些配合其他组件的特性。
⑤. 分布式配置——Spring Cloud Config
这个还是静态的,得配合 Spring Cloud Bus 实现动态的配置更新。