簡體   English   中英

是否可以在Google App Engine Flexible中運行Postgres?

[英]Is it possible to run Postgres in Google App Engine Flexible?

是否可以在自定義Google App Engine Flexible容器中運行postgres(本質上是非HTTP服務)? 還是會被迫使用Google的Cloud SQL解決方案?

TL; DR :您可以這樣做,但不能這樣做。 最好將持久化數據存儲外部化。

是的,可以在自定義Google App Engine Flexible容器中將PostgreSQL數據庫作為微服務(在Google Cloud Platform中簡稱為“服務”)運行。 但是,這提出了另一個重要的問題,即為什么要在容器內運行SQL數據庫。 這是一個冒險的解決方案,除非您完全確定自己在做什么以及如何進行管理。

典型的容器編排基於無狀態服務,這意味着它們不打算存儲持久性數據。 這種容器有時確實具有某種形式的存儲,例如用於緩存或用戶會話信息的NoSQL數據庫。 此數據不是永久性的,在敏捷的容器化應用程序環境中重新啟動或銷毀實例時可能會丟失數據。 PostgreSQL數據庫被用作有狀態服務,不適合上述模型。 將這樣的數據庫放入容器中時,訪問某些共享數據目錄時可能會遇到諸如數據損壞或直接並發之類的問題。 另外,在Google App Engine Flexible中,無法添加共享的永久磁盤,這些卷將附加到實例並與它們一起銷毀。 像您提到的Cloud SQL一樣,更安全的解決方案是將SQL數據庫保留在外部持久存儲中。 有許多博客帖子和文章,闡述這一問題的無狀態/有狀態的服務,如這一個

應該提到的是,如果要在本地環境中使用容器或進行測試/開發(並且您不是在尋找數據庫的持久狀態),那么將PostgreSQL放入容器中應該是可以的。 此外,如果您設計了一種在實例之間拆分數據的特殊方法,則可以很好地工作,就像本文中的MySQL服務器一樣。 因此,再次考慮將PostgreSQL數據庫放入容器的想法,特別是要考慮到安全地將此類服務外部化的選項太多。

只是作為旁注,您沒有被迫使用Cloud SQL。 該數據庫可以托管在本地的另一個雲提供商Compute Engine上,也可以由第三方供應商進行管理。 如果將其托管在Compute Engine中,則應用程序可以使用Compute Engine實例的內部IP與同一項目中的數據庫進行通信。 使用Cloud Launcher,您可以將PostgreSQL和其他流行的數據庫快速部署到Compute Engine。 查看這些Google文檔 ,以獲取有關使用第三方數據庫的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM