Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 是否可以在谷歌应用程序引擎中运行Postgres?_Google App Engine_Google Cloud Platform - Fatal编程技术网

Google app engine 是否可以在谷歌应用程序引擎中运行Postgres?

Google app engine 是否可以在谷歌应用程序引擎中运行Postgres?,google-app-engine,google-cloud-platform,Google App Engine,Google Cloud Platform,是否可以在定制的Google App Engine灵活容器中运行postgres(本质上是非HTTP服务)?还是我将被迫使用谷歌的云SQL解决方案?TL;DR:你可以这样做,但不要这样做。最好将持久数据存储外部化 是的,可以将PostgreSQL数据库作为微服务(在Google云平台中简称为“服务”)运行在定制的Google App Engine灵活容器中。然而,这提出了另一个重要问题,即为什么要在容器中运行SQL数据库。这是一个危险的解决方案,除非你完全确定自己在做什么以及如何管理 典型的容器

是否可以在定制的Google App Engine灵活容器中运行postgres(本质上是非HTTP服务)?还是我将被迫使用谷歌的云SQL解决方案?

TL;DR:你可以这样做,但不要这样做。最好将持久数据存储外部化

是的,可以将PostgreSQL数据库作为微服务(在Google云平台中简称为“服务”)运行在定制的Google App Engine灵活容器中。然而,这提出了另一个重要问题,即为什么要在容器中运行SQL数据库。这是一个危险的解决方案,除非你完全确定自己在做什么以及如何管理

典型的容器编排基于无状态服务,这意味着它们不打算存储持久数据。这种容器有时确实有某种形式的存储,比如用于缓存或用户会话信息的NoSQL数据库。这些数据不是持久性的,在敏捷的容器化应用程序环境中重新启动或销毁实例时可能会丢失。PostgreSQL数据库被用作有状态服务,不适合上述模型。将这样的数据库放入容器中,在访问某个共享数据目录时可能会遇到数据损坏或直接并发等问题。此外,在Google App Engine Flexible中,不可能添加共享持久磁盘,卷会连接到实例并与实例一起销毁。更安全的解决方案是将SQL数据库保存在外部、持久的存储中,正如您提到的云SQL。有许多博客文章和文章详细阐述了无状态/有状态服务的这个问题,如

应该提到的是,如果您要在本地环境中使用容器或用于测试/开发(并且您不需要寻找数据库的持久状态),那么将PostgreSQL放在容器中应该是完全可以的。此外,如果您设计了一种特殊的方法来在实例之间分割数据,这可能会很好地工作,就像他们在中使用MySQL服务器时所做的那样。因此,再一次,将PostgreSQL数据库放入容器中的想法应该仔细考虑,特别是这样一个服务的安全外部化有很多选择

另外,作为补充说明,您不必被迫使用云SQL。数据库可以托管在Compute Engine、另一个云提供商、本地或由第三方供应商管理。在将其托管在计算引擎中的情况下,应用程序能够使用计算引擎实例的内部IP与同一项目内的数据库通信。使用,您可以快速地将PostgreSQL和其他流行数据库部署到计算引擎。有关使用第三方数据库的更多信息,请查看这些