目录
消息队列
产生背景
消息队列:指数据在一个容器中,从容器中一端传递到另一端过程
消息:指的数据,只不过这个这个数据存在一定流动状态
队列:指的容器,可以存储数据,这个容器具备FIFO(先进先出)特性
公共容器的特点:
1.公共性:各个程序都可以与之对接
2.FIFO特性:先进先出
3.具备高效的并发能力:能够承载海量数据
4.具备一定的容错能力:比如支持重新读取消息方案
消息队列介绍
常见的消息队列产品
MQ:message queue消息队列
activeMQ: 出现时期比较早的一款消息队列的中间件产品,在早期使用人群是非常多,目前整个社区活跃度严重下降,使用人群基本很少
rabbitMQ: 此款是目前使用人群比较多的一款消息队列的中间件的产品,社区活跃度比较高,主要是应用传统业务领域中
rocketMQ: 是阿里推出的一款消息队列的中间件的产品,目前主要是在阿里系环境中使用,目前支持的客户端比较少,主要是Java中应用较多
Kafka: Apache旗下的顶级开源消息,是一款消息队列的中间件产品,项目来源于领英,是大数据体系中目前为止最为常用的一款消息队列产品
应用场景
消息队列的应用场景:
1.应用解耦合
2.异步处理
3.限流削峰
4.消息驱动系统
消息队列的消息模型
在Java中, 为了能够集成消息队列的产品, 专门提供了一个消息队列的协议: JMS(Java Message Server) java消息服务
消息队列中两个角色:生产者(producer)和消费者(consumer)
生产者:生产/发送消息到消息队列中
消费者:从消息队列中获取消息
在JMS规范中,专门规定了两种消息消费类型:
1.点对点消费类型:一条消息最终只能被一个消费所消费,微信聊天的私聊
2.发布订阅消费模型:指一条消息最终被多个消费者所消费,微信聊天的群聊
Kafka的基本介绍
简介
Kafka是一款消息队列中间件产品,来源于领英公司,后期贡献给了Apache,目前是Apache旗下的顶级开源项目,采用语言是Scala
Kafka的特点:
1.可靠性:Kafka集群是分布式的,有多副本机制,数据可以自动复制
2.可扩展性:Kafka集群可以灵活的调整,在线扩容
3.耐用性:Kafka数据保存在磁盘上,数据有多副本机制,数据持久化,一定程度上防止数据丢失
4.高性能:Kafka可以存储海量的数据,虽然是使用磁盘进行存储,但是Kafka有各种优化手段(例如:磁盘的顺序读写,零拷贝等)提高数据的读写速度(吞吐量)