一种基于AvroRPC传输的分布式云端并发采集方法与流程

文档序号:12123326阅读:416来源:国知局
一种基于Avro RPC传输的分布式云端并发采集方法与流程

技术领域

本发明涉及计算机应用技术领域,具体地说是一种实用性强、基于Avro RPC传输的分布式云端并发采集方法。



背景技术:

Avro RPC 是一个支持跨语言实现的RPC服务框架。非常轻量级,实现简洁,使用方便,同时也方便使用者进行二次开发,逻辑上该框架分为两层:

1:网络传输层。使用Netty的Nio实现。

2:协议层。可扩展目前支持的数据序列化方式有Avro,JSON,Hessian,Java序列化。 使用者可以注册自己的协议格式及序列化方式。

主要特点:

1:客户端传输层与应用层逻辑分离,传输层主要职责包括创建连接,连接查找与复用,传输数据,接收服务端回复后回调应用层;

2:客户端支持同步调用和异步调用。服务异步化能很好的提高系统吞吐量,建议使用异步调用。为防止异步发送请求过快,客户端增加了“请求流量限制”功能,调用超时管理。

3:服务端有一个协议注册工厂和序列化注册工厂。这样方便针对不同的应用场景来定制服务方式。RPC应该只是服务方式的一种。在分布式的系统架构中,分布式节点之间的通信会存在多种方式,比如MQ的TOP消息,一个消息可以有多个订阅者。因此Avro RPC不仅仅是一个RPC服务框架,还是一个分布式通信的一个基础骨架,提供了很好的扩展性;

4:非常轻量级,性能好,适合二次开发。

在现有的大数据分布式采集过程中,具体地说,尤其涉及在分布式云端并发采集情况下,现有的云端服务器采集效率不高,服务器的并发采集数一般,同时采集的数据传输效率一般,基于此,本发明提供一种软件产品原型云端分享协作方法,以提升并发量和采集效率的采集策略。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强、基于Avro RPC传输的分布式云端并发采集方法。

一种基于Avro RPC传输的分布式云端并发采集方法,包括客户端和服务端两个模块,其中:

在服务端设置有URL存放容器、规则配置容器、计数容器,规则配置容器存放客户端发送的采集规则,规定不同网站的采集策略;计数容器则根据采集策略,按照计数递减的方式推送采集网页实现并发采集功能;最后由URL存放容器存放客户端发送的URL并按照域名进行分组存放;

客户端定期检验服务端状态,查看URL存放容器剩余容量,批量发送待采集网页,批量回收已采集网页,批量发送网页采集规则。

所述URL存放容器通过java提供的ConcurrentHashMap实现的,按照域名作为Map的Key,对应的Value由待下载URL组成的阻塞队列,下载时下载线程根据域名获取域名下的第一个URL进行下载。

URL存放容器存放客户端发送的URL过程为:在URL存放容器中定时检验其URL的存放数量,若URL的存放数量小于存放阈值,则立即将一批待下载的URL发送到服务端,并放入URL容器中;若URL的存放数量大于等于存放阈值则延迟发送一批待下载的URL,直到URL的存放数量小于存放阈值。

所述计数容器将计数结束的任务推送到下载队列,由线程池取该任务URL存放容器的URL进行下载。

所述计数容器通过java提供的ConcurrentHashMap实现,其Key为域名,Value则为计数间隔,计数间隔初始为固定的采集间隔,其单位为毫秒,每秒减1000毫秒,直到计数间隔为0则将此Key分配进入下载队列,采集线程从下载队列中获取Key安排相应的下载任务,同时将计数间隔重置为默认的采集间隔,完成一个下载周期。

计数容器进行定时并发下载的具体过程为:

创建线程池,获取计数容器中计数为0的域名,将计数容器的计数置为-1,同时将域名放入下载队列,将下载任务提交到线程池,等待线程下载;

若是下载线程发现URL存放容器中有下载队列域名的待下载URL,则将URL容器中取出的URL下载,并将计数容器中的计数重置,同时将下载的网页添加到已下载网页队列;

若是下载线程发现URL存放容器中已不存在下载队列域名的待下载URL,则将配置容器的域名置为非激活,同时删除计数容器和URL存放容器中的相关数据。

所述规则配置容器通过java提供的重写CopyOnWriteMap实现的,供计数容器获得任务配置;该配置容器是存放网站下载相关配置的,是网站下载的采集间隔,该采集间隔即默认的采集间隔,作为计数容器重置计数间隔的依据。

