Kafka distributed messaging system for log processing 论文阅读笔记

Kafka提出的背景是LinkedIn需要实时地收集海量日志,并希望能够横向增添系统的可延展性。由于其他消息队列产品并不完全适用于日志收集,吞吐量不能满足需求等原因,提出了Kafka这个分布式,可扩展,高吞吐率的消息日志系统。文中提到,Kafka的特点是消费者采用拉模式的,拥有足够简单的API的,多节点分布式的消息系统。

问题1:论文时的Kafka对消费语义的满足?
思考:
论文中初期的Kafka只满足了至少一次消费At Least Once。即消息至少被处理一次,这种情况可以保证数据不丢失, 但有可能存在数据重复问题。而现在的Kafka通过At Least Once(ACK=-1)+ISR、HW、LEO等机制 + 幂等性 = Exactly Once满足了精准一次性消费。此外,Kafka从0.11版本开始引入了事务支持。事务可以保证 Kafka 在 Exactly Once 语义的基础上,生产和消费可以跨分区和会话,即要么全部成功,要么全部失败。

目前项目中所使用的EDA队列,也是在外封装了一层对数据进行幂等性的加工。使得每一条数据生成唯一主键,确保精准一次性的消费语义。

问题2:Kafka同一消费者组的分区策略有哪些?
思考:
一个消费者组中有多个消费者,一个主题里有多个分区,所以必然会涉及到分区的分配问题,即确定哪个分区由哪个消费者来消费。
Kafka有三种分配策略,一个是roundrobin,一个是range,与最新提出的StickyAssignor策略,目前项目中Kafka基本使用的是Range策略。
Range策略针对于每个主题,各个主题之间分配时没有任何关联。Range范围分区策略是通过分区数/消费者数来决定每个消费者应该消费几个分区。如果除不尽,那么前面几个消费者将会多消费1个分区。

问题3: Pulsar 目前是一个正在快速发展的开源项目,Pulsar与Kafka区别是什么,以及Pulsar对Kafka的优化点在哪里?

思考:
Pulsar是一个支持多租户的、高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理。相较Kafka,Pulsar的主要特性如下:Pulsar实例原生支持多集群,能无缝的基于地理位置进行跨集群备份;拥有非常低的消息发布和端到端的延迟;能够无缝扩展到超过百万个topic;且topic支持多种订阅模式: 独占、共享、灾备。

Apache Pulsar将高性能流式处理(Apache Kafka所追求的)和灵活的传统队列(RabbitMQ所追求的)结合到一个统一的消息传递模型和API中。它使用统一的API,来提供一个流式处理和队列系统,具有同样的高性能。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值