我目前正在开发一个nodejs + mongodb应用程序。到目前为止,我的mongo数据库托管在MongoDB Atlas(在AWS EC2服务器上)和本地的nodejs上。 我想将mongo数据库保留在云上,因为我不想处理所有数据备份以及您自己处理数据库时可能遇到的各种问题。
问题是我的nodejs API的某些操作最多可以对数据库进行 15个以上的查询。我在本地计算机和托管mongodb的EC2服务器之间的 ping 是 50ms 。因此,对于我的某些操作,15 queries * 50ms = 750ms
由于这种延迟而浪费了,使整个API调用的时间长达 800ms 。
我尝试在本地安装和运行数据库,由于没有任何延迟,因此响应时间非常好。
我启动了一个免费的EC2实例,并向我的MongoDB Atlas服务器发送了ping命令,延迟为〜20ms ,我认为它仍然很高(上一个示例为15*20=300ms
)。
我不太了解AWS,但是,是否可以让运行nodejs服务器的EC2和运行mongodb的EC2都位于同一网络上,这样我就可以具有极低的延迟(<1毫秒)?
如果没有,要摆脱这种延迟并改善响应时间,w 您是否建议我在同一EC2实例上托管nodejs + mongodb ?
如果没有,我该怎么办?
答案 0 :(得分:1)
AWS VPC(虚拟私有云)是您的解决方案。
对于设置,您可以在离您(或最终用户)最近的区域中创建VPC,然后可以在此VPC中设置EC2实例。它们(EC2实例)将在其网络/ VPC中的任何事物之间建立非常快速的连接。
通常,您不希望可以从Internet访问EC2数据库实例,而只希望从您自己的VPC内的实例访问。为此,您将需要在VPC中至少定义一个专用子网。
对于其他情况,您将/可能需要互联网连接。因此,您将需要在VPC中定义一个公共子网。公共子网只是将Internet网关附加到路由表的子网。
我无法详细介绍,因为AWS VPC配置是一个巨大的话题,但是上述解决方案可以使用。它将具有低延迟,并且将是安全的。实际上,AWS有一个VPC向导将为您进行设置。这是为您提供的VPC向导中选项的屏幕截图。
我希望我在这里提供了一些清晰的信息,正如我所说,AWS和VPC的主题很大,因此完全感到不知所措是正常的。