关于消息中间件activemq的学习以及相关知识总结
慕课学习视频:https://www.imooc.com/video/15278
一、基础知识
1、为什么使用消息中间件?
消息产生者只负责生产消息,消息消费者只负责消费消息,2者不需要都同时连接就可以实现消息交互
2、消息中间件的好处?
(1)解耦 (2)异步 (3)横向扩展 (4)安全可靠 (5)顺序保证
3、JMS相关概念
(1)提供者:实现JMS规范的消息中间件服务器
(2)客户端:发送或接收消息的应用程序
(3)生产者:创建并发送消息的客户端
(4)消费者/订阅者:接收并处理消息的客户端
(5)消息:应用程序之间传递的数据内容
(6)消息模式:消息传递方式,JMS有主题和队列两种模式
a、队列模式:队列中的消息只能被一个消费者消费
b、主题模式:主题中的消息被所有订阅者消费、
(7)JMS编码接口
a、ConnectionFactory:与消息中间件的连接工厂
b、Connection:连接
c、Destination:消息目的地
d、Session:会话(一个单线程的上下文)
e、MessageConsumer:消息消费者(由会话创建)
f、MessageProducer:消息生产者(由会话创建)
g、Message:消息
二、高级扩展
1、为什么要对消息中间件集群?
(1)实现高可用:防止单点故障引起服务中断
(2)实现负载均衡:提升效率
2、集群方式:
(1)客户端集群:多个消费者消费同一个队列
(2)Broker clusters:多个Broker之间同步消息,实现负载均衡
网络连接器:ActiveMQ服务器之间的网络通讯方式,用于服务器透传信息,分为静态连接和动态连接
(3)Master Slave:主从关系,实现高可用
a、共享存储:获取排他锁占用资源的成为Master,等待资源的成为Slave,若Master服务挂了,抢到资源的Slave成为新的Master,挂断的Master重启后若获取不到资源则成为Slave
b、基于复制的LevelDB储存:通过ZooKeeper来选举Master,而Master通过Zookeeper把消息同步给Slave储存,如果Master服务挂了,ZooKeeper会再次选举正常服务节点来当Master
3、三台服务器可以实现相对完美集群方案(1台服务器挂了立马重启并不会中断服务,可2台服务器挂了就会引起服务中断)
三、其他消息中间件
三个主流中间件比较
1、RabbitMQ
2、Kafka