消息队列RabbitMQ

前言

用多台机器爬取数据时,用消息队列的方式同步和更新任务不管是可维护性还是扩展性都是相对较为合适的方案,RabbitMQ就是一个比较合适消息队列解决方案

安装

基本上 安装RabbitMQ需要三步,
1.更新RabbitMQ源

#xenial是ubuntu的发行名称 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
#查看运行状态
service rabbitmq-server status

4.添加用户信息,默认用户支持者localhost使用,其他的机器访问必须要有账号密码的方式

rabbitmqctl add_user pig pigpwd
rabbitmqctl set_user_tags pig administrator
rabbitmqctl set_permissions -p / pig ".*" ".*" ".*"

这样我们就创建好了一个 账号 pig 密码 pigpwd的账号
5.从业务角度,我这里直接用RPC举例了,理想的流程是爬虫客户端完成一批任务后,通过rpc告知主机任务完成和完成情况,并领取下一批任务

结语

RPC服务和HTTP服务还是存在很多的不同点的,根据资料看来的,一般来说RPC效率更高(省了http的若干报头和每次请求的连接开销,成熟的rpc框架对于数据丢失,客户端挂掉这些异常情况的处理比http好),而HTTP开发迭代会更快。总之,选用什么样的框架不是按照什么技术炫酷而决定的(个人开发技术学习随便怎么搞),而是要对整个项目进行完整地评估,从而在仔细比较两种开发框架对于整个项目的影响,最后再决定什么才是最适合这个项目的。一定不要为了使用RPC而使用,而是要因地制宜,具体情况具体分析。

你可能感兴趣的:(消息队列RabbitMQ)