1 初识SpringBoot
1.1 概念
SpringBoot是Spring全家桶的成员之一,基于约定优于配置的思想(即有约定默认值,在不配置的情况下会使用默认值,在配置文件下配置的话会使用配置的值)。SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架。
1.2 为什么要使用SpringBoot
官网对这个问题作出如此解答
1.2.1 SpringBoot的优点
创建独立Spring应用:SpringBoot本身创建的也是一个Spring应用
内嵌web服务器:Spring的web项目需要打成war使用tomcat服务器运行,SpringBoot创建的应用自带服务器,无需再下载tomcat
自动starter依赖,简化构建配置:只需导入相关场景的依赖,其底层需要使用的各个jar包和版本都已经配置好了
自动配置Spring以及第三方功能:取代之前Spring的一系列对spring、SpringMVC、MyBatis的配置文件,直接上手编写业务代码
提供生产级别的监控、健康检查及外部化配置
无代码生成、无需编写XML
1.2.2 SpringBoot的缺点
版本迭代更新太快,人称版本帝
封装的太深,内部原理复杂,不容易精通
2 SpringBoot的技术背景
2.1 微服务
SpringBoot是一种用来管理微服务的框架,让程序员可以不必在配置与逻辑业务之间进行思维切换,从而加快Spring开发的速度。
微服务是一种架构风格,这种风格习惯于将一个应用围绕业务功能拆分为一组小型服务。每个服务运行在自己的进程内,也就是可独立部署和升级。各个微服务之间使用轻量级HTTP交互, 可以由全自动部署机制独立部署。微服务是去中心化的,实现服务自治,即服务可以使用不同的语言、不同的存储技术。
2.2 分布式
由于微服务架构风格的兴起,一个应用被拆分成为许多的微服务独立部署之后,就会导致分布式的产生。
分布式的存在会导致一些问题需要解决:远程调用(各个微服务之间相互调用)、服务发现(确认哪些服务是可用的)、负载均衡(决定调用哪个服务)、服务容错(各种错误情况下的处理方式)、配置管理(修改配置中心的配置,部署在不同机器上的相同服务自动同步最新配置)、服务监控(多个服务以及云平台的资源消耗和健康状况)、链路追踪(出错后通过链路找到出错的服务)、日志管理(整个分布式网路上所有的服务的日志信息)、任务调度(对某一任务进行定时任务时,部署在不同机器上的相同服务的触发个数、触发方式……)
以上问题的解决方法:SpringBoot + SpringCloud + SpringCloudDataFlow
2.3 云原生
服务开发之后需要使用云部署供大家应用,原生应用上云又会产生以下问题:服务自愈(服务崩了能否在另一台服务器上自动部署一个一样的服务)、弹性收缩(流量高峰期间,服务是否可以自动在别的几台服务器上自动部署多台服务,过了高峰期之后再下线)、服务隔离(部署在一台服务器上的服务相互之间不影响)、自动化部署(不用一个一个将服务部署到服务器上)、灰度发布(服务更新时先更新其中的一小部分,等到新老版本共存没有问题之后,慢慢替换掉剩下的所有老服务)、流量治理(动态设置每个服务的进出流量)