我正在使用Service Fabric开发一个web数据爬虫。我已经将爬行过程划分为无状态服务管道。第一个服务加载HTML。(S1)第二个函数解析其中的数据。(S2)第三个将结果保存到DB中并执行其他操作。( S3 ) HTML代码从S1移动到S2,然后移动到S3(根据设计,我需要在第三个服务中使用HTML )。问题是HTML本身就是大量的数据,我不得不设置
[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = 1073741824)]这种设计是反模式吗?我应该在单个服务中使用HTML执行所有工作吗?
发布于 2017-10-02 05:40:34
在将单个任务划分到多个服务时,始终会涉及带宽+延迟成本。因为这是有成本的,所以你需要一个很好的理由来这么做。你似乎没有,或者至少你没有提到过。
无缘无故制造问题是一种反模式。
如果您确实有很好的理由将这项工作划分为服务,那么也许您可以证明发送所有这些HTML的成本是合理的。然而,更有可能的是,您应该选择一个不需要它的不同的服务分解。
发布于 2017-10-02 05:54:58
一个好的设计总是伴随着对数据和需求的理解。S1、S2、S3、S4之间是否存在依赖关系?如果有的话,它们是否需要作为单独的服务。
在服务和HTML之间是否存在依赖关系。这个HTML会被改变吗?如果它改变了,会导致多个服务被更新吗?
您正在做的事情会产生IO成本吗?你花了多少时间来传输,你的过程花费了多少时间。
https://stackoverflow.com/questions/46513636
复制相似问题