1、常见的消息中间件有哪些
目前在市面上比较主流的消息中间件主要有,Kafka、ActiveMQ、RabbitMQ、RocketMQ 等这几种。
消息中间件一般用来在分布式系统中实现异步、削峰、解耦
2、消息模型
消息模型有队列模型和发布订阅模型。
队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以通过消息全量存储至多个队列来解决一条消息被多个消费者消费问题,但是会有数据的冗余。
...大约 4 分钟
目前在市面上比较主流的消息中间件主要有,Kafka、ActiveMQ、RabbitMQ、RocketMQ 等这几种。
消息中间件一般用来在分布式系统中实现异步、削峰、解耦
消息模型有队列模型和发布订阅模型。
队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以通过消息全量存储至多个队列来解决一条消息被多个消费者消费问题,但是会有数据的冗余。
Apache Kafka3.0.0的发布为kafka彻底去掉Zookeeper铺平了道路,Kafka Raft 支持元数据主题的快照以及自我管理,而3.1.0版本在2022.1.24发布,对3.0.0版本又修改了。 下面的部分配置需要开启了KRaft部署模式才会生效。
其中有很多配置项在一般应用场景均不涉及调整,保持默认即可,仅需了解哦。
配置项 | 描述 |
---|---|
broker.id | 此服务器的唯一标识。如果未设置,将自动生成。为了避免 ZooKeeper 生成的服务器标识 和用户配置的服务器标识 之间的冲突,生成的服务器标识 从reserved.broker.max.id + 1 开始。 |
log.dirs | 保存日志数据的目录,逗号分隔列表。如果未设置,则使用 log.dir 中的值。 |
zookeeper.connect | 指定 ZooKeeper 连接字符串,格式为hostname:port,其中 host 和 port 是 ZooKeeper 服务器的主机和端口。要允许在 ZooKeeper 机器关闭时通过其他 ZooKeeper 节点进行连接,还可以指定多个主机hostname1:port1,hostname2:port2,hostname3:port3 。服务器还可以将 ZooKeeper chroot 路径作为其 ZooKeeper 连接字符串的一部分,该连接字符串将其数据放置在全局 ZooKeeper 命名空间中的某个路径下。例如,要给出 chroot 路径, /chroot/path 请将连接字符串给出为hostname1:port1,hostname2:port2,hostname3:port3/chroot/path . |
本小节总结在Kafka集群中最常用的操作,所有的操作都基于Kafka安装目录下的bin/文件夹中的命令行工具
主题可以手动添加,也可以在首次将数据发布到不存在的主题时自动创建主题。(这依赖主题的初始化配置)
主题操作工具是bin/kafka-topics.sh。
> bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic hello-gyd-events \
--partitions 20 --replication-factor 3 --config x=y
消息队列中间件是分布式系统中重要的组件,主要用于流量削锋、系统耦合、异步处理等问题,最终目的是提升系统并发能力,保证数据最终一致性。
目前业内已经出现了许多分布式消息队列中间件,经过不断迭代和应用实践,比较稳定且广泛使用的主要是Kafka
、ActiveMQ
、RabbitMQ
及 RocketMQ
这四种消息队列中间件。
消息队列中间件已经是大型分布式系统架构选型不可缺少的组件。作为一名从业多年的软件从业人员,如果你还不了解消息队列中间件的话,可以赶紧转行了哇!