Spring全家桶带来云时代的软件开发变革

快速发展和变化的业务需求所带来的挑战正在驱动现代企业数字化转型,云原生应用系统的构建是其中最为重要环节之一。

目前,云原生应用开发框架Spring(包括Spring MVC、Spring Boot、Spring Cloud、Spring Cloud Dataflow)已经占据Java软件开发框架的统治地位。在Snyk最新的2018 JVM生态调查中表明:40%被调研的开发者正在使用Spring Boot,36%被调研的开发者正在使用Spring MVC;2018年也是Spring Boot首次超过Spring MVC成为最受欢迎的Java软件开发框架。Spring Boot和Spring MVC都是Spring家族的软件开发框架。

Spring开发框架自2002年诞生以来一直备受开发者青睐,如今伴随着云计算时代的发展,越来越强大的Spring已俨然成为现代企业构筑云原生应用系统和DevOps体系软件开发框架之事实标准和最佳实践。

Spring云原生应用开发框架之前世今生

第一代的Spring开源开发框架诞生于2002年,这是针对企业级Java应用的开发框架。Spring的创造者成立了SpringSource公司,相继收购了Groovy、Grail、Cloud Foundry等开源软件的主要支持公司,并获得了世界顶级核心开发者和开源社区贡献者;2009年,云计算领导者VMware收购SpringSource。2013年由Spring和Cloud Foundry核心成员组成极具创新的Pivotal软件公司。至此,Pivotal成为Spring和Cloud Foundry,GemFire等开源社区的最重要支持者、贡献者和领导者。

Spring Boot诞生于2013年,这是一个轻量级的Spring框架,可以快速创建基于Spring框架的应用并立刻运行起来。Spring Cloud诞生于微服务极为流行的2015年,其目标是成为微服务架构在Java领域的落地标准。随着企业软件向云端迁移,以及更多的企业云原生应用创建,Spring家族全套软件产品(Spring全家桶)已经成为基于微服务的DevOps主流软件开发环境、平台和工具。在Pivotal公司的全力投资和贡献支持下,Spring社区和Spring全家桶正在全面繁荣并被企业应用设计开发者选择为技术路线。

2018年11月初,Spring再次见证了中国开发者的热情。来自Pivotal 公司的Spring技术布道师、Spring开源社区专家、开源贡献者、6本Spring和Java等相关书籍的作者Josh Long在SpringOne Tour 2018北京站上表示:“中国互联网的规模和发展速度至少要比硅谷早一年,来自中国的需求和中国开发者正在成为推动Spring发展的主力军。”

此次SpringOne 北京站上,来自Pivotal公司的Josh Long、Spencer Gibb、Mark Heckler、Michael Cote、Paul Czarkowski等业界顶级开发者和架构师为中国开发者带来了关于Cloud Natvie Spring、Spring Boot新特性、SpringCloud Gateway、Spring Cloud Apps on Pivotal Cloud Foundry等精彩的演讲和现场代码演示。

新一代云原生软件开发环境

(上图为Pivotal 公司的Spring技术布道师Josh Long)

自2012年开始,Pivotal公司的Josh Long每年都来到中国,在北京、上海、杭州等地与中国的技术人员交流。Josh Long代表Pivotal和Spring多次到访大型中国互联网和交易平台公司,对于中国互联网技术开发人员所做的事情,感到非常惊讶。2013年4月,他在Spring社区发表文章《Spring的中国规模》,向外界介绍了中国互联网双十一期间的巨大交易规模挑战及其Spring最佳实践。

Josh Long在其2013年文章中介绍到,中国互联网及交易平台的技术开发人员广泛应用Pivotal技术,包括核心Spring框架、Spring MVC、Spring Security、Groovy等等,令人感到了Pivotal的开源软件和平台的强大能量。Josh Long表示,中国技术开发人员广泛采用Spring框架,而这一框架也已经普遍应用于Facebook、Google、Twitter等大型全球化互联网公司,经过规模商业环境检验,因而中国企业和互联网公司能够很快地完成从开发到向生产环境的软件开发生命周期。

