赞
踩
MQ
全称是Message Queue(消息队列)
,是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信。
优势:
1)应用解耦:系统的耦合性越高,容错性就越低,可维护性就越低,使用MQ
使得应用间解耦,提升容错性和可维护性。
2)异步提速: 提升用户体验和系统吞吐量(单位时间内处理请求的数目)。
3)削锋填谷:使用了MQ
之后,限制消费消息的速度为2000
,这样一来,高峰期产生的数据势必会被积压在 MQ
中,高峰 就被“削”掉了。
但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000
,直到消费完积压的消息,这就叫做“填谷”。使用MQ
后,可以提高系统稳定性。
劣势:
1)系统的可用性降低:引入的外部依赖越多,系统稳定性越差,一旦MQ
宕机,会对业务系统造成影响。如何保证MQ
的高可用?
2)系统复杂度提高:MQ
的加入增加了系统的复杂度,以前是系统间同步的远程调用,现在是通过MQ进行一部调用,怎么处理消息丢失情况?如何保证消息传递的顺序性。
3)一致性问题:A
系统发给BCD
系统,若其中一个系统处理数据失败,如何保证消息数据处理的一致性问题。
MQ
产品常见的MQ
产品,例如:Rabbit MQ、Rocket MQ、ActiveMQ、KafKa
等,要根据具体业务选择对应的MQ
产品。
RabbitMQ | ActiveMQ | RocketMQ | Kafka | |
公司/社区 | Rabbit | Apache | 阿里 | Apache |
开发语言 | Erlang | java | java | Scala&java |
协议支持 | AMQP、XMPP、SMTP | openWire,SMTOMP、REST | 自定义 | 自定义,社区封装了http协议 |
客户端支持语言 | 官方支持Erlang、java等 | Java、C、C++、python等 | Java、C++ | 官方支持Java、社区产出多种API |
单机吞吐量 | 万级 | 万级 | 十万级 | 十万级 |
消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |
功能特性 | 并发能力强、性能极好、延迟低,社区活跃 | 老牌产品、成熟度高、文档多 | MQ功能比较完备,扩张性好 | 主要应用在大数据领域 |
RabbitMQ
安装包准备rabbiytmq
和erlang
版本对应关系地址: https://www.rabbitmq.com/which-erlang.html
安装rabbitmq
之前,需要安装 erlang
,本文均使用rpm
文件进行安装,rabbitmq
版本是3.8.30
,erlang
版本是23.3.4.11
。
RabbitMq
下载地址: https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm
后面这个el8
,代表是Centos8
才能安装的,高版本的RabbitMQ
有些不支持Centos7,但是本文用来演示的是Centos7
的系统环境。
erlang
下载地址: https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.30/rabbitmq-server-3.8.30-1.el7.noarch.rpm
https://pan.baidu.com/s/1rp2jznSDKwdP9Jy5-4Lqtw?pwd=xe80
xe80
在root
目录下创建一个 rabbitmq
的文件夹用来存放安装包,再进入这个文件夹,然后将下载好的安装包上传到对应的文件夹下。
[root@rancher ~]# mkdir rabbitmq
[root@rancher ~]# ls
anaconda-ks.cfg kuboard-spray-data rabbitmq
[root@rancher ~]# cd rabbitmq
[root@rancher rabbitmq]# ls
erlang-23.3.4.11-1.el7.x86_64.rpm rabbitmq-server-3.8.30-1.el7.noarch.rpm
先安装erlang
[root@rancher rabbitmq]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
在RabiitMQ
安装过程中需要依赖socat
插件 再执行以下命令安装该插件。
[root@rancher rabbitmq]# yum install socat -y
最后再安装RabbitMq
[root@rancher rabbitmq]# rpm -ivh rabbitmq-server-3.8.30-1.el7.noarch.rpm
RabbitMQ
完成安装步骤之后,系统会自动帮我们注册为系统服务,服务名为rabbitmq-server
,用此命令来启动RabbitMq
服务。
[root@rancher rabbitmq]# systemctl start rabbitmq-server
执行下面命令可以查看到RabbitMq
的服务状态。
[root@rancher rabbitmq]# systemctl status rabbitmq-server
执行以下命令将RabbitMQ
的服务设置为开启自启动。
[root@rancher rabbitmq]# systemctl enable rabbitmq-server
Web
管理界面默认情况下,rabbitmq
没有安装web
端的客户端软件,需要安装才可以访问Web
管理界面。
[root@rancher rabbitmq]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@rancher:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@rancher...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
要想远程访问web
管理界面还需要开放防火墙的 5672
和 15672
两个端口,可以依次执行下面两条命令开放,最后再重启一下防火墙,使配合生效。
// 开放5672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=15672/tcp --permanent
success
// 开放15672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=5672/tcp --permanent
// 开放25672端口
[root@rancher rabbitmq]# firewall-cmd --zone=public --add-port=25672/tcp --permanent
success
// 重启防火墙
[root@rancher rabbitmq]# firewall-cmd --reload
success
然后我们就可以直接通过 主机地址:15672
就可以访问远程的web
管理界面。
此时还是没办法进行登陆的,rabbitmq
有一个默认的账号密码guest
,但该情况仅限于本机localhost
进行访问,所以需要添加一个远程登录的用户
admin
密码为 123456
这是可以自定义的。[root@rancher rabbitmq]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
设置用户角色:角色有四种:
administrator:
可以登录控制台、查看所有信息、并对rabbitmq
进行管理monToring:
监控者;登录控制台,查看所有信息policymaker:
策略制定者;登录控制台指定策略managment:
普通管理员;登录控制[root@rancher rabbitmq]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
设置用户权限:用户 user_admin
具有/vhost1
这个 virtual host
中所有资源的配置、写、读权限,相当于超级管理员权限。
[root@rancher rabbitmq]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
其他命令
# 修改密码
rabbitmqctl change_ password 用户名 新密码
# 删除用户
rabbitmqctl delete_user 用户名
# 查看用户清单
rabbitmqctl list_users
完成后我们就可以用 账号: admin
密码: 123456
进行登陆。
到此,在centos7
下安装rabbitmq
就已经完成。同时我们还可以通过docker
来安装rabbitmq
。
参考:https://www.bilibili.com/video/BV15k4y1k7Ep/
改变你能改变的,接受你不能改变的,关注公众号:程序员康康,一起成长,共同进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。