前言
用多臺機器爬取數(shù)據(jù)時,用消息隊列的方式同步和更新任務不管是可維護性還是擴展性都是相對較為合適的方案,RabbitMQ就是一個比較合適消息隊列解決方案
安裝
基本上 安裝RabbitMQ需要三步,
1.更新RabbitMQ源
#xenial是ubuntu的發(fā)行名稱 xenial for Ubuntu 16.04, artful for Ubuntu 17.10
echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list
wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
2.安裝erlang
erlang的包需要下載官方鏈接,選擇對應的版本,ubuntu是 安裝deb文件
apt-get install libwxgtk3.0
apt-get install libsctp1
sudo dpkg -i esl-erlang_19.3.6-1~ubuntu~trusty_amd64.deb
3.安裝啟動RabbitMQ
sudo apt-get install rabbitmq-server
service rabbitmq-server start
#查看運行狀態(tài)
service rabbitmq-server status
4.添加用戶信息,默認用戶支持者localhost使用,其他的機器訪問必須要有賬號密碼的方式
rabbitmqctl add_user pig pigpwd
rabbitmqctl set_user_tags pig administrator
rabbitmqctl set_permissions -p / pig ".*" ".*" ".*"
這樣我們就創(chuàng)建好了一個 賬號 pig 密碼 pigpwd的賬號
5.從業(yè)務角度,我這里直接用RPC舉例了,理想的流程是爬蟲客戶端完成一批任務后,通過rpc告知主機任務完成和完成情況,并領取下一批任務
結語
RPC服務和HTTP服務還是存在很多的不同點的,根據(jù)資料看來的,一般來說RPC效率更高(省了http的若干報頭和每次請求的連接開銷,成熟的rpc框架對于數(shù)據(jù)丟失,客戶端掛掉這些異常情況的處理比http好),而HTTP開發(fā)迭代會更快。總之,選用什么樣的框架不是按照什么技術炫酷而決定的(個人開發(fā)技術學習隨便怎么搞),而是要對整個項目進行完整地評估,從而在仔細比較兩種開發(fā)框架對于整個項目的影響,最后再決定什么才是最適合這個項目的。一定不要為了使用RPC而使用,而是要因地制宜,具體情況具體分析。