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