在客户端批量发送待采集网页后,服务端接收到该批量发送的URL,激活配置容器中相应域名的采集任务,若配置容器中有该域名的配置规则,则获取相应的采集间隔并存入计数容器中,若配置容器中没有该域名的配置规则,则使用默认的采集间隔并存入计数容器中,之后将批量发送的URL,存入到URL存放容器中。

本发明的一种基于Avro RPC传输的分布式云端并发采集方法,具有以下优点:

本发明提供的一种基于Avro RPC传输的分布式云端并发采集方法,是一种针对分布式情况下,高并发、云端采集的问题提供有效的解决方案;该方法可有效提高云端服务器的效率,增大服务器的并发采集数,优化采集效率;该方法提供的分布式云端并发采集策略,同时使用Avro RPC基于Avro序列化提升了传输效率的同时,提升了采集的并发效率,实用性强,适用范围广泛,易于推广。

附图说明

附图1为本发明的批量发送URL流程图。

附图2为本发明的配置发送流程图。

附图3是本发明的定时采集并回收网页流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

如附图1、图2、图3所示,本发明的一种基于Avro RPC传输的分布式云端并发采集方法,基于Avro RPC传输实现,包括RPC客户端和RPC服务端两个主要模块。服务端包括URL存放容器,规则配置容器,计数容器,其中:

URL存放容器存放客户端发送的URL并按照域名进行分组存放;规则配置容器存放客户端发送的采集规则,规定不同网站的采集策略;计数容器按照计数递减的方式推送可采集网页实现并发采集功能。

客户端实现定期检验服务端状态,查看URL存放容器剩余容量,批量发送待采集网页,批量回收已采集网页,批量发送网页采集规则等功能。

本发明要解决的问题:

1)分布式云端并发采集:将采集任务分布式部署到云端,通过云端一系列的校验、请求、返回等处理实现云端并发采集;

2)URL容器实现:URL容器通过ConcurrentHashMap实现,其内部是由LinkedBlockingQueue组成;

3)计数容器实现:计数容器实现将计数结束的任务推送到下载队列,有线程池取该任务URL容器的URL进行下载;

4)配置容器实现:配置容器通过重写的CopyOnWriteMap实现的,提升其读写并发性能,供计数容器获得任务配置;

5)URL发送与下载网页回传:通过Avro RPC对其进行批量发送与回传,客户端发送要下载的URL,服务端接收并放入URL容器等待下载。客户端对服务端请求已经下载的页面,服务端批量返回已经下载的页面。

在上述方案中,所述URL存放容器内部通过java提供的ConcurrentHashMap实现的,按照域名作为Map的Key,对应的Value是由待下载URL组成的阻塞队列,下载时下载线程根据域名获取域名下的第一个URL进行下载。

所述计数容器同样是通过ConcurrentHashMap实现,其Key为域名,Value则为计数间隔,计数间隔初始为固定的采集间隔(单位毫秒),每秒减1000毫秒,直到计数间隔为0则将此Key分配进入下载队列,采集线程会从下载队列中获取Key安排相应的下载任务,同时将计数间隔重置为默认的采集间隔,完成一个下载周期。

所述配置容器是存放网站下载相关配置的,主要是网站下载的采集间隔,该采集间隔即默认的采集间隔,作为计数容器重置计数间隔的依据。

其整体的流程是:

1.定时检验云端URL容器中URL的存放数量:若URL的存放数量小于某一阈值,则立即将一批待下载的URL发送到云端,并放入URL容器中;若URL的存放数量大于等于某个阈值则延迟发送一批待下载的URL,直到URL的存放数量小于某一阈值。

2.批量发送URL:云端接收到批量发送的URL后,激活配置容器中相应域名的采集任务,若配置容器中有该域名的配置规则,则获取相应的采集间隔并存入计数容器中,若配置容器中没有该域名的配置规则,则使用默认的采集间隔并存入计数容器中,之后将批量发送的URL,存入到URL容器中。

3.发送配置规则信息:支持单条或者批量发送配置规则到云端,并将配置规则存放到配置容器中。

4.计数容器定时并发下载:创建线程池,获取计数容器中计数为0的域名,将计数容器的计数置为-1,同时将域名放入下载队列,将下载任务提交到线程池,等待线程下载。若是下载线程发现URL容器中有下载队列域名的待下载URL,则将URL容器中取出的URL下载,并将计数容器中的计数重置,同时将下载的网页添加到已下载网页队列。若是下载线程发现URL容器中已不存在下载队列域名的待下载URL,则将配置容器的域名置为非激活,同时删除计数容器和URL容器中的相关数据。

5.定时获取已下载网页:后端定时从云端获取已下载网页队列中的网页数据。

上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种基于Avro RPC传输的分布式云端并发采集方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1