Ease-Monitor
是本人大学在毕业前尝试编写的一个分布式监控系统,目的是从开发的角度去了解一个监控系统的方方面面(实际上我只解决的一小部分问题-_-!),所以还是仅供学习使用
其主要包含了数据采集、数据转发、数据存储、异常判定及告警、数据可视化五个功能模块。其架构图如下:
其后端完全使用Python
实现,前端的数据可视化和平台管理基于Vue.js
实现
后端项目地址
前端项目地址
在上篇使用Scrapy爬取知乎用户信息我们编写了一个单机的爬虫,这篇记录了使用Scrapy-Redis
将其重写,使其具备分布式抓取的能力,并使用Docker
部署到我们两台云server
上
为什么要分布式,显然单机的爬虫无论在机器的带宽还是ip
等在爬取的时候都会有一定的限制,为了提高我们爬取的效率,我们需要编写一个可以在多台机器上同时运行的爬虫,在其爬取状态同步的同时,对我们想要的信息进行爬取。而Scrapy-Redis 是github
上的一个开源项目。
为什么使用Docker
,说到Docker
可能很多人老早就听说过其在江湖上的传说,在我写这篇文章之前,也仅仅是对其有个模糊的了解,但是我昨天晚上在部署我的Project
到我的两台服务器上的时候,我被基础环境的配置给弄疯了,之前我在阿里云服务器上安装了Py3
,勉强可以支撑我之前的需求。
但是昨晚在安装Scrapy
的时候,为了装一个Package
,我几乎要把Py3、OpenSSL
等组件重新安装一遍,在痛苦的挣扎之后,我想到了Docker
(也许是瞄到了官方的例子中的Dockerfile
),果不其然简单的google
下就看到了大量的部署Scrapy
的案例。
简单的看了下官方文档,没一会就将我的项目部署到了两台服务器上并正常运行,这太惊艳了!
花了大概三天时间阅读了这篇500 line or less|A Web Crawler With asyncio Coroutines
这应该就是真正的深入浅出吧,不仅对python3.4 coroutine进行了详细的阐述,而且源码写的很清晰(主要逻辑大概一共的是300-400行代码,写的很Pythonic)
就放一下自己的学习记录和整理,方便以后查阅和理解,感兴趣的同学强烈建议去看原文。
题记:2017第一弹~
本站是先收集了中国所有的公有IP地址段,众所周知中国的IP地址是由APNIC(亚太网络信息中心)分配的,APNIC专门负责亚洲和太平洋地区的IP地址和AS号分配,受到 IANA(互联网地址分配机构) 的管理。所以本站先从http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
下载到本地作为src.html
这里将所有的中国公网IP地址信息都进行提取过滤
具体生成器函数如下:
1 | def net_catch(): |
src.html里面包含了世界上所有的公网网段地址,形如:
1 | apnic|LK|ipv4|203.189.184.0|2048|20060515|allocated |
上述条目由如下字段构成:
分配机构 | 国家代码|ip版本| 网段 | 包含ip地址数量 | 分配时间 | 状态
我们只需要找到所有以apnic|CN|ipv4
开始的行,并以int(32-log(float(cnt))/log(2)
这个计算网段的掩码即可,并生成网段地址和掩码