- 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/
似乎有很多方法可以在 Azure 中自动使用 PowerShell。由于 ARM 模板是最新的,Azure 中的其他 PowerShell 选项是否已过时?这些工具/脚本之间有什么区别: Azure
我正在开发一个将托管在 Azure 中的 Web API。我想使用 Azure 诊断将错误记录到 Azure 表存储中。在经典门户中,我可以将日志配置为转到 Azure 表存储。 Classic Po
Azure 文件存储事件可以触发 Azure WebJob 或 Azure Function 吗? 例如,在文件夹“/todo/”中创建文件时。 最佳答案 我们目前没有任何 Azure 文件绑定(bi
我需要创建一个逻辑应用程序,我的要求是,我需要从 azure data Lake Gen2 文件夹迁移 json 文件,并根据某些值需要将该 json 转换为 xml,然后将其发送到 SQL。 因此,
我使用 VS Code 创建了 1 个 node.js 和 1 个 java Azure Function 当我使用 VS Code 将这两个函数部署到 Azure 时,我最终获得了这么多 Azure
收集 Azure 诊断数据时,暂存槽是否也会将诊断数据发送到 WadPerformanceCounters 表? 如果是这样,我该如何关闭它?或者在阅读诊断信息时如何区分暂存/生产。 我不想显示有关我
您好,我是 Azure 的新手。我有 VS 2012 和 Azure SDK 2.1,当我使用模拟器运行我的 Web 应用程序时一切正常。但是当我在 azure 上部署时出现错误消息: Could n
我很难区分 Azure 订阅和 Azure 租户有何不同?我尝试使用示例来弄清楚,但每次我得出的结论是它们在某种程度上是相同的?如果租户是组织在注册 Microsoft 云服务时接收并拥有的 Azur
如果我想在 Azure Insights 中设置自定义指标集合,并以(近)实时的方式可视化其中一些指标,并查看聚合的历史数据,我应该使用 Azure Metrics Explorer 还是 Azure
我想了解具有以下配置的 Azure 数据工厂 (ADF) 的现实示例/用例: Azure 集成运行时 (AIR) 默认值 自托管集成运行时(SHIR) 其他问题: 这两种配置(AIR 和 SHIR)是
请参阅下面来自 Azure 服务总线的指标。想要识别请求数量中的背景噪音|流量较低时的响应。假设振荡请求| session 中 amqp 握手的响应是潜在的。只是不明白这是什么类型的握手?从总线接收的
此问题与 Azure 事件中心和 Azure 服务总线之间的区别无关。 问题如下: 如果您将Azure Events Hub添加到您的应用程序中,那么您会注意到它依赖于Azure Service Bu
这两个事情是完全不同的,还是它们能完成的事情大致相同/相似? 最佳答案 Azure 辅助角色是“应用程序场”中您自己的一组虚拟机。您可以以分布式方式在它们上运行任何代码。通常,您编写业务代码以在这些服
我目前正在使用 Windows Azure 虚拟机来运行 RStudio, 我的虚拟机是 Windows Server R2 2012,它是 Azure 上的一项附加服务。 我还有一个 Azure 存
我们正在寻找托管一个网站(一些 css、js、一个 html 文件,但不是 aspx、一个通用处理程序)。 我们部署为: 1) Azure 网站 2) Azure 云服务 两种解决方案都有效。但有一个
我想从 Azure 表创建 blob。 AzCopy 支持此功能,但我找不到任何说明数据移动 API 也支持它的文档。此选项可用吗? https://azure.microsoft.com/en-us
This article表示 Azure 订阅所有者有权访问订阅中的所有资源。但是,要访问 Azure 数据库,必须是数据库中的用户,或者是 Azure Admin AD 组的成员。 无论 SQL 安
我尝试使用以下代码将 XML 文件上传到 Azure FTP 服务器: https://www.c-sharpcorner.com/article/upload-and-download-files-
除了 Azure 服务总线使用主题而 Azure 事件中心基于事件 - Azure 事件中心和 Azure 服务总线之间是否有任何根本区别? 对我来说,事件和消息之间没有真正的区别,因为两者只是不同类
我有一个通过虚拟网络网关连接到 Azure 虚拟网络的 Windows VPN 客户端。目标#1 是使用其内部 IP 地址连接到我的虚拟机。这有效。 第二个目标是使用其内部计算机名称进行连接(因为 I
我是一名优秀的程序员,十分优秀!