[走进消息队列|青训营笔记]
这是我参加「第五届青训营」伴学笔记的第九天
前言
记录青训营后端专场的学习过程,有不足的地方还请大佬指正。
由于本人基础比较薄弱,所以笔记尽可能的详细。
该文章开始的版本将以简述课程知识点为主,等后面实践有自己的理解后会编辑添加自己的理解。
什么是消息队列
消息队列值保存消息的一个容器,本质是个队列。但是这个队列需要支持高吞吐,高并发,并且高可用
业界消息队列对比
Kafka:分布式的,分区的,多副本的日志提交服务,在高吞吐场景下发挥较为出色
RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的扩展性,在一些实时场景中运用广
Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构设计
BMQ:和Pulster架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群
如何使用Kafka
1、创建集群:首先需要创建一个Kafka集群
2、新增Topic:在该集群中创建一个Topic,并且设置好分片数量
3、编写生产者逻辑:引入对应语言SDK,配置好集群和Topic等参数,初始化一个生产者,调用Send方法,将Helloworld发送出去
4、编写消费者逻辑:引入对应语言SDK,配置好集群和Topic等参数,初始化消费者,调用Poll方法,将收到刚刚发送的Helloworld
Kafka架构基本概念
- Topic:Kafka中的逻辑队列,即可以理解成每一个不同的业务场景就是一个不同的Topic,对于这个业务来说,所有的数据都存在这个Topic中
- Cluster:Kafka的物理集群,每个集群中可以新建多个不同的Topic
- Producer:顾名思义,也就是消息的生产端,负责将业务消息发送到Topic中
- Consumer:消息的消费端,负责消费已经发送到Topic中的消息
- Partition:通常Topic会有多个切片,不同切片接收和发送消息是可以并发处理的,这样提高了单个Topic的吞吐
- Offset:消息在partition内的相对位置信息,可以理解为唯一ID,消息在partition内的相对位置,并且严格递增