0

我有一个将数据保存到 MongoDB 数据库的 Node 应用程序。大部分数据都在手头,例如用于User收集的数据。但是,应用程序也有集合的概念Website,对于这个集合,数据必须先从某个地方下载,然后才能保存。

我想知道如何在我的应用程序中分离上述问题。User在服务层,我有和之类的东西Website。它们提供基本的 CRUD 操作。在完全相反的一端,有一个用户界面,用户可以在其中输入网站 URL。在这个 UI 和将数据持久化到 MongoDB(服务层)的应用程序之间的某个地方,应用程序必须向这个 URL 发出请求以收集一些数据。获取数据后,Website服务将持久保存它。

潜在地,一次输入的 URL 可能有数千个,我不想因为负载问题而关闭处理 Web 服务器的 Node 进程。因此,我认为将工作抽象到不同的进程并使用某种消息传递总线将应用程序连接在一起是一个好主意。

4

1 回答 1

0

看来您已经正确地分解了系统——并且已经在持久性“服务”层创建了这种分离——但我会通过转向分布式系统架构(即 SOA / 微服务)来进一步实现这种分离。

构建分布式系统的第一步是识别满足应用程序总体业务目标所需的每个功能,并将它们映射到服务端点。然后,每个松散耦合的服务端点将服务于一个小的隔离工作/功能,并将充当该业务目标的抽象。

通过继续将职责分离到服务端点,您可以为可伸缩性、吞吐量、容错性、安全性、部署等创建小的独立边界。

例如-RESTful 来说-,这可能意味着用户(例如/users/{userid})和网站(例如/websites/{websiteid|url})的服务端点......也许还有一个额外的资源来维护两者之间的关系/链接(例如/users/{userid}/userwebsites : {websiteid:1234,url:blah.com)。

这种分离意味着您可以独立处理网站处理责任,这将带来许多好处——除了处理不同的负载特性之外——。

于 2013-06-24T17:15:32.600 回答