Apache Geode 2.0(第二部分):为现代Java时代重建分布式系统 – ASF博客

作者: Apache软件基金会(ASF)
原文链接: https://news.apache.org/foundation/entry/apache-geode-2-0-part-ii-rebuilding-a-distributed-system-for-the-modern-java-era


Java 17, Jakarta EE 10, Spring 6 —— 以及一千张多米诺骨牌

作者:Jinwoo Hwang
Apache Geode 2.0 首席开发者、项目主管与发版经理
https://JinwooHwang.com

*本文分为三个部分。 第一部分 解释了为什么 Apache Geode 2.0 至关重要。第二部分梳理了现代化改造的历程。 敬请期待第三部分,它将展望未来 —— 我们学到了什么,发生了什么变化,以及你如何帮助塑造下一步发展。

现代化 Apache Geode 2.0 意味着直面数十年积累的技术债务与密集的依赖关系网。这并不是一条线性的升级路径,而是一场级联式的转型,每一次变更都会触发更多的后续动作。最初只是为了解决安全需求,但很快就演变成了一次全面的架构重构。

规模的现实

Apache Geode 并非一个小型项目。代码库横跨超过 11,000 个 Java 类、10,000 多个测试用例以及 32 个子项目。每一项决策都会波及构建工具、运行时兼容性、安全性、CLI 工具、Web 容器以及面向用户的 API。

依赖关系的多米诺效应

现代化升级遵循严格的依赖顺序:

  • Gradle: 从版本 6 升级到 7,以支持 Java 17。
  • Java: 从 JDK 8 迁移到 JDK 17 LTS(长期支持版)。
  • Jakarta EE: 全面迁移至 Jakarta EE 10 及 jakarta.* 命名空间。
  • Spring Framework: 升级到 Spring Framework 6。
  • Spring Security: 使用现代安全配置模型完全重写。

忽视这一顺序会导致连锁故障,而遵循它则能恢复推进势头。

安全作为首要驱动力

安全并非次要问题,而是主要动因。Apache Geode 2.0 修复了关键漏洞,包括反序列化缺陷、SSRF(服务端请求伪造)风险、拒绝服务向量、路径遍历问题以及身份验证弱点。升级到受支持的框架后,系统恢复了及时获取安全补丁的能力。

主要平台转型

  • CLI(GFSH): 使用 Spring Shell 3.x 完全重写,现代化了超过 118 条命令。
  • HTTP 和 REST: 迁移至支持 HTTP/2 的 Apache HttpComponents 5。
  • 搜索: 升级到 Apache Lucene 9,并更新了命令集成。
  • Web 容器: 迁移至 Eclipse Jetty 12 和 Apache Tomcat 10.1+,拥抱 Jakarta EE 10。

一个不可避免的破坏性变更来自 Tomcat 会话管理。旧版 Tomcat(6–9)不再受支持。用户必须继续使用 Apache Geode 1.x,或迁移到新的 Tomcat 10 模块。

最终,超过 800 个文件被修改,新增超过 18,000 行代码,所有 10,600 多项测试均顺利通过。Apache Geode 2.0 如今运行在完全现代化、受支持且可维护的基础之上。

当最后一个依赖就位、构建变绿时,工作并未结束。Apache Geode 2.0 最有价值的成果不仅是技术层面的,更是从中汲取的经验教训以及为未来奠定的基础。

#### 了解 Apache Geode https://geode.apache.org/*