工作中的消息队列用的是Kafka,一直没有系统的了解,这边集中整理一下。
目录
7.Replica(副本机制)(和分区结合起来是Kafka实现高可用和负载均衡的原理)
10.Consumer Offset(偏移量)(Kafka,单分区消息顺序消费的原因)
Kafka作为消息队列(当然它不仅仅只有消息队列这一个应用场景。)
Kafka主要组件有十个部分。
1.Broker(服务器)
a)Broker就是Kafka的服务器,用于存储和管理消息,默认是9092端口
b)生产者和Broker建立连接,将消息发送到服务器上存储起来
c)消费者跟Broker建立连接,订阅和消费服务器上存储的消息。
2.Record(消息)
a)客户端传输的数据叫做消息,在Kafka中也叫Record.
b)Record在客户端是一个KV键值对(ProducerRecord, ConsumerRecord)
c)Record在服务端是一个KV键值对(RecordBatch(批量发送) 或 Record).
3.Producer(生产者)
发送消息的一方称为生产者,
Kafka为了提升消息发送速率,生产者默认采用批量发送的方式发送消息至Broker,
一条发送多少条由参数batch.size决定(默认16K)
4.Consumer(消费者)
a)订阅,接收消息的一方叫消费者
b)消费者获取消息有两种模式:Pull模式(拉)(消费者主动从消息队列中获取消息),Push模式(推)(Broker把消息推送给消费者)
Kafka采用的是Pull模式,因为Kafka是支持大数据的,如果采用Push模式的话,海量数据可能把下游消费端给打爆,所以Kafka采用Pull模式推送消息
c)Pull模式,消费者可以控制一次到底获取多少条消息(max.pull.records 默认是500)
5.Topic(主题)
a)topic(主题)一个逻辑概念,可以理解为一组消息的集合
b)生产者和消费者通过topic进行消息的写入和读取
c)生产者发送消息时候,若topic不存在,是否自动创建:auto.create.topics.enable(建议关闭)
6.Partition(分区)
a)分区(Partition)就是把一个topic分成几个不同的部分
b)一个topic在创建时候可以划分多个分区&#