Spring框架的好处在于降低了大规模分布式软件开发成本和难度、提高了团队之间的沟通效率以及快速迭代,尤其适合小型敏捷团队和代码的分布式开发,并且很容易水平扩展以应对业务快速增长、变化。不同于Ruby on Rails这类的“强意见”开发工具,Spring Boot既提供了针对场景的完整技术方案,也可以把这些设置全部抛弃,让开发者灵活选择自己的技术方案。Spring Cloud则是面向云环境的一站式微服务管理解决方案,让开发者专注于代码开发即可,而不必耗费精力在云基础设施管理上。

Spring框架包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow集合的完整解决方案。除了提供基本云原生微服务构建,还提供全面的服务治理和配套设置,整体优于其它基于开源的方案。框架吸收了Netflix、Facebook、Google、Twitter等多家大型顶级公司的技术所长,融合贯通之后又提供了简化用户体验的产品。

目前,Spring Cloud已经针对Google云GCP、微软云Azure、AWS等提供了API,可以流畅接入这些公有云基础设施。2018年10月30日,Spring Cloud发布了Spring Cloud for Alibaba 0.2.0版本,旨在扩展更加广泛的多云生态系统,充分展开合作,让Spring开发者具备更佳的灵活性和更多选择,轻松使用Spring Boot和Spring Cloud开发Java应用。

再次颠覆企业级软件开发

(上图为Pivotal软件开发布道师Spencer Gibb)

SpringOne Tour 2018北京站上,Josh Long以及另一位全球Spring社区重量级人物、Pivotal软件开发布道师Spencer Gibb一致认为,Spring技术最新、最重要的更新就是Spring Framework 5.0以及其所推行的新企业级软件开发模型:Reactive Programming(响应式编程)。

什么是Reactive Programming? Reactive Programming对开发者的收益是什么呢?简单理解,Reactive Programming的好处就是异步处理机制。在传统的单机时代,所有的逻辑、流程等机制都是按顺序串行的;而到了分布式环境中,一方面把一个大的逻辑或流程分拆为若干小逻辑和小流程后放到不同的机器上处理,处理完毕再把结果合并回来,这个过程仍然是同步并行执行的;而更进一步就是异步处理。响应式编程提供了另一种编程风格,专注于构建对事件做出响应的应用程序。

对于双十一这样巨大的数据和交易规模,即使是分布式处理也不能满足其需求,因此大型互联网公司早已开始探索异步处理机制。所谓异步处理机制,把一个大的逻辑或流程拆分成更小的部分后,随机交给不同的机器处理,处理结果的回收也不必等其它机器处理完毕,而是处理完成就马上回收。异步处理可以理解为“交响乐”,每个乐器按不同的步调、不同的频率、不同的音阶各自处理后,整体仍然是很和谐完整的乐章。

Josh Long解释Reactive Programming的一大收益就是基于异步处理机制的I/O,用同样的资源处理更多的I/O请求而不用一直占用系统资源。Reactive Programming的另一个收益就是更加稳定的编程模型。在互联网的大型分布式处理系统中,服务器等计算资源的宕机是随时发生的。因此在编写互联网大型分布式软件时,要把底层基础设施的随时宕机或各种意外情况都要考虑进代码中,无服务器编程就是应对这一挑战而产生的编程模式。Reactive Programming则通过代码本身,让开发者先天要考虑“系统如何失败”这一问题,从而让软件更具有弹性,系统更加健壮。

Pivotal如何组织Spring的技术进程?

(上图为热情的中国Spring开发者们)

Pivotal公司是Spring开源技术背后的重要推动者,很多Spring的重要贡献者都在Pivotal公司任职。那么,Pivotal是如何考虑和组织Spring的技术发展呢?

Spencer Gibb在Pivotal负责Spring Cloud的开发工作,Spring Cloud是Spring最新的技术成就,也是面向云原生环境的管理解决方案。在云计算环境中,由于在云数据中心采用了更多的节点、更多的X86服务器以及更多的软硬件,导致整个分布式系统更加复杂、更加倾向于出现各类问题。当前有不少云环境的开源管理解决方案,例如Eureka等都可以帮助开发者管理云基础设施环境,但这些工具往往需要开发者自己做很多配置和管理工作,Spring Cloud则把很多工作都以自动化方式完成了。

最新发布的Spring Cloud Gateway就是这一“用户友好”思想的产物。Spring Cloud Gateway是基于Spring Framework 5.0、Spring Boot 2.0和Project Reactor等技术开发的网关,旨在为微服务架构提供一种简单而有效的统一API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,不仅提供统一的路由方式,并且提供网关基本功能,如安全、监控/埋点和限流等等。在企业级环境中,Spring Cloud Gateway既可以路由给传统Legacy系统,也可以路由给Pivotal Cloud Foundry私有云系统等。

Spencer Gibb表示,Spring Cloud Gateway的开发历时两年时间,在2018年6月发布了GA版本。Spring Cloud之前已经集成了Zuul1,两年前当Netflix发布Zuul2的时候,Pivotal的Spring开发团队开始思考是否可以提供更好的开发者体验,于是就在Project Reactor、Spring Framework 5.0等其它Pivotal Spring团队的工作基础上,专注于Gateway这样一个小的领域进行开发。Spencer Gibb形容这有点像整车开发与单个部件开发之间的关系,Pivotal公司有不同的Spring团队负责“整车开发”以及其它部件的开发,这样Spencer Gibb所带领的Spring Cloud团队就可以更加专注。

Spencer Gibb介绍Pivotal Spring团队是按年度来规划Spring的技术进展。Pivotal Spring团队每年两次聚集到一起讨论业界的最新趋势和技术进展,平时也不断从SpringOne技术社区、Github以及Twitter等处收集开发者和用户的反馈,结合业界最新的技术进展以及用户反馈的结果后,Pivotal的Spring团队就可以设定下一阶段的开发方向。

Josh Long和Spencer Gibb都注意到了中国庞大的Spring生态及软件开发者,这也是Pivotal公司近年来不断投资中国市场的SpringOne系列活动的主要原因。正如Josh Long所观察的现象,在硅谷开发一个互联网应用可能要数年时间并在多个市场成功后才能成长为一个巨型系统,而中国一个市场就可以在一年间支撑起巨型互联网系统,这种独特的中国互联网规模为Spring等技术提供了巨大的发展空间。

采访过程中Josh Long热情的表示,由于语言的问题,中国开发者对Spring的贡献难以被中国以外的市场察觉和认知。他欢迎更多的中国开发者到Spring.io上交流。他本人从2011年1月开始每周二会发布一个当周的Spring社区更新,迄今已经坚持8年了,从未间断;现在他还会提供每月的汇总,方便更多的开发者了解Spring社区和技术进展。Josh Long 还有自己的博客,“欢迎大家到我的博客上,加我的微信,我很愿意跟大家交流”。

总结而言,微服务、容器服务、DevOps、CI/CD相结合共同支持企业的云原生应用体系构建。Pivotal 公司作为Cloud Native云原生概念的提出者、领域的技术先驱与倡导者,不断大力推动Spring开源社区和生态,促进和提供微服务系统构建的平台,框架和工具,Spring Boot、Spring Cloud就是最强大框架之一。Pivotal云原生平台结合Spring框架按照三阶段架构持续发展,支持从开发、测试到生产的云原生应用全生命周期:第一阶段为云原生应用框架、云原生运行时平台、云原生运维;第二阶段为指导现代应用和微服务架构设计的12要素、容器编排、基础设施自动化;第三阶段为Cloud Foundry Buildpacks及Spring Cloud、Cloud Foundry弹性运行时以及Cloud Foundry BOSH多云运维管理平台;而在最下层就是支持这一系列变革的云原生文化。除了云原生平台的演进外,Pivotal的大数据及数据平台Greenplum和GemFire也在与时俱进,支持最新的机器学习等新兴企业级应用。

Spring软件家族不仅带来了云时代的软件开发变革,也将有机会让中国开发者和中国的规模效应产生全球影响力,这也是中国在全球软件业的机遇。 基于Spring构建的云原生应用系统,结合Pivotal Application Service云原生平台、Pivotal Container Service容器服务平台、Pivotal Function Service无服务器平台,加之完整的现代云原生系统构建方法论,将帮助现代企业更加顺畅地完成数字化转型之路。(文/宁川)

原文地址:http://blog.51cto.com/cloudtechtime/2314198

时间: 2024-10-08 23:12:52

Spring全家桶带来云时代的软件开发变革的相关文章

