【问题标题】:Spring Cloud Function on Google Cloud + SQLGoogle Cloud + SQL 上的 Spring Cloud 函数
【发布时间】:2020-09-25 18:10:05
【问题描述】:

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

  1. Webhook 向 Cloud 函数发送 http 请求。
  2. 云函数连接数据库,创建记录并将消息发送到发布/订阅主题。 来自 pub/sub 主题的消息可能会被其他应用处理,现在没关系。

问题是:

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

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

谢谢

【问题讨论】:

  • 在详细回答之前,你的Cloud SQL数据库是基于哪个数据库引擎的?除了 Java,您还了解其他语言吗? (没问题,只要我在一个样本上工作,只是为了确保为正确的事情工作!)
  • @guillaumeblaquiere 我的 Cloud SQL 数据库基于 PostgreSQL。但这并不重要。真正重要的是 Google Cloud Function 是否是解决我的问题的好选择。

标签: sql spring-boot google-cloud-platform spring-data-jpa google-cloud-functions


【解决方案1】:

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

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

如果 GA 是一项要求,则有 2 个备选方案:

  • 使用 Cloud Run(与 Cloud Functions 非常相似,并且具有“相同的价格”(至少对于您的情况而言))。我wrote an article on this
  • 使用其他语言(Go、Python、Node)

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

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

所以,您的过程似乎很简单。

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

编码愉快!

【讨论】:

  • 感谢您的回复!这完全回答了我的问题。我会尝试 Go 或 Python。
猜你喜欢
  • 1970-01-01
  • 2018-10-13
  • 2022-01-08
  • 1970-01-01
  • 2020-12-30
  • 2020-11-03
  • 2013-01-09
  • 1970-01-01
  • 2018-01-26
相关资源
最近更新 更多