是否可以在 aws EC2 上运行应用程序并在 heroku 的 postgres 上运行它的数据库?
如果是这样,我应该考虑哪些缺点?
由于 heroku 托管在 AWS 上,有没有办法知道运行我的数据库的机器的位置在哪里?
将我的应用程序托管在数据库的同一区域将有助于保持性能?
我想听听一些关于这个的意见,我一直在搜索这个话题,但没有成功。
2 回答
您可以在任何给定时间使用 ... 确定 Heroku DB 的面向公众的位置,traceroute
但不能保证它会留在那个位置,或者不会进行任何内部重新路由。您可能想直接与 Heroku 支持人员讨论如何确保您的 Heroku 数据库实例位于 AWS 应用程序实例的本地,因为这肯定会提高性能。看看您是否可以找出他们在哪个可用区或至少哪个主要区域运行数据库,以及您是否可以将您的数据库实例“固定”到给定的区域/区域。
Amazon 的 RDS 看起来不错,但不支持 PostgreSQL。请继续唠叨他们。
如果性能不是特别重要,我可能会在 AWS 上运行数据库。在 EBS 优化实例上使用预置 IOPS EBS 卷的 raid10,您将获得不错的性能(但价格非常高);或者,您可以使用非崩溃安全的基于 ssd 的实例存储服务器,并依靠复制和备份来确保数据安全。
我对 Heroku PostgreSQL 没有任何经验。一般来说,当然您可以在 Amazon EC2 上运行自己的服务并使用 Heroku 的托管数据库服务。
缺点可能是
- 没有人保证,Heroku 只使用 AWS,您可能无法确定云中的物理 Heroku 服务位置,因此您将不得不处理网络延迟
- 除了您的外部流量费用之外,您还必须为数据库流量付费,除非您与同一地区同一可用区中的服务器通信
我的建议(不知道有关 Heroku 优点的任何细节)
如果您不想自己运行数据库服务器,请查看 Amazon RDS。
我在 AWS 上运行了大约 70 个服务器实例,包括 RDS 和 EC2 一年多,我无法想象有任何更简单的方法来保持你的东西运行