嗨,Spring 粉丝们!欢迎来到另一期非常特别的《本周 Spring》,我们将回顾上一周的新闻以及过去一年的亮点。2018年是科技领域发生巨大变革的一年,Spring 社区已经能够巧妙地应对这些变革。在这期特殊的年终总结中,我们将一如既往地关注生态系统中最新和最棒的内容,但我们还将回顾一些我认为对2018年的 Spring 开发人员产生积极影响的事情,您的友好邻里 @starbuxman。
首先,当然,让我先说清楚显而易见的事情。在发布本文时,是圣诞节,12月25日。所以,如果你庆祝:圣诞快乐!
现在,让我们来回顾一下我们通常的每周总结——有很多内容要看!——然后我们将回顾 Spring 之年。
今年是令人感兴趣的一年,这一年见证了现有实践以令人惊叹的新方式得到改进。以下是我对 2018 年的记忆。
- **响应式编程** 我们在本列表的其他项目中涉及了此方面的具体内容,但 2018 年毫无疑问是响应式的一年。在 2018 年,我们在有意义的情况下交付了所有响应式集成的 GA 版本。2018 年,我们发布了 Spring Boot 2 和 Spring Cloud Finchley 等项目,它们聚合了其他项目,如 Spring Data Kay、Spring Security 5 以及 Spring Framework 5。这些版本在适当的情况下,为阻塞和同步世界中的现有用例提供了同等的功能。这一年也见证了我们开始提供仅限响应式的选项的工作;这些选项超越了以往的可能性,并且更适合其基于响应式编程的基础,例如 R2DBC 和 RSocket。
- **RSocket** 系统集成很困难。集成很难。HTTP 是一种强大的文档检索协议,但它缺乏应用程序级别的语义,每个开发人员都必须在 HTTP 动词(REST)之上重新想象这些语义。它面向请求-响应架构,但缺乏处理其他消息交换模式(如请求-响应、即发即弃和流)的能力(在请求、响应或两者中)。我们知道响应式流规范提供了一个很好的处理集成的思维模型。在其中,边界被假定为异步和解耦的。组件通过“背压”的概念支持流控制。此外,HTTP 是文本编码的。当然,您可以进行二进制数据,但您需要将其编码为二进制数据。RSocket 是一种新的二进制协议,内置支持来自 Netflix 和 Facebook 的人员的响应式流规范。它支持所有上述消息交换模式。作为一种协议,有不同的客户端库支持不同的平台和语言,包括 JavaScript、C++ 和 Java。Java 实现自然地基于 Project Reactor。我们在我们的旗舰会议 SpringOne Platform 2018 上宣布了对即将推出的 Spring Framework 5.2 发布列车中 RSocket 的正式支持。
- **R2DBC** 当人们关注响应式编程时,我们**总是**会遇到的一个问题是“我应该使用 JDBC 吗?”或“我可以使用 JDBC 吗?”或者,更直白地说,如果没有响应式 JDBC 选项,“我是否应该考虑响应式编程?”答案总是令人沮丧地相当悲观:如果你在流中的任何一点都需要阻塞以处理规模,那么你就无法获得响应式编程所吹嘘的规模优势。如果你最终启动了新的线程来扩展与 JDBC 的交互,那么你就限制了你系统的规模潜力。但这并不是说没有办法实现响应式 SQL。它只是不是 JDBC。对于那些其驱动程序原生支持异步 IO 和响应式编程的数据库供应商来说,地平线上有一些选项可能会成为 JDBC 的非常有趣的替代方案。一个选项是R2DBC,我们在我们的旗舰会议 SpringOne Platform 2018 上宣布了它。集成分为三个层次:首先是低级别的 R2DBC SPI,在其之上构建了数据库绑定。在这一点上,有 H2、Microsoft SQL Server 和 PostgreSQL 的绑定。在此级别,您会找到一个
DatabaseClient
,它或多或少等同于JdbcTemplate
,这使得使用低级别的 R2DBC 变得尽可能方便。然后,最后,在假想堆栈的顶部是 Spring Data R2DBC。我也在上周的Spring Tips中介绍了所有这些内容以及更多内容!
- **KNative** 无服务器,一个如今几乎毫无意义的术语,正风靡一时。它描述了这样一个想法,即我们应该让平台处理越来越多将软件转移到生产环境中的工作。在函数即服务平台中,货币单位是函数。它是平台根据请求调用的内容。其他所有内容——路由、调度、扩展——都由平台处理。一个函数的输出可以是另一个函数的输入。这种组合意味着可以发生有趣的事情。函数可以根据需要连接到另一个函数以产生结果。此外,函数可以附加到事件源,响应生态系统中函数的事件,无论这些函数碰巧运行在哪个平台上。在这里,它们作为集成代码的能力变得显而易见。我们在 Pivotal 于 2017 年宣布了Project Riff。正如我们最初设想的那样,它是一个构建在 Kubernetes 上的函数即服务平台。但这仅仅是第一步。在我们于 SpringOne Platform 2017 活动上推出它几个月后,Riff 团队开始与 Google 合作开发 KNative。KNative 是 Kubernetes 的进一步抽象。它提供了内置的原语,例如 Project Riff 可以想象构建在其上。这正是我们所做的。2018 年,Google 和 Pivotal 在 Google NEXT 上宣布了 KNative,我成为第一个在与 Ray Tsang 在 Google Next 的联合演示中进行 KNative 演示的非 Google 员工。KNative 不仅对 Project Riff 来说意义重大,对整个 Kubernetes 生态系统来说也是如此,我迫不及待地想看看它的发展方向。
- **Spring Cloud 至上** 今年巩固了 Spring Cloud 在开发人员分布式系统工具包中的作用。Spring Cloud 核心本身变得响应式。它引入了新的经常被要求的功能,例如 Spring Cloud Gateway。它还见证了Spring Cloud for Google Cloud和Spring Cloud for Microsoft Azure的 GA 版本的发布。它还见证了 Spring Cloud for Alibaba 的首次亮相(那是明天的 Spring Tips!)今年,我们比以往任何时候都看到大型组织转向微服务,甚至像 Netflix 这样的先锋技术公司,它们已经集成了 Spring Cloud,今年加倍押注 Spring Cloud。
真是精彩的一年!而明年看起来已经会更加精彩!2019年即将结束。我们明年再见,2020年1月1日。
我们全体祝大家新年快乐!