【发布时间】:2021-03-03 19:06:51
【问题描述】:
我们从我们的第一个云运行项目开始。过去我们将 postgres 与 spring boot 结合使用。当应用启动时,我们通过 flyway(类似于 liquibase)运行迁移。
现在使用云运行,由于以下(拐角)情况,这种方法可能会达到极限:
- 多个传入请求(http、消息)路由到并行实例,这些实例在引导容器时可以并行执行相同的迁移。这将导致异常和重试失败消息或 http 错误
- 每次启动容器时,引导程序上的 flyway 检查会额外减慢冷启动时间,如果我们没有“热”实例的持续流量,这可能会很多
将 springboot/flyway 和 postgres 作为跨实例共享的后备数据库是什么好方法?当您用 nosql 数据存储替换 postgres 时会出现类似的问题,我猜您是否想要/需要迁移新结构....
现在我能想到的:
- 在云修订被替换之前迁移 postgres 架构作为部署管道的一部分,这会带来新的挑战(回滚等)
请分享您的想法?期待您的回答? 马塞尔
【问题讨论】:
-
我没有比你更好的idea了,去掉启动检查加快实例启动。请注意,未优化的 Spring Boot 需要很长时间才能启动并准备好服务请求。我wrote an article 来缓解 Cloud Run 冷启动
-
@guillaumeblaquiere 感谢您的回答。我会看看你的文章。
标签: postgresql google-cloud-platform flyway google-cloud-run