首页 > 解决方案 > Google Cloud + SQL 上的 Spring Cloud 函数

问题描述

我正在尝试在 Google Cloud 平台上构建一个网络应用程序,我想让它尽可能便宜。我不希望我的应用程序负载很高,所以我不想运行一个 Compute 实例,因为它大部分时间都是空闲的。所以我决定尝试云功能。场景:

  1. Webhook 向 Cloud 函数发送 http 请求。
  2. 云功能连接到数据库,创建记录并将消息发送到发布/订阅主题。来自发布/订阅主题的消息可能由另一个应用程序处理,现在没关系。

问题是:

a) 这是 Google Cloud 功能连接到 SQL 实例的有效场景吗?我试图找到一些连接到数据库的函数的示例,但什么也没有。但是 GCP 文档解释了如何从函数连接到 GCP SQL 实例。

b) 为此目的使用 Java 作为运行时和 Spring Boot 框架是个好主意吗?我不想在纯 JDBC 上编写代码,但是使用 jpa 库可能会导致大量的冷启动时间。

谢谢

标签: sqlspring-bootgoogle-cloud-platformspring-data-jpagoogle-cloud-functions

解决方案


Cloud Functions 是单一用途的。您的过程显然是单一目的。Cloud Functions 是正确的选择。

但是,Java Cloud Functions 是一个非常新鲜的测试版(只有 10 天)。因此,Google Cloud 测试版是可靠的,但如果您在 GA 中快速寻找服务,Java 不是正确的选择。

如果需要 GA,则有 2 个备选方案:

  • 使用 Cloud Run(与 Cloud Functions 非常相似,并且具有“相同的价格”(至少对于您的情况而言))。我为此写了一篇文章
  • 使用另一种语言(Go、Python、Node)

不,您关于冷启动的问题是真实的。我是 Spring Boot 的粉丝,并且因为冷启动,我从 Java 切换到 Python(然后切换到 Go,我不喜欢动态类型语言)。我的第一个痛苦是在 Cloud Run 上,因为我是一名 Alpha 测试人员,并且我写了这篇文章

Spring 是 CPU 和内存的怪物。冷启动太可怕了。易于使用的框架的权衡。今天,你可以在 Cloud Run 中设置 2CPU 或设置一个 min instance,如果你想尽量减少这个冷启动,但它不是免费的!

所以,你的过程看起来很简单。

  • “仅此”是否需要像 Spring 这样的强大框架?原始 SQL 运行良好,JPA 并不总是正确的解决方案!
  • 您是否考虑过 micronaut 替代方案?注释和行为非常接近 Spring,但没有动态加载,因此可以快速启动。
  • 你考虑过其他语言吗?Java 可以很快(启动和处理),但在任何情况下,它都会消耗内存(对于同一个 hello world,Go 中的 250Mb VS 15Mb)。对于简单的开发,它是测试新事物的好地方。而且,由于体积小,任何不懂语言的人都可以轻松维护。

快乐编码!


推荐阅读