首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

整合Akka实现分布式爬虫

之前通过scala实现了多线程的爬虫去爬取某网站的音乐数据,但是为了体现分布式的高并发场景,一方面是可以提升更高的性能,另外一方面也是为了用到Akka的并发。前面提到过,分布式并发哪家厉害,JVM上去找Akka,毕竟,spark的分布式和高并发也是通过Akka实现的。Akka的基础结构主要是Actorsystem和actor组成。先画个脑图,看看整合Akka做分布式的基础结构:

需要解决的问题是:

选定Master节点,作为我们任务的管理节点,包括管理各个worker节点的存活情况等;

各个节点间的网络通信问题,比如:Master节点启动后,worker节点通过发送消息向Master先进行注册,Master节点在读取信息后,将成功的信息返回给worker节点,节点间的消息在网络中传输需要进行序列化;

worker节点得知注册成功消息后,将具体的任务下发,这里当然是开始进行爬取任务。

在Idea中建立了对应的单例和类,remotemessage中封装了所有进程间消息,Master中会定期检测worker状态,worker节点启动后将与master进行通信,然后下发爬取的任务。

实现的结果如下所示,Master节点启动时候监测worker节点没有消息发送过来。

当worker节点起来后,会通过网络发送注册的消息,这时候会发现有一个存活的worker节点,并将消息返回给worker,worker开始拉起爬取任务。数据量大的情况下,上分布式爬任务,效率也会提升很多。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G17PVE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券