Kafka发展史

Kafka设计初旨在解决Linkedin数据管道问题,新版优化包括异步发送、分批机制及合理分区策略,提升效率。Consumer单线程管理多分区消费,位移提交由Kafka处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kafka 设计之初是为了解决 Linkedin 公司数据管道(datapipe)问题.

KafkaProducer 的工作逻辑:将消息封装成 ProducerRecord 对象,然后使用KafkaProducer.send 将消息发送出去. 事实上,其拿到消息后会通过序列化,根据本地缓存的元数据,确定目标分区,最后写入缓冲区. KafkaProducer 专门有一个 Selector I/O 线程,负责将缓存区的消息分批次发送给 Kafka broker.

新版设计优点:
1.发送过程被分成了两个线程,即:主线程和 Selector 线程.
2.发送完全是异步的,并提供回调机制,用于判断发送成功与否.
3.分批机制,每个批次中包含多个发送请求,提升整体吞吐量.
4.更加合理的分区策略,旧版对于没有指定 key 的消息,它是默认一段时间发送到一个分区,这样容易造成数据倾斜,而新版采用轮询的机制,更加合理.
5.底层统一采用 Selector,效率更高.

consumer 的优势:

1.单线程设计,单个 consumer 线程可以管理多个分区的消费 Socket 连接
2.位移提交与保存交由Kafka来处理——位移不再保存在 Zookeeper 中,而是单独保存在 Kafka 的 topic 中.

如何选择 Kafka 版本

1.如果要使用流式组件,请使用 Kafka0.10.x
2.如果要使用 Kafka Secutiry,请使用 Kafka0.9.x(含)之后的版本.

kafka 为了保证同一类型的消息顺序性(FIFO),一个partition只能被同一组的一个consumer绑定消费,不同组的consumer可以绑定同一个partition进行重复消费。但是一个consumer可以绑定多个partition(哈哈不知道这里用绑定是否合适)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值