Crawlab是基于Golang的分布式爬蟲管理平臺,支持Python、NodeJS、Go、Java、PHP等多種編程語言以及多種爬蟲框架,分為Docker、直接部署、Kubernetes三種安裝方式!
軟件介紹
Crawlab架構(gòu):
Crawlab的架構(gòu)包括了一個主節(jié)點(Master Node)和多個工作節(jié)點(Worker Node),以及負責通信和數(shù)據(jù)儲存的Redis和MongoDB數(shù)據(jù)庫。
前端應(yīng)用向主節(jié)點請求數(shù)據(jù),主節(jié)點通過MongoDB和Redis來執(zhí)行任務(wù)派發(fā)調(diào)度以及部署,工作節(jié)點收到任務(wù)之后,開始執(zhí)行爬蟲任務(wù),并將任務(wù)結(jié)果儲存到MongoDB。架構(gòu)相對于v0.3.0之前的Celery版本有所精簡,去除了不必要的節(jié)點監(jiān)控模塊Flower,節(jié)點監(jiān)控主要由Redis完成。
主節(jié)點
主節(jié)點是整個Crawlab架構(gòu)的核心,屬于Crawlab的中控系統(tǒng)。主節(jié)點負責與前端應(yīng)用進行通信,并通過Redis將爬蟲任務(wù)派發(fā)給工作節(jié)點。同時,主節(jié)點會同步(部署)爬蟲給工作節(jié)點,通過Redis和MongoDB的GridFS。
工作節(jié)點
工作節(jié)點的主要功能是執(zhí)行爬蟲任務(wù)和儲存抓取數(shù)據(jù)與日志,并且通過Redis的PubSub跟主節(jié)點通信。通過增加工作節(jié)點數(shù)量,Crawlab可以做到橫向擴展,不同的爬蟲任務(wù)可以分配到不同的節(jié)點上執(zhí)行。
MongoDB
MongoDB是Crawlab的運行數(shù)據(jù)庫,儲存有節(jié)點、爬蟲、任務(wù)、定時任務(wù)等數(shù)據(jù),另外GridFS文件儲存方式是主節(jié)點儲存爬蟲文件并同步到工作節(jié)點的中間媒介。
Redis
Redis是非常受歡迎的Key-Value數(shù)據(jù)庫,在Crawlab中主要實現(xiàn)節(jié)點間數(shù)據(jù)通信的功能。例如,節(jié)點會將自己信息通過HSET儲存在Redis的nodes哈希列表中,主節(jié)點根據(jù)哈希列表來判斷在線節(jié)點。
前端
前端是一個基于Vue-Element-Admin的單頁應(yīng)用。其中重用了很多Element-UI的控件來支持相應(yīng)的展示。