云端内容采集(一种()基于AvroRPC传输的分布式云端并发采集方法)
优采云 发布时间: 2021-12-26 15:22云端内容采集(一种()基于AvroRPC传输的分布式云端并发采集方法)
一种基于Avro RPG传输的分布式云并发采集方法[0001]
技术领域
[0002] 本发明涉及计算机应用技术领域,具体是一种基于Avro RPC传输的实用性强的分布式云端并发采集方法。背景技术
[0003] Avro RPC是一种支持跨语言实现的RPC服务框架。非常轻巧,实现简单,使用方便,也方便用户进行二次开发。从逻辑上讲,框架分为两层: 1:网络传输层。使用 Netty 的 N1 实现。[00〇4]2:协议层。可扩展 目前支持的数据序列化方法可用。用户可以注册自己的协议格式和序列化方法。
[0005] 主要特点: 1:客户端传输层与应用层逻辑分离。传输层的主要职责包括连接创建、连接搜索和复用、数据传输、收到服务器回复后回调应用层;2:客户端支持同步调用和异步调用。服务的异步化可以提高系统吞吐量。建议使用异步调用。为了防止异步发送请求过快,客户端增加了“请求流量限制”功能,调用超时管理。
[0006] 3:服务器具有协议注册工厂和序列化注册工厂。这有利于针对不同的应用场景定制服务方式。RPC 应该只是服务方法之一。在分布式系统架构中,分布式节点之间的通信方式有很多种,比如MQ的TOP消息。一条消息可以有多个订阅者。因此,Avro RPC 不仅是一个 RPC 服务框架,也是分布式通信的基本骨架,提供了良好的扩展性;4:非常轻巧,性能好,适合二次开发。
[0007] 在现有的大数据分布式采集过程中,具体而言,在云端分布式并发采集的情况下,现有云服务器采集效率不高,服务器并发采集数一般,且并发集合的数量是平均的。数据传输效率一般。基于此,本发明提供了一种软件产品原型的云端共享协作方法,以提高并发采集
策略和采集
效率。发明内容
[0008] 本发明的技术任务是针对上述不足,提供一种实用性强的、基于Avro RPC传输的分布式云端并发采集方法。[0009] 一种基于Avro RPC传输的分布式云并发采集方法,包括客户端和服务器两个模块,其中:URL存储容器、规则配置容器、计数容器、规则配置设置在server 容器存储了客户端发送的采集规则,规定了不同网站的采集策略;计数容器根据采集策略递减计数推送采集网页,实现并发采集功能。最后,URL存储容器存储客户端发送的URL并跟随域名组存储;客户端定期检查服务器的状态,检查URL存储容器的剩余容量,批量发送需要采集的网页,批量回收采集的网页,批量发送网页采集规则。[0〇1〇] URL存储容器由java提供的ConcurrentHashMap实现。域名作为Map的Key,对应的Value是一个由要下载的URL组成的阻塞队列。下载时,下载线程根据域名URL获取域名下的第一个进行下载。批量发送需要采集
的网页,批量回收采集
的网页,批量发送网页采集
规则。[0〇1〇] URL存储容器由java提供的ConcurrentHashMap实现。域名作为Map的Key,对应的Value是一个由要下载的URL组成的阻塞队列。下载时,下载线程根据域名URL获取域名下的第一个进行下载。批量发送需要采集
的网页,批量回收采集
的网页,批量发送网页采集
规则。[0〇1〇] URL存储容器由java提供的ConcurrentHashMap实现。域名作为Map的Key,对应的Value是一个由要下载的URL组成的阻塞队列。下载时,下载线程根据域名URL获取域名下的第一个进行下载。
[0011] URL存储容器存储客户端发送的URL:定期查看URL存储容器中URL的存储数量。如果URL的存储数量小于存储阈值,立即发送一批待下载的URL到服务器。, 并将其放入 URL 容器中;如果URL的存储数量大于或等于存储阈值,则延迟发送一批待下载的URL,直到URL的存储数量小于存储阈值。
[0012] 计数容器将计数结束的任务推送到下载队列,线程池获取任务URL存储容器的URL进行下载。 [〇〇13] 计数容器由java提供的ConcurrentHashMap实现。它的Key是一个域名,Value是一个计数区间。计数间隔初始为固定的采集间隔,单位为毫秒,每秒减去1000毫秒,直到计数间隔为0,则将Key分配到下载队列,采集
线程从下载中获取Key queue 来安排相应的下载任务,同时将计数间隔重置为默认的采集
间隔,完成一个下载周期。
[0014] 计数容器进行定时并发下载的具体过程为:创建线程池,获取计数容器中计数为0的域名,将计数容器的计数设置为-1,放置同时下载队列中的域名,提交下载任务到线程池等待线程下载;如果下载线程发现URL存储容器中有下载队列域名,则下载从URL容器中取出的URL,重置计数容器中的计数,同时下载网页添加到下载网页队列;如果下载线程发现URL存储容器中不存在下载队列域名,则将配置容器的域名设置为inactive,并删除计数容器和URL存储容器中的相关数据。[0〇15]规则配置容器通过重写java提供的CopyOnWriteMap实现,用于计数容器获取任务配置;配置容器存放网站下载相关的配置,为网站下载的采集间隔,采集间隔为默认采集间隔,作为重置计数容器计数间隔的依据。
[0016] 客户端批量发送待采集的网页后,服务器接收批量发送的URL,启动配置容器中对应域名的采集任务,如果配置容器中的域名有配置规则配置容器,获取对应的采集间隔,并存放在计数容器中。如果配置容器中没有域名的配置规则,则使用默认的采集
间隔存储在计数容器中,然后将批量处理的URL存储在URL存储容器中。[0〇17]本发明的一种基于Avro RPC传输的分布式云并发采集方法具有以下优点:本发明提供的一种基于Avro RPC传输的分布式云端并发采集方法,为分布式相同类型的情况下,并发问题和75T端电表采集提供了有效的解决方案;该方法可以有效提高75T端服务器的效率,增加服务器并发采集数,优化采集效率;该方法提供的分布式云并发采集
策略,在使用基于Avro序列化的Avro RPC提高传输效率的同时,提高了采集
的并发效率,实用性强,适用范围广,易于推广。
[0019] 图 图2是本发明的配置发送流程图。
[0020] 图 图3是本发明网页的定时采集和恢复的流程图。详细说明
[0021] 下面结合附图和具体实施例对本发明作进一步说明。
[0022] 如图1、图2、图3所示,本发明的一种基于Avro RPC传输的分布式云端并发采集方法是基于Avro RPC传输实现的,包括RPC客户端和RPC服务器的两个主要模块。服务器包括URL存储容器、规则配置容器和计数容器。其中:URL存储容器存储客户端发送的URL,并按照域名分组存储;规则配置容器存储客户端发送的采集规则,指定不同网站的采集策略;计数容器以递减计数的方式推送采集网页,实现并发采集功能。
[0024] 本发明要解决的问题:1)分布式云并发采集:将采集任务分布式部署到云端,通过一系列云端验证、请求、返回等处理实现云端并发采集; 2) URL容器实现:URL容器由Concurrent HashMap实现,其内部由LinkedBlockingQueue组成;3) 计数容器实现:计数容器将计数完成的任务推送到下载队列中,有线程池来获取任务下载URL容器的URL;4) 配置容器实现:配置容器通过重写的CopyOnWriteMap实现,提高了计数容器的读写并发性能,以获取任务配置;5) URL 发送和下载网页 Postback:通过 Avro RPC 批量发送和回传给他们。客户端发送要下载的URL,服务器接收后放入URL容器进行下载。客户端向服务器请求下载的页面,服务器批量返回下载的页面。
[0025] 上述方案中,URL存储容器是在java提供的ConcurrentHashMap内部实现的。域名作为Map的Key,对应的Vaue是一个由要下载的URL组成的阻塞队列。下载时的下载线程是根据域名获取域名下的第一个URL进行下载。
[0026] 计数容器也由ConcurrentHashMap实现,其Key为域名,Value为计数区间。计数间隔最初是固定的采集间隔(以毫秒为单位),每秒减去1000毫秒。这个Key分配给下载队列,采集线程会从下载队列中获取Key来安排相应的下载任务,同时将计数间隔重置为默认的采集间隔,完成一个下载周期。
[0027] 配置容器存储与网站下载相关的配置,主要是网站下载的采集间隔。采集间隔为默认采集间隔,作为重置计数容器的计数间隔的依据。[0〇28] 整体流程为:1. 定期查看云端URL容器中存储的URL数量:如果存储的URL数量小于一定阈值,立即发送一批待下载的URL到云端,并放入 URL 容器中;如果存储的URL数大于等于某个阈值,则延迟发送一批待下载的URL,直到存储的URL数小于某个阈值。[0〇29]2.批量发送URL:云端收到批量发送的URL后,激活配置容器中对应域名的采集任务。如果配置容器中有域名的配置规则,则获取对应的采集间隔,并将其存储在计数容器中。如果配置容器中的域名没有配置规则,则使用默认的采集
间隔存储在计数容器中,然后将批量处理的URL存储在URL容器中。
[0030] 3. 发送配置规则信息:支持单次或批量发送配置规则到云端,并将配置规则存储在配置容器中。
[0031]4.计数容器的定时器和并发下载:创建线程池,获取计数为0的计数容器的域名,将计数容器的计数设置为-1,将域放入同时在下载队列中命名,将下载任务提交到线程池等待线程下载。如果下载线程发现URL容器中有下载队列域名的URL要下载,则下载从URL容器中取出的URL,重新计数容器中的计数,并将下载的网页添加到下载的网页队列。如果下载线程发现URL容器中不再存在下载队列域名,则将配置容器的域名设置为inactive,同时删除计数容器和URL容器中的相关数据。[〇〇32] 5. 定时获取下载网页:后台定时从云端获取下载网页队列中的网页数据。[〇〇33] 以上具体实施方式仅为本发明的具体情况。本发明的专利保护范围包括但不限于上述具体实施方式,以及根据本发明的任何基于Avro RPC传输的分布式云端并发采集方法,本领域普通技术人员做出的任何适当更改或替换。本发明权利要求的技术领域,均属于本发明的专利保护范围。[〇〇32] 5. 定时获取下载网页:后台定时从云端获取下载网页队列中的网页数据。[〇〇33] 以上具体实施方式仅为本发明的具体情况。本发明的专利保护范围包括但不限于上述具体实施方式,以及根据本发明的任何基于Avro RPC传输的分布式云端并发采集方法,本领域普通技术人员做出的任何适当更改或替换。本发明权利要求的技术领域,均属于本发明的专利保护范围。[〇〇32] 5. 定时获取下载网页:后台定时从云端获取下载网页队列中的网页数据。[〇〇33] 以上具体实施方式仅为本发明的具体情况。本发明的专利保护范围包括但不限于上述具体实施方式,以及根据本发明的任何基于Avro RPC传输的分布式云端并发采集方法,本领域普通技术人员做出的任何适当更改或替换。本发明权利要求的技术领域,均属于本发明的专利保护范围。[〇〇33] 以上具体实施方式仅为本发明的具体情况。本发明的专利保护范围包括但不限于上述具体实施方式,以及根据本发明的任何基于Avro RPC传输的分布式云端并发采集方法,本领域普通技术人员做出的任何适当更改或替换。本发明权利要求的技术领域,均属于本发明的专利保护范围。[〇〇33] 以上具体实施方式仅为本发明的具体情况。本发明的专利保护范围包括但不限于上述具体实施方式,以及根据本发明的任何基于Avro RPC传输的分布式云端并发采集方法,本领域普通技术人员做出的任何适当更改或替换。本发明权利要求的技术领域,均属于本发明的专利保护范围。