我从业于第三方支付和互联网金融这两个领域。在互联网金融公司工作期间,从零参与了公司技术平台建设。
随着公司业务不断发展,组织技术团队对平台进行过四次大架构升级,从最初单体架构发展到最后的微服务架构,我也从一个一线开发人员成长为互联网金融公司的技术负责人。
2016 年,也就是构建第四代平台架构的时候,我在技术调研时了解到了 Spring Boot,初步尝试使用后,被其简洁快速开发的魅力所吸引,随即推广到公司所有项目中。
为了促进自己和团队的学习,我开始在网络上连载了 Spring Boot 的系列学习文章,意外得到广大网友的认可。
2017 年我又从互联网金融回归到第三方支付行业,当时公司正在构建新一代的支付平台,技术栈和互金的第四代平台一样,采用的 Spring Boot + Spring Cloud 相关生态,有所不同的是支付行业所面临的业务更加复杂,交易规模更为庞大。
在互联网金融公司中第四代平台大概有二十多个微服务支撑平台,现在公司的新一代支付系统微服务项目六十多个,每个服务部署三个实例就高达一百多个;在互金行业只有在抢标的时候有大量的流量,一年交易二、三十亿,现在我就职的支付公司每天交易量就高达四、五十亿,对系统的稳定性和性能要求更高。
回到第三方支付行业后,我开始负责公司新一代平台的微服务架构实践,以及微服务架构下大数据平台建设。
经过两家公司对 Spring Boot 的使用,我越发认识到 Spring Boot 对传统开发带来的挑战,Spring Cloud 未来可能会随着 Kubernetes 和 Service Mesh 的发展有所弱化,但是 Spring Boot 给开发带来的影响是深远的。
恰逢今年 Spring Boot 2.X 被广泛的应用,可以预见的是未来的发展会越来越好。
如果你还没接触 Spring Boot 或者在应用中遇到或大或小的问题,可以看看下面的内容:
Spring Boot 是一套全新的框架,它来自于 Spring 大家族,因此 Spring 所有具备的功能它都有并且更容易使用;同时还简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。
其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
它的核心设计思想是:约定优于配置,Spring Boot 所有开发细节都是依据此思想进行实现的。
下图展示出了 Spring Boot 在 Spring 生态中的位置:
该项目主要的目的是:
上手 Spring 开发更快、更广泛;
使用默认方式实现快速开发;
提供大多数项目所需的非功能特性,诸如:嵌入式服务器、安全、心跳检查、外部配置等。
为什么是 Spring Boot ?
Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。
同时它集成了大量常用的第三方库配置(如 Redis、MongoDB、JPA、RabbitMQ、Quartz 等),Spring Boot 应用中这些第三方库几乎可以零配置进行开箱即用,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
Spring Boot 主要特性
使用 Spring 项目引导页面可以在几秒构建一个项目;
方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks;
非常简洁的安全策略集成;
支持关系数据库和非关系数据库;
支持运行期内嵌容器,如 Tomcat、Jetty;
强大的开发包,支持热启动;
自动管理依赖;
自带应用监控;
支持各种 IDE,如 IntelliJ IDEA、NetBeans。
使用 Spring Boot 开发项目,有以下几方面优势:
Spring Boot 使开发变得简单,提供了丰富的解决方案,快速集成各种解决方案提升开发效率。
Spring Boot 使配置变得简单,提供了丰富的 Starters,集成主流开源产品往往只需要简单的配置即可。
Spring Boot 使部署变得简单,其本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合 Jenkins、Docker 自动化运维非常容易实现。
Spring Boot 使监控变得简单,自带监控组件,使用 Actuator 轻松监控服务各项状态。
从软件发展的角度来讲,越简单的开发模式越流行,简单的开发模式解放出更多生产力,让开发人员可以避免将精力耗费在各种配置、语法所设置的门槛上,从而更专注于业务。这点上,Spring Boot 已尽可能地简化了应用开发的门槛。
至此,我把这些年学习应用 Spring Boot 的经验、和团队趟过的坑都集结在这门课程中,希望对想入手或正在入手的朋友有更多的帮助。
写在结尾
Spring Boot 所集成的技术栈,涵盖了各大互联网公司的主流技术,跟着 Spring Boot 的路线去学习,基本可以了解国内外互联网公司的技术特点。
Spring Boot 是一套快速开发框架,在微服务架构的大环境下 Spring Boot 一经推出就受到开源社区的追捧。
Spring Boot 有强大的生态整合能力,提供了众多的 Starters 包,非常方便 Spring Boot 集成第三方开源软件达到开箱即用的效果。
Spring Boot 和微服务架构都是未来软件开发的大趋势,越早参与,受益越大。