- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我正在研究使用 Azure Service Fabric 及其可靠服务来实现我的问题域架构的可能性。
问题领域:我目前正在研究分布式大规模网络爬行架构,涉及数十个并行代理,这些代理应该爬行网络服务器并下载资源以进一步建立索引。
我发现了有用的学术论文,描述了基于 Azure 的分布式网络爬行架构:Link to .pdf paper我正在尝试基于此设计实现并尝试原型(prototype)。
所以基本的高级设计外观如下图所示:
想法:中央网络抓取系统引擎(进一步 - CWCE)在无限循环中运行,直到程序中止并获取包含要抓取的页面 URL 的服务总线队列消息。然后,CWCE 组件检查此 URL 的主机名,并查询代理注册器 SQL 数据库(如果给定主机名的事件代理已存在)。如果不是,CWCE 将执行以下过程之一:
如果事件代理数量 (A_alive) 等于最大值(代理上限,由应用程序管理员提供),CWCE 将等待,直到 A_alive < 最大值
如果 A_alive < Max,CWCE 会尝试创建新代理并为其分配主机名。 (代理随后在 SQL Registrar 数据库中注册)。
每个代理都在自己的分区(URL 主机名,例如:example.com)上运行,并仅递归地爬网该主机名的页面,同时发现外部主机名 URL 并将其添加到服务总线队列以进行其他代理处理。
这种架构的好处是代理的水平扩展和爬行效率的近线性工作负载增加。
但是,我对 Azure Service Fabric 非常陌生,因此想问一下这个 PaaS 层是否能够解决这个问题?主要问题:
是否可以通过可编程代码手动创建新的网络爬网代理实例,并使用 Azure Service Fabric 向它们传递主机名参数? (也许使用 FabricClient 类来操作集群和创建服务实例?)
哪种 ASF 编程模型最适合这种并行长时间运行的代理场景? 无状态服务、有状态服务还是参与者模型?每个代理可能作为长时间运行的任务运行,因为它递归地抓取特定的主机名 URL 并监听队列。
是否可以在应用程序运行时控制和更改最大事件代理数的上限?
是否可以使用无限循环无状态服务 CWCE 组件来连续监听队列消息以生成新代理?
我不确定所选的 ASF PaaS 层是否是此分布式网络爬行系统用例的最佳解决方案,因此您的见解对我来说非常有值(value)。任何有用的资源链接也会非常有益。
最佳答案
Service Fabric 将允许您实现您想要的架构。
- Would it be possible to manually create new web crawling agent instances through the programmable code and pass them hostname parameter using Azure Service Fabric? (Maybe using FabricClient class for manipulating cluster and creating service instances?)
是的。您将开发并部署到 Service Fabric 的服务将是 ServiceType
。服务类型实际上并不运行,相反,您可以从 ServiceType 创建实际的服务,并对其进行命名。单个服务(例如服务A)将具有多个实例,以允许扩展和可用性。您可以以编程方式创建和删除给定类型的服务并向它们传递参数,以便每个服务都知道要抓取哪些 URL。查看示例here .
- Which ASF programming model fits this parallel long-running agents scenario the best? Stateless services, stateful services or Actor Model? Each agent might run as long-running task, since it recursively crawls specific hostname URLs and listens for the queue.
我会选择无状态服务,因为它们在资源利用方面是最高效的,并且最容易管理(不需要存储状态和管理状态、分区和副本)。您唯一需要考虑的是,每个服务最终都会崩溃并重新启动,因此您需要将当前爬行位置存储在永久存储中,而不是存储在内存中。
- Would it be possible to control and change this upper bound limit of Max alive agents during runtime of application?
是的。 Service Fabric 服务在节点(虚拟机)和 Azure 中运行,它们由虚拟机规模集管理。您可以轻松地从 VMSS 添加和删除节点,这将允许您调整所需的总计算和内存能力,并且实际服务数量已由您控制,如第 1 点中指定的那样。
- Would it be possible to have infinite-loop stateless service CWCE component which continuously listens for the queue messages in order to spawn up new agents?
绝对是的。消息驱动的微服务非常常见。从技术上讲,它不是无限循环,而是具有总线通信监听器的服务。我找到了一个here作为引用,但我不知道它是否已准备好生产
关于azure - 使用 Azure Service Fabric 手动控制和生成作业处理代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61463806/
我刚刚偶然发现Fabric并且文档并没有真正说明它是如何工作的。 我有根据的猜测是您需要在客户端和服务器端都安装它。 Python 代码存储在客户端,并在命令运行时通过 Fabric 的有线协议(pr
以下是我对 Hyperledger Fabric 系统的理解。如果有任何不正确的地方,请告诉我。 1) 所以我们有同行(背书人、 anchor 人、将军(拥有分类帐的人)、排序人)。此外,当我们设置结
我部署了一个持久性级别为 Silver 的全新 Service Fabric 集群,fabric:/System/InfrastructureService/FE 服务运行状况不佳,并出现以下错误:
我对使用 Fabric 很感兴趣,api 在未连接到互联网时如何工作? 我发现 firebase(与此工具类似的工具)会将数据存储在本地,然后对服务器进行批量更新。但是,超过 72 小时的任何内容都不
Fabric CA Server 和 Fabric CA Client 的功能是什么? Fabric CA 服务器和 Fabric CA 客户端的角色是什么? 谢谢 最佳答案 Fabric CA 提供
我想在不同的环境中使用相同的应用程序,我在 documentation 中找到了它, Apps with Multiple Environments Let’s say you have an app
我目前正在尝试学习 Hyperledger Fabric,我设法了解了如何设置网络(Orderer、Peers 等),但现在是链代码的一部分。 但是,我发现两个不同的 git 存储库(据我所知)可用于
我在 following this tutorial 时遇到错误 cannot convert from 'System.Fabric.StatelessServiceContext' to 'Sys
在我没有改变任何东西之前它可以工作,但今天我收到了这个错误,这里是我的 gradle buildscript { repositories { mavenCentral() maven
Fabric beta 手动分发有时不会发送邀请电子邮件,即使在它向该人显示“已邀请”的网页中也是如此。如果我点击重新发送邀请,那个人就会收到。我的 QA 团队人员必须一直来找我重新发送邀请。我知道
默认情况下,Hyperledger Fabric 在将许多证书保存到区 block 链之前将其存储在交易中。无论如何或任何想法/技术来最小化区 block 链中的交易大小? 任何想法都非常有用! 最佳
我是 Hyperledger Fabric 的新手。我正在阅读 Fabric 的文档最新版本,但我不清楚 Fabric 的共识。 Fabric 使用的共识是什么?它是如何工作的?请解释。 最佳答案 我
我是 Hyperledger Fabric 的新手,我正在尝试在本地向服务器注册 Fabric 客户端。这是我到目前为止所做的。 go get -u github.com/hyperledger/fa
Hyperledger Fabric 中链和状态数据库的主要区别是什么。我很困惑它们是否相同。 最佳答案 Hyperledger Fabric 中有两个“存储”数据的地方: 账本 状态数据库 账本是真
我尝试将图像上传到分类帐中(将图像转换为 base64 字符串并将其作为交易中的 arg 传递)。 当我发送大小为 30 kb 的图像时,它工作正常,但是对于 100 kb 的图像,我的交易失败了,指
我正在尝试在初始化 Fabric CA 服务器后注册管理员: fabric-ca-server init -b “admin:adminpw” 并启动 CA 服务器: fabric-ca-serve
我正在使用来自 super 账本fabric firstsample的cryptogen工具,它未在 crypto-config/peerorganisation/org1.example.com/m
我离开了一家公司,用于访问 Fabric 的电子邮件已被删除。 现在我在同一家公司工作,他们用相同的句柄重新创建了电子邮件。我不知道这是否是问题所在,但我没有收到任何包含报告的电子邮件,也没有收到 B
如果我有 1 个组织 orgA ,在这个组织下我有 2 个用户:user1和 user2 , 在 orgA 中也有 1 个对等点,让我们称之为 peer0 . 现在想象一下,user1的证书在orgA
全部, 据我所知,在 Hyperledger Fabric 环境中,orderer 将消息传递给 peer。如果有离线对等。恢复到 ON-LINE 时,消息如何传递给对端? orderer如何知道pe
我是一名优秀的程序员,十分优秀!