Stargate 为其 V2 实现选择 Quarkus

本文简要概述了 Stargate,它为何需要更改,以及为何选择 Quarkus 用于其下一个实现。有关更多详细信息的其他链接,请参见参考部分。

什么是 Stargate?

Stargate 创建于 2020 年,是一个数据 API 网关,可将 Apache Cassandra(一个开源 NoSQL 数据库)转换为 JSON 文档数据库。 Stargate 通过各种 API 公开 Cassandra,包括 JSON、CQLGraphQL、REST 和 gRPC,以非侵入方式将模块化、面向服务和云原生架构引入 Cassandra 生态系统。

Stargate 帮助 NetflixYelpNetlifyPrepLadderSHIELD 等公司利用 Cassandra 的强大功能。 Stargate 允许应用程序以无驱动程序的方式与 Cassandra 交互,使其可被几乎任何技术堆栈上的任何类型的应用程序使用。 Stargate 支持 Cassandra 的传统 CQL 接口和 HTTP API,同时提供高性能 gRPC 实现,该实现与本机驱动程序一样快,但网络管理配置更少。

Stargate V2 要求

Stargate V2 需要将其技术堆栈从更具单体架构的 V1 前身(使用 Dropwizard 公开 HTTP 端点)进行现代化改造。 Stargate V2 是一个从头开始重构所有内容的机会,这意味着选择一个新的核心框架来构建。

所选择的框架必须满足一些关键要求

  1. 学习曲线必须宽容。 Stargate 最不希望做的事情就是引入一个没人想采用的新框架。 该框架必须是整个团队都可以支持并轻松掌握的东西。

  2. 许多功能需要开箱即用。 这样,就可以通过使用现有构建块来组装功能。

  3. 出色的 gRPC 支持。 gRPC 是 Stargate V2 的核心基础功能,因此出色的 gRPC 支持是必须的。

  4. 卓越的性能。 需要极快的性能才能达到与本机驱动程序一样快的性能。

  5. 反应式支持。 对非阻塞 I/O 的支持是 Stargate 的关键。

为什么选择 Quarkus?

Spring Boot、Micronaut 和 Quarkus 是框架选择的最初领先者。 创建了一个列出对 Stargate 很重要的所有功能的表,以及每个框架的分数。 在支持的 JDK 版本、依赖项管理、配置、容器镜像构建、反应式支持、可观察性、安全性和社区参与度方面对每个框架进行了比较。

由于一些对 Stargate 很重要的主要因素,Spring Boot 早已被淘汰。

  • 缺乏对 gRPC 的官方支持。

  • 本机映像支持仍处于实验阶段,Stargate 无法等待它正式发布。

Stargate 团队还考虑了 Quarkus 生态系统的健康状况,特别是可用文档的数量和准确性,这始终是采用新的开源技术时的关键考虑因素。 Ivan Senic 解释说

在完全采用 Quarkus 之前,我们进行了一次试验以获得实践经验,并且我们发现它是 Stargate 的正确框架。 Quarkus 拥有出色的文档,其中包含所有扩展的详细指南,让您清楚地了解如何实现目标,并清楚地显示配置属性。

-Ivan Senic, DataStax 软件工程师

导致该决策的一些其他因素包括

  • gRPC 支持: gRPC 是 Quarkus 中的一等公民。 这是 Stargate 的一项关键要求,Quarkus 满足了这一要求。

  • JDK 17: Quarkus 完全支持 Java 17。

  • 集成测试: Stargate 需要一个可以在具有外部依赖项(例如 Cassandra 集群)的自定义环境中执行集成测试的框架。

  • 可观察性: Quarkus 具有适用于 HTTP 和 gRPC 的开箱即用指标和跟踪集成。

  • 社区:Quarkus 拥有一个充满活力的社区并且发展迅速,因此可以快速实施对 Quarkus 本身的任何问题或增强功能。

  • 扩展互操作性: Quarkus 扩展相互集成,从而创建统一的开发体验。

  • 开发者乐趣: Quarkus 开发模式、实时编码和持续测试可提高开发者效率并使开发者更高效。

总结

Stargate 需要提供一个本机 Cassandra 驱动程序一样快的 API。 为了实现这一目标,Stargate 依赖于 Quarkus 的超音速和亚原子能力,以及庞大的扩展生态系统。 Stargate 将继续发展并采用更多 Quarkus。