文章目录
1,MQ 的基本概念
1.1 MQ 概述 (全称 Message Queue ,在消息的传输过程中保存消息的容器,多用于分布式系统)
1.1.1 MQ 的优势
应用解耦,异步提速,并发削峰
应用解耦:把有关联的内部系统采用异步消息通知的方式传递,提高系统的容错性和可维护性。
异步提速:不必要的操作可使用异步的方式执行,减低业务反应的时间, 提升用户体验和系统吞吐量。
并发削峰:提高系统的稳定性,避免高并发情况的服务瘫痪
1.1.2 MQ 的问题/劣势
- 系统可用性低,越多的服务依赖 MQ , 系统的稳定性越低。需要保证 MQ 的高可用
- 系统复杂度提高,需要考虑消息的消息丢失与重复消费,及消息的传递的顺序性。
1.1.3 常见的 MQ 技术
比较特征 | RabbitMQ | ActiveMQ | RocketMQ | Kafka |
公司/社区 | Rabbit | Apache | Aibaba | Apache |
产品开发语言 | Erlang | Java | Java | Scala/Java |
协议支持 | AMQP,XMPP,SMTP,STOMP | OpenWire,STOMP,REST,XMPP,AMQP | 自定义 | 自定义协议,社区封装了http协议支持 |
客户端支持语言 | 官方支持Erlang,Java,Ruby等,社区产出多种API,几乎支持所有语言 | Java,C,C++,Python,PHP,Perl,.net等 | Java , C++不成熟 | 官方支持Java,社区产出多种API,如php ,Python |
单机吞吐量 | 万级(其次) | 万级(最差) | 十万级(最好) | 十万级(次之) |
消息延迟 | 微秒级 | 毫秒级 | 毫秒级 | 毫秒以内 |
功能特征 | 并发能力强,性能极其好,延时低,社区活跃,管理界面丰富 | 老牌产品,成熟度高,文档较多 | MQ功能比较完备,扩展性比较佳 | 只支持只要的MQ功能 |
1.1.4 RabbitMQ 安装
1.1.4.1 上传必要安装包
erlang18.31.el7.centos.x86_64.rpm — erlang的rpm库
socat1.7.3.25.el7.lux.x86_64.rpm – socat
rabbitmqserver3.6.51.noarch.rpm – rabbitmq
1.1.4.2 安装Erlang
# Erlang
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
1.1.4.3 安装 RabbitMQ
#socat
rpm -ivh socat-1.7.3.2-1.1.el7.x86_64.rpm
#rabbitmq
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
1.1.4.4 修改用户登录与连接心跳检测,注意修改
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
# 修改:loopback_users 中的 <<"guest">>,只保留guest (用于用户登录)
将loopback_users 中的 <<“guest”>> , 只保留 guest
1.1.4.4 安装管理界面插件
- 启动服务(停止,重启,状态查看)
# 启动
service rabbitmq-server start
# 重启
service rabbitmq-server restart
# 停止
service rabbitmq-server stop
# 查看 rabbitmq 状态
service rabbitmq-server status
# 换作以下可在当时看到启动log
rabbitmq-server start/restart/stop/status
- 开启管理界面
rabbitmq-plugins enable rabbitmq_management
- 查看服务有没有启动 ( Rabbitmq默认端口是 15672)
#
lsof -i:15672
#
netstat -tnlp | grep 15672
- 创建管理用户
# 进入到获取的路径中
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.14
# 进入到sbin目录找到rabbitmqctl文件
cd sbin
# 新增用户admin,密码也为admin
rabbitmqctl add_user admin admin
# 也可以使用rabbitmqctl命令更改密码
abbitmqctl change_password admin admin
# 将admin加入到管理员组
rabbitmqctl set_user_tags admin administrator
# 查看用户列表
rabbitmqctl list_users
- 访问 RabbitMQ Management
http://你的ip地址:15672/ ---- 输入账号admin 密码 admin
1.1.5 管理页面创建用户
角色说明:
1、超级管理员(Administrator)
可登陆管理员控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2、监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq 节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3、策略制定者(policymaker)
可登录管理控制台,同时可以对policy进行管理。但无法查看节点的相关信息
4、普通管理者(management)
仅可登录管理控制台,无法查看节点信息,也无法对策略进行管理。
5、其他
无法登录管理控制台,通常就是普通的生产者和消费者。
1.1.6 设置 Virtual Hosts 权限
Virtual Hosts 配置
很像数据库的概念并且可以指定用户对库和表等操作的权限。
RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual
Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个
VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当
于数据库的db。Virtual Name一般以/开头。
创建 Virtual Hosts
设置 Virtual Hosts 权限
1.1.7 卸载 Rabbitmq
删除 rabbitmq
# 停止服务
rabbitmqctl app_stop
yum list | grep rabbitmq
# 卸载
yum -y remove rabbitmq-server.noarch
删除erlang
yum list | grep erlang
yum -y remove erlang-*
yum remove erlang.x86_64
删除lib文件
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq