看到这里,大家应该可以发现,RocketMQ 的设计和 Kafka 真的很像!
2.3 RabbitMQRabbitMQ 2007 年发布 , 是使用 Erlang 语言开发的开源消息队列系统 , 基于 AMQP 协议来实现 。
AMQP 的主要特征是面向消息、队列、路由、可靠性、安全 。AMQP 协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景 , 对性能和吞吐量的要求还在其次 。
重要概念
- 信道(Channel):消息读写等操作在信道中进行,客户端可以建立多个信道 , 每个信道代表一个会话任务 。
- 交换器(Exchange):接收消息,按照路由规则将消息路由到一个或者多个队列;如果路由不到 , 或者返回给生产者,或者直接丢弃 。
- 路由键(RoutingKey):生产者将消息发送给交换器的时候,会发送一个 RoutingKey,用来指定路由规则,这样交换器就知道把消息发送到哪个队列 。
- 绑定(Binding):交换器和消息队列之间的虚拟连接,绑定中可以包含一个或者多个 RoutingKey 。
- 生产者是连接到 Server,建立一个连接,开启一个信道 。
- 生产者声明交换器和队列,设置相关属性 , 并通过路由键将交换器和队列进行绑定 。
- 消费者也需要进行建立连接,开启信道等操作,便于接收消息 。
- 生产者发送消息,发送到服务端中的虚拟主机 。
- 虚拟主机中的交换器根据路由键选择路由规则,发送到不同的消息队列中 。
- 订阅了消息队列的消费者就可以获取到消息,进行消费 。
文章插图
图片
常用交换器RabbitMQ 常用的交换器类型有 direct、topic、fanout、headers 四种,具体的使用方法,可以参考官网:
官网入口:https://www.rabbitmq.com/getstarted.html
- 1.
文章插图
图片
03 消息队列对比
文章插图
图片
3.1 Kafka优点:
- 高吞吐、低延迟:Kafka 最大的特点就是收发消息非常快,Kafka 每秒可以处理几十万条消息,它的最低延迟只有几毫秒;
- 高伸缩性:每个主题(topic)包含多个分区(partition),主题中的分区可以分布在不同的主机(broker)中;
- 高稳定性:Kafka 是分布式的,一个数据多个副本,某个节点宕机,Kafka 集群能够正常工作;
- 持久性、可靠性、可回溯:Kafka 能够允许数据的持久化存储,消息被持久化到磁盘,并支持数据备份防止数据丢失,支持消息回溯;
- 消息有序:通过控制能够保证所有消息被消费且仅被消费一次;
- 有优秀的第三方 Kafka Web 管理界面 Kafka-Manager,在日志领域比较成熟,被多家公司和多个开源项目使用 。
- Kafka 单机超过 64 个队列/分区,Load 会发生明显的飙高现象 , 队列越多,load 越高 , 发送消息响应时间变长;
- 不支持消息路由,不支持延迟发送,不支持消息重试;
- 社区更新较慢 。
- 高吞吐:借鉴 Kafka 的设计,单一队列百万消息的堆积能力;
- 高伸缩性:灵活的分布式横向扩展部署架构,整体架构其实和 kafka 很像;
- 高容错性:通过ACK机制,保证消息一定能正常消费;
- 持久化、可回溯:消息可以持久化到磁盘中,支持消息回溯;
- 消息有序:在一个队列中可靠的先进先出(FIFO)和严格的顺序传递;
推荐阅读
- RabbitMQ与消息限流策略的完美结合
- 36岁宋茜跟小5岁欧豪隐婚,消息八九不离十?工作室回应了
- 0713陈楚生传来新消息,蔡国庆恭喜魏哲鸣,林志颖李玖哲再度重逢
- 刮油最狠的四种减肥蔬菜 怎么减脂肪最快最有效的方法
- 能咋得发表微博,微博设置特别关注的人的消息怎样才能及时收到怎么设置
- 有四种药酒是传自古代的 你知道他们的名字吗
- 小辣椒手机如何设置锁屏消息
- 微信验证消息能咋得看全
- qq互发消息怎么计数
- DNS消息:如何阅读查询和响应消息