0

我正在使用 Service Fabric 开发 Web 数据爬虫。我已经将一个爬行过程划分为无状态服务管道。第一个服务加载 HTML。(S1) 第二个从中解析数据。(S2) 第三个将结果保存到 DB 并执行附加操作。(S3) HTML 代码从 S1 移动到 S2,而不是 S3(根据设计,我需要在第三个服务中使用 HTML)。HTML本身数据量大,我被迫设置的问题

[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = 1073741824)]

这种设计是反模式吗?我应该在单一服务中使用 HTML 执行所有工作吗?

4

2 回答 2

3

在将单个任务划分为多个服务时,总是会涉及带宽 + 延迟成本。因为有成本,所以你需要一个很好的理由去做。你似乎没有,或者至少你没有提到一个。

无缘无故制造问题是一种反模式。

如果您确实有充分的理由将这项工作划分为服务,那么也许您可以证明发送所有这些 HTML 的成本是合理的。但是,您更有可能选择不需要它的不同服务分解。

于 2017-10-01T21:40:34.257 回答
1

一个好的设计总是伴随着对数据和需求的良好理解。S1、S2、S3、S4 之间是否存在依赖关系?如果需要它们是单独的服务。

服务和 HTML 之间是否存在依赖关系。这个 HTML 是否会发生变化,如果它发生变化会导致多个服务被更新?

你在做什么有 IO 成本?您花费了多少时间来传输以及您的过程花费了多少时间。

于 2017-10-01T21:54:58.160 回答