前言
用多臺(tái)機(jī)器爬取數(shù)據(jù)時(shí)佳镜,用消息隊(duì)列的方式同步和更新任務(wù)不管是可維護(hù)性還是擴(kuò)展性都是相對較為合適的方案邢羔,RabbitMQ就是一個(gè)比較合適消息隊(duì)列解決方案
安裝
基本上 安裝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的包需要下載官方鏈接熬的,選擇對應(yīng)的版本,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.安裝啟動(dòng)RabbitMQ
sudo apt-get install rabbitmq-server
service rabbitmq-server start
#查看運(yùn)行狀態(tài)
service rabbitmq-server status
4.添加用戶信息糟描,默認(rèn)用戶支持者localhost使用各淀,其他的機(jī)器訪問必須要有賬號密碼的方式
rabbitmqctl add_user pig pigpwd
rabbitmqctl set_user_tags pig administrator
rabbitmqctl set_permissions -p / pig ".*" ".*" ".*"
這樣我們就創(chuàng)建好了一個(gè) 賬號 pig 密碼 pigpwd的賬號
5.從業(yè)務(wù)角度,我這里直接用RPC舉例了,理想的流程是爬蟲客戶端完成一批任務(wù)后然眼,通過rpc告知主機(jī)任務(wù)完成和完成情況,并領(lǐng)取下一批任務(wù)
結(jié)語
RPC服務(wù)和HTTP服務(wù)還是存在很多的不同點(diǎn)的葵腹,根據(jù)資料看來的高每,一般來說RPC效率更高(省了http的若干報(bào)頭和每次請求的連接開銷,成熟的rpc框架對于數(shù)據(jù)丟失践宴,客戶端掛掉這些異常情況的處理比http好)鲸匿,而HTTP開發(fā)迭代會(huì)更快∽杓纾總之带欢,選用什么樣的框架不是按照什么技術(shù)炫酷而決定的(個(gè)人開發(fā)技術(shù)學(xué)習(xí)隨便怎么搞),而是要對整個(gè)項(xiàng)目進(jìn)行完整地評估烤惊,從而在仔細(xì)比較兩種開發(fā)框架對于整個(gè)項(xiàng)目的影響乔煞,最后再?zèng)Q定什么才是最適合這個(gè)項(xiàng)目的。一定不要為了使用RPC而使用柒室,而是要因地制宜渡贾,具體情況具體分析。