想象一下两种情况:
- 我有一个在 EC2 实例中运行的 Web 服务器,它连接到 RDS(托管数据库服务)中的数据库。
- 我有在同一个 EC2 实例中运行的 Web 服务器和数据库。
由于不在同一台机器上,RDS 中的数据库访问速度是否会变慢?
大约来说,这会增加两者之间的延迟多少毫秒?
这会成为瓶颈吗?
那么其他托管数据库服务(例如 Azure、GCP、Digital Ocean 等)怎么样?它们的行为相同吗?
答案1
托管数据库应该通过网络访问。是的,如果您的数据库在网络上,您的系统确实会有延迟。但这种延迟取决于您正在使用的提供商和网络。当您使用来自不同提供商的服务时,延迟会很高。当您使用单一提供商(例如 aws)的服务时,延迟会降低。当服务器在物理上尽可能接近(例如在单个区域)时,可以实现最佳效果。您需要对这些进行基准测试,亲自看看延迟是否适合您。
另一方面,我从未遇到过这种延迟影响我的应用程序性能的情况。我使用 RDS 实例已经很长时间了,可以说我从未考虑过将数据库放在同一个 EC2 实例中。使用 Go 和 Postgers RDS 实例,我的健康检查 http 请求响应时间不到 20ms。让我告诉你,这是健康检查,也是在检查SELECT 1
数据库上的查询是否成功。