Spring全家桶——SpringBoot之AOP详解

Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. 准备工作 首先,使用AOP要在build.gradle中加入依赖 //引入AOP依赖 compile "org.springframework.boot:spring-boot-starter-aop:${springBootVersion}" 然后在application.yml中

【转】Spring全家桶

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案. 很多研发人员把spring看作心目中最好的java项目,没有之一. 所以这是重点也是难点,工作中必须会,面试时肯定考. 那么,今天花费20分钟,梳理Spring框架相关知识. Spring系列包含非常多的项目,可以满足java开发中的方方面面. 先来看常用框架的知识点汇总,如图: Ⅰ

一篇文章带你搞懂spring全家桶套餐

spring全家桶里都有哪些食物 上期我们讲了spring和springmvc两个框架的基础知识和学习路线,而这期内容,我们将围绕着spring全家桶展开来讨论. 大家应该都知道,按照出现的顺序,spring全家桶大概包含了spring.springmvc.springboot以及springcloud,从开胃小菜spring到满汉全席springcloud,spring全家桶可谓Java工程师的必备大餐,那么,我们不妨先来看看,spring全家桶是如何从光杆司令spring发展到如今的庞大家族

Spring全家桶系列--SpringBoot与Mybatis结合

Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵活性,可优化性比较强,这也是现在大多数人选择的原因. mapper.xml.dao接口.实体类自动生成 下载 :https://pan.baidu.com/s/1JY7Xduk5E3KPm58AjnueuQ 工具包 1.1 修改配置文件generator.xml 解压之后,这里把文件拷贝到了C:\resources\genera

Spring全家桶之spring boot(三)

spring boot集成mybatis 众所周知,spring与springmvc可以无缝集成,而mybatis不是spring旗下的框架,因此需要进行配置,当然,这里的配置也是非常简单的. 1.首先我们需要创建一个数据库表: CREATE TABLE `learnmybatis`.`t_student` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NULL, `age` INT NULL, `score` DOUBLE NUL

Spring全家桶之spring boot(四)

spring boot拦截器.过滤器.servlet和健康检查机制  spring boot拦截器 spring boot配置拦截器与原来大致相同,只是需要在拦截器的配置类上添加@Configuration注解,让spirng boot将拦截器加入spring容器中. 1.首先这里我们像之前一样创建一个普通的拦截器 package com.scm.mybatis.Interceptor; import org.springframework.web.servlet.HandlerIntercep

玩转Spring全家桶

庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分 Java 后端程序员在日常工作中也会接触到 Spring ,因此,如何用好 Spring ,也就成为 Java 程序员的必修课之一. 同时,Spring Boot 和 Spring Cloud 的出现,可以帮助工程师更好地基于 Spring 及各种基础设施来快速搭建系统,可以说,它们的诞生又一次解放了大家的生产力. 因此,Spring Boot 和 Spring Clou

React全家桶+AntD 共享单车后台管理系统开发

第1章 课程导学对课程整体进行介绍,并且说明学习的必要性. 1-1 课程导学第2章 React基础知识React基础知识以及生命周期的介绍,并使用React官方脚手架初始化基础项目,同时介绍了新一代打包工具Yarn. 2-1 React基础介绍2-2 React脚手架使用2-3 React生命周期介绍第3章 主页面架构设计详细介绍了初始项目的插件安装.主题定制以及主页面结构设计. 3-1 基础插件安装(1)3-2 基础插件安装(2)3-3 页面结构开发(1)3-4 页面结构开发(2)3-5 菜单

如何掌握 Spring,Spring Boot 全家桶?系统学习 Spring 的大纲一份(实战教学)

搞个推荐! 资深的 Spring 工程师应该都知道 Spring 界的大牛丁雪丰.作为平安壹钱包的高级架构师之余,他不仅翻译了<Spring Boot 实战><Spring 攻略>两本书,还出了一门一揽子解决 Spring 全家桶的课程<玩转 Spring 全家桶>. 他在推荐自己的这门课程时说, 市面上有很多书和教程,但对于很多开发人员,在学习 Spring 的时候,难免会遇到这些问题: 官方文档虽然全面,但面对庞杂的知识体系,很多初学者一时不知该从哪里下手: 手册式