Time-to-Live(TTL)
除了消息保留(message retention),Pulsar还支持消息生存时间(TTL)。如果消息在配置的TTL时间段内没有被消费者使用,则消息将自动标记为已确认。消息保留和消息TTL之间的区别在于消息保留适用于标记为已确认并将其设置为已删除的消息,保留是对主题应用的时间限制,而TTL适用于未使用的消息。因此,TTL是订阅消费的时间限制。上面的图6说明了Pulsar中的TTL。例如,如果订阅B没有活动消费者,则在配置的TTL时间段过后,消息M10将自动标记为已确认,即使没有消费者实际读取该消息。
Kafka与Pulsar异同:
Kafka Pulsar概念 生产者 - 主题 - 消费者群体 - 消费者 生产者 - 主题 - 订阅 - 消费者
消费 更专注于分区上的流式传输、独占消息传递,没有共享消费。 统一消息传递模型和API。
通过独占的故障转移订阅进行流式传输
通过共享订阅队列
Acking 简单的偏移offset管理
在Kafka 0.8之前,偏移量存储在ZooKeeper中
在Kafka 0.8之后,偏移量存储在偏移主题上
统一消息传递模型和API。通过独占的故障转移订阅进行流式传输
通过共享订阅队列
Retention 根据保留删除消息,如果消费者在保留期之前未读取消息,则会丢失数据。 消息仅在所有订阅消耗后删除,即使订阅的消费者长时间down,也没有数据丢失。
即使所有订阅都使用消息,也允许消息保留一段配置的保留期。
TTL 没有TTL支持 支持消息TTL
Apache Pulsar将高性能流式处理(Apache Kafka所追求的)和灵活的传统队列(RabbitMQ所追求的)结合到一个统一的消息传递模型和API中,Pulsar使用统一的API提供一个流式处理和队列系统,具有相同的高性能。
本博客是学习记录,原文参照:https://streaml.io/blog/pulsar-streaming-queuing