微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何模拟“无服务器”Cloud SQL?

如何解决如何模拟“无服务器”Cloud SQL?

问题:Cloud sql 实例无限期运行,托管成本高昂。

目标:既节省资金又不影响数据库可用性。

已经快四年了,Google Cloud 还没有满足这个已经在 AWS 上通过他们的 aurora RDS 实现的功能请求。

由于自动缩放为零的按需 Cloud sql 似乎不会很快出现,以下策略是否有效?

  1. 拥有 Cloud sql 实例、一个婴儿和一个爸爸。它们遵循主/从副本原则,并带有扭曲。宝宝 实例很小,只有很少的 vcpu 和低内存,它总是运行,但是 这样做很便宜。然而,Papa 实例价格昂贵,vcpu 高,高 内存,但仅在需要时运行。
  2. 首先,只有 Baby Cloud sql 实例正在运行,因此它是接受读/写的主实例。 Papa Cloud sql 实例未运行。
  3. 由于我使用的是标准应用引擎 将在没有流量的情况下自动缩放到零,安排一个 cron 作业 如果不存在应用引擎实例,则每 10 分钟检查一次。在这种情况下, 该应用程序没有流量。如果不是这种情况,则会启动 Papa Cloud sql 实例。一旦启动,Papa 实例 成为接受读/写的主节点,而 Baby 实例 成为只能读取的从副本。
  4. 如果 cron 作业检测到应用引擎运行的实例为零,这意味着没有流量。因此,Papa Cloud sql 实例是 停止,Baby Cloud sql 副本提升为主节点,可以接受读/写。
  5. 通过这种方式,昂贵的 Papa 实例按需运行。如果有交通 当 Papa 实例停止或重启时出现尖峰,Baby 实例仍将能够响应请求。

此策略可确保昂贵的 Papa Cloud sql 实例仅在有流量的情况下运行。 这个 Baby-Papa 动态是否可以在 Google Cloud 上使用?

解决方法

Cloud SQL 有一个 Admin API,可用于以这种方式操作您的 Cloud SQL 实例。您可以使用 Cloud Scheduler 触发 Cloud Function 来构建您所描述的内容,该 Firestore 使用 API 来启动和停止实例,甚至将它们提升/降级为主控。

然而,这可能是个坏主意。这些操作可能需要几分钟才能完成,并且会显着增加请求的冷启动时间。此外,SQL 服务器更喜欢长时间运行是有原因的——它们使用资源来缓存和优化查询以提高性能。启动、停止和调整实例大小可能会导致您失去这些优势。

最好考虑一下 - 您真的需要关系数据库吗?如果没有,最好使用 Memorystore 之类的东西,这是一种无服务器产品。

如果您确定确实需要关系数据库,您能否针对较小的 Cloud SQL 实例优化您的使用?您是否可以使用上面列出的 {{3}} 或 Firestore 缓存查询,或者改为使用我上面描述的服务来定时导出结果,这对您的应用来说更容易使用?

在没有流量的情况下启动和停止 Cloud SQL 实例会更好吗?如果您的流量基于某些可预测的时间,您可以安排您的实例在这些时间段的开始和结束时调整大小。

最后,如果确实可以选择成本,您可以在 GCE 实例上运行自己的 SQL 服务器。这意味着您必须自己进行几乎所有的管理(安装、更新、维护等),但这样会更便宜。

与尝试硬塞式非无服务器基础架构以匹配无服务器工作负载相比,所有这些可能都是功能性更强的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。