领先一步
VMware 提供培训和认证,为您的进步加速。
了解更多Spring Cloud 持续受到极大欢迎,并且在过去几年中,许多 IaaS 提供商与其技术进行了集成并加入了发布列车。这通常涉及加入 spring-cloud GitHub 组织并在 org.springframework.cloud Maven groupid 中发布。随着包含的项目数量似乎在增加,这变得有点难以管理,我们希望退一步审查这种模式的优缺点,并提出一个能惠及所有相关项目的更优前进道路。
成为发布列车一部分的最大缺点也许是它剥夺了项目维护者一定程度的控制权。由于核心 Spring Cloud 团队负责发布,维护者无法按照他们正在集成的技术的发布时间表工作。即使他们设法发布了一个服务更新,在下一个发布列车版本发布之前,该更新也不会被发布列车收录。这种模式还意味着,通常情况下,项目维护者无法直接获取关键统计数据,例如他们项目的 Maven 下载量。
此外,成为发布列车的一部分似乎有很多好处,但实际上其中许多好处是任何项目都可以获得的,与是否在发布列车上或是否在 spring-cloud GitHub 组织中无关。
https://springjava.cn 网站显然包含涵盖主要 Spring Cloud 项目的内容,但也包含涵盖一些第三方项目的内容。这可能是一个展示如何使用该技术的指南,或现有项目页面上的一个条目。请参阅 https://springjava.cn/projects/spring-cloud,其中提及了许多项目——其中一些在发布列车上,一些不在。
由于这些原因,Spring Cloud 团队决定采用一种精简发布列车的模式,从而解决缺点,同时保留所有 perceived benefits(感知的好处)。提议是 IaaS 提供商将在其自己的 GitHub 组织中托管和维护其代码。这适用于目前在发布列车上的所有现有集成项目。Spring Cloud Azure 从未加入发布列车,而 Spring Cloud Alibaba 团队在从孵化器组织毕业时已经采用了这种新模式。
将其中一些项目从 Spring Cloud GitHub 组织和发布列车中移除,并不意味着活跃开发或支持策略发生变化。同样的团队将继续致力于这些项目,并跟上 Spring Cloud 的发布节奏。如果说有什么影响的话,这个变化可能会使支持模式更加清晰:如果项目托管在 IaaS 提供商的 GitHub 组织中,那么他们显然会提供支持。
新模式确实意味着 group-id 和 artifact-id 可能会发生变化。包名也很可能会更新以反映这些变化。开发人员还需要在他们的项目中明确包含这些依赖项,而不是通过 Spring Cloud BOM 的托管版本来继承它们。
Spring Boot 团队有关于模块(自动配置和 starter)恰当命名的指南。这些对于 Spring Cloud 并非强制执行,但遵守这些指南意味着任何依赖该方案构建的东西都将“正常工作”(例如,IDE 中的内容辅助工具)。
遵循此模式,阿里巴巴团队正从 spring-cloud-incubator 毕业到他们自己的 GitHub 组织 https://github.com/alibaba/spring-cloud-alibaba,我们将继续与他们合作,因为他们本周将发布一个重要的版本,支持 Spring Cloud Greenwich.SR2 和 Finchley.SR4。此版本将包含对 Spring Cloud Gateway 的 Sentinel 支持,并使 Nacos 服务发现和 Spring-Cloud-Config 能够一起使用。敬请关注!
您可以预期在未来主要的 Spring Cloud 发布列车发布期间,其他提供商也将进行迁移,因为主要版本是进行这种重大更改的合适时机。
请注意,这仅描述了当前主要 Spring Cloud 发布列车的情况和计划;它不影响其他项目(例如,Spring Cloud Stream binders)。
我们希望上述理由解释了我们试图通过这一战略实现的目标。一如既往,我们乐于接受反馈——请告诉我们您的想法。赋予项目所有者完全的灵活性,使其能够构建和发布更符合他们文化需求的软件,同时继续提供与我们紧密合作进行代码审查和项目推广的所有好处,这将使每个人受益。