Spring 粉丝们大家好!欢迎来到最新一期、也是非常特别的一期《本周 Spring 回顾》,在这一期里,我们不仅回顾了上周的新闻,还回顾了过去一年的亮点。2018年是技术领域的风云变幻之年,Spring 社区巧妙地应对了这一切。在这篇特别的年终总结中,我们将像往常一样——回顾生态系统中最新的进展,但我们还会重温我认为,也就是你们友好的邻居 @starbuxman 认为对 Spring 开发者在2018年产生最积极影响的事情。
首先,当然,让我先说句题外话。这篇发布时是圣诞节,也就是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 无服务器(Serverless),这个词本身在如今几乎已经失去意义,却非常流行。它描述了这样一种想法:我们应该让平台来处理越来越多将软件投入生产的工作。在函数即服务(Function-as-a-Service)平台中,基本的单位是函数。它是平台在接收到请求时调用的一种事物。其他的一切——路由、分派、向上和向外扩展——都由平台处理。一个函数的输出可以作为另一个函数的输入。这种组合意味着会发生有趣的事情。函数可以临时连接起来,以产生结果。此外,函数可以连接到事件源,响应函数运行所在的任何平台上的函数生态系统中的事件。在这里,它们作为集成代码的强大能力变得显而易见。我们 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 的联合演示中成为第一个非 Google 员工进行 KNative 演示的人。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 的投入。
这真是精彩的一年!而明年已经看起来会更大更好!2018 年回顾到此结束。我们明年,2019 年 1 月 1 日再见。
我们全体祝大家新年快乐!