sql - Google Cloud + SQL 上的 Spring Cloud 函数
问题描述
我正在尝试在 Google Cloud 平台上构建一个网络应用程序,我想让它尽可能便宜。我不希望我的应用程序负载很高,所以我不想运行一个 Compute 实例,因为它大部分时间都是空闲的。所以我决定尝试云功能。场景:
- Webhook 向 Cloud 函数发送 http 请求。
- 云功能连接到数据库,创建记录并将消息发送到发布/订阅主题。来自发布/订阅主题的消息可能由另一个应用程序处理,现在没关系。
问题是:
a) 这是 Google Cloud 功能连接到 SQL 实例的有效场景吗?我试图找到一些连接到数据库的函数的示例,但什么也没有。但是 GCP 文档解释了如何从函数连接到 GCP SQL 实例。
b) 为此目的使用 Java 作为运行时和 Spring Boot 框架是个好主意吗?我不想在纯 JDBC 上编写代码,但是使用 jpa 库可能会导致大量的冷启动时间。
谢谢
解决方案
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)。对于简单的开发,它是测试新事物的好地方。而且,由于体积小,任何不懂语言的人都可以轻松维护。
快乐编码!
推荐阅读
- powershell - O365 PShell 类似的收件人搜索不会使用 Where {$_.RecipientAddress -like 返回正确的结果
- amazon-ec2 - Amazon 启动模板 - 更新的 AMI
- c - 在某些情况下,我的程序似乎无法分隔单词
- vue.js - 使用 ESLint 和 Prettier 在 Visual Studio Code 中保存时无法获得正确的自动格式化
- python - 如何从 Tensorflow 中的其他张量中找到张量中的值
- android - 在适配器中设置 GradientDrawable 颜色
- xamarin - 使用 Children.Add 时的 Xamarin TabbedPage 性能
- r - 有效地对未知数量的行求和并创建新行(在 R 中)
- javascript - 如果元素在另一个对象数组中,则删除包含对象数组内的数组的对象属性
- html - HTML 如果类段落包含字符串 do