目录
- 一、Spring与Spring Boot
- 1 Spring能做什么
- 1.1 Spring的能力
- 1.2 Spring是什么
- 2 Spring Boot2
- 2.1 Spring Boot2 与 Spring Boot
- 2.2 Spring Boot 优点
- 2.3 Spring Boot 缺点
- 二、时代背景
- 1 微服务
- 2 分布式
- 3 云原生(Cloud Native)
- 参考资源
一、Spring与Spring Boot
1 Spring能做什么
1.1 Spring的能力
- 微服务开发(Microservices):有一些小功能的服务。它们可组成一个大的服务。
- 响应式编程(Reactive):使用异步数据,占用少量内存来构建高吞吐量的应用。
- 分布式云开发(Cloud):指的是SpringCloud
- 无服务开发(Serverless):函数式服务。将一个个函数上传到云平台,我们仅仅支付函数的费用,一次减少开销。
- 事件式驱动(Event Driver):基于事件的方式建立实时数据流,通过响应式完成高吞吐数据的处理。
- 批处理(batch):用于开发强大批处理应用程序。
- 等
1.2 Spring是什么
基于Java的轻量级的开源框架,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
- 宏观来说:我们通常说的Spring指的是Spring生态圈,它们通过合作帮助我们完成业务的处理。几乎囊括了所有的数据处理技术。
- 微观来说:就是我们常用的Spring Framework。
2 Spring Boot2
Spring Boot底层是Spring Framework,用于整合Spring的整个系列技术栈。让我们不再囿于繁琐的配置过程。
2.1 Spring Boot2 与 Spring Boot
因为 Spring 5 最大的更新有了响应式编程,因此对应的 **Spring Boot2 ** 最大的区别也是响应式编程。此外,Spring5 是因为 Java 8 的更新支持接口的默认实现(感觉很像C++中的virtual),于是使得 Spring5 的很多底层设计也有了改动。
Spring boot2 准备了两套方案:
- Servlet Stack:原生技术栈,即Spring MVC ,Spring security ,Spring Data Repositories的部分。
- Reactive Stack:构架异步数据流的方式,构建响应式开发。
2.2 Spring Boot 优点
- 可以创建独立Spring应用
- 内嵌web服务器
- 自动starter依赖,简化构建配置
- 自动配置Spring以及第三方功能
- 提供生产级别的监控健康检查及外部化配置
- 无代码生成、无需编写XML。
整合、一站式、简化
2.3 Spring Boot 缺点
- “版本帝”,迭代快,需要时刻关注变化
- 封装太深,内部原理复杂,不容易精通
二、时代背景
1 微服务
- 微服务是一种架构风格
- 将一个应用拆分为一组小型服务
- 每个服务运行在自己的进程内,独立部署与升级
- 服务之间使用轻量级HTTP交互
- 服务围绕业务功能拆分
- 可以有全自动部署机制独立部署
- 去中心化,服务自治,服务可以使用不同的语言不同的存储技术
2 分布式
将大型软件拆分成各种小服务独立部署,就会出现分布式问题。
分布式的困难:
- 远程调用:服务间相互远程调用。
- 服务发现:服务在哪一台可用。
- 负载均衡:在有大量请求时,合理分配请求给多个服务器,避免一些处理需求过多忙碌,一些处理过少闲置。
- 服务器容错:网络不通等问题的处理。
- 配置管理:一个配置中心,其他机器自动同步配置中心的配置。
- 服务监控:每一个服务的健康状况,CPU,内存占用等。
- 链路追踪:追踪到出错链路
- 日志管理:分布网络的日志如何记录
- 任务调度:一个任务的处理方式
- 等
分布式的解决:
SpringBoot + SpringCloud:通过SpringBoot快速创建各个微服务模块,通过SpringCloud让他们互联互调。通过响应式数据流整合。
3 云原生(Cloud Native)
部署分布式时,原生应用如何上云。
上云的困难:
- 服务自愈:一个服务崩溃后,是否能够重新拉起该服务。
- 弹性伸缩:当流量高峰时,一个服务不足时能自动扩充服务,高峰过去后又自动下线。
- 服务隔离:同一个服务器的一个服务故障时,不会影响其他服务。
- 自动化部署:能否自动化部署微服务。
- 灰度发布:足部更新新的API。让一部分服务使用新的版本,待没有问题后,再大面积部署。
- 流量治理:监控一个服务器的流量进出率等, 若服务器性能不行,则降低其分配的流量。
- 等
参考资源
- [1] 尚硅谷雷神SpringBoot2零基础人springboot全套完整版
- [2] Spring官网
- [3] Spring|projects
- [4] 官方文档