我正在使用Node + MongoDB API,并且该API已部署在Google Cloud Platform的VM上。当前,数据存储在VM上运行的MongoDB实例中。
运行本地MongoDB实例进行生产是否是一种好习惯?以及提供MongoDB的各种云服务之间如何比较?有哪些好的做法可确保API可扩展?与VM相比,将API作为容器部署到Kubernetes还能提供更好的结果吗?
答案 0 :(得分:1)
对于要扩展的服务,在同一VM实例中同时运行服务器和数据库始终是一个坏主意。让我们考虑一下,如果您的实例再也无法处理发送的通信量了,会发生什么?
起初,您可能只是进行垂直扩展,将更多的CPU和RAM添加到当前正在运行的实例中,是的,在一段时间内还可以。但这实际上更像是一个临时的延长寿命的计划,因为在某些时候,您的实例将不再能够进行垂直扩展。这是水平尺...
必须创建新实例来处理不断增加的流量,您将如何设计新实例?
最佳做法是让一个实例看上去与第一个实例完全相同。因此,需要将服务器设计为无状态服务器。在这种情况下,您的实例将能够在任意数量的计算机上进行扩展。
这就是为什么您不应该在同一实例中运行API前端和数据库。无法缩放。
那么数据库怎么样?这很简单。只需将其放置在另一个VM实例中即可!如果数据库仍然能够处理该请求,则只需在服务器实例之间共享数据库服务器。但是,如果数据库方面存在瓶颈,则可以使用集群左右扩展MongoDB。
如果您没有时间,可以考虑使用Heroku Add-On之类的现成服务(例如mongolab)来为您管理MongoDB实例。
干杯。