pulsar vs kafka

消息模型

消息模型的要点:发布和订阅,ack,消息何时删除。

流模型和队列模型区别:消费方是否关心顺序

Kafka:流模式 RabbitMQ:共享队列,不保证顺序

Apache Bookkeeper

Kafka

  • Consumer partition rebalance

Pulsar

pulsar是yahoo的项目。

几种消费模式:独占,failover,共享。对比kafka提供只独占,RabbitMQ只提供共享。

ack:有选择提交特性(提交一个特定的),独占和failover可以单个或者累积确认,共享只能选择提交。类似selective ack,不过是单点。而kafka只能累积确认(offset)。

pulsar实现的是游标的方式管理ack(游标如何实现单个确认?)。

消息保留:

  1. TTL:超出TTL才会被删除
  2. 没有TTL,等所有订阅(subscription)都确认了就可以删除

分层架构:有点类似mysql的存储引擎架构,存储借助bookkeeper实现多副本分布式一致性存储,一个具体的topic交给broker负责。

topic发生故障时,只需要把topic的控制权移交给其他节点,无须数据复制。

存储节点故障时,借助bookkeeper能够平滑切换。对比kafka需要partition备份完成后才能可用。

分区和分区路由:segment方式分片(简单理解为相比kafka的partition有更灵活的分片粒度控制),支持hash(保证有序)

持久化:

  1. broker写多个节点,大多数节点构成的quorum返回成功后才发ack给生产者。每个节点强制写日志到磁盘后才返回成功,断电也能保证不丢。

bookkeeper和broker都需要依赖zk:

对比:

总结卖点:

  1. 既能提供高性能的流模型(kafka拥有的),也能够提供队列模型(RabbitMQ提供的)

  2. 借助Bookkeeper实现存储的扩展(对比kafka受到单机partition的限制),这也是pulsar解决的kafka很难处理的问题(更好的存储能力)

  3. 借助分层架构实现处理能力的扩展(负责计算的broker和底层负责存储的bookkeepr分离,计算是无状态的可以水平扩展)

  4. 多租户,有业务(property)/命名空间(namespace)区分

  5. 查询:能够借助pulsar SQL查询,或者借助presto直接查询bookkeeper

  6. 比拼 Kafka, 大数据分析新秀 Pulsar 到底好在哪

  7. 发布订阅消息系统 Apache Pulsar 简介

  8. infoq作者主页

2021-04-14 12:07:52 +0800 yajw Update 2021-04-14 pulsar vs kafka.md M
2021-04-14 12:03:02 +0800 yajw Update 2021-04-14 pulsar vs kafka.md M
2021-04-14 11:47:41 +0800 yajw Update 2021-04-14 pulsar vs kafka.md M
2021-04-14 11:46:22 +0800 yajw Update 2021-04-14 pulsar vs kafka.md M
2021-04-14 11:32:07 +0800 yajw Update 2021-04-14 pulsar vs kafka.md M
2021-04-14 10:28:53 +0800 yajw Create 2021-04-14 pulsar vs kafka.md A