Pulsar对比Kafka,为什么用Pulsar代替Kafka

Pulsar与Kafka一样是分布式消息中间件

Pulsar特性:

1.线性扩展。能够丝滑的扩容到成百上千个节点(Kafka扩容需要占用很多系统资源在节点间拷贝数据,而Plusar完全不用)

2.高吞吐。每秒数百万消息

3.低延迟。在大规模的消息量下依然能够保持低延迟(< 5ms)

4.持久化机制。Plusar的持久化机制构建在Apache BookKeeper之上,提供了写与读之前的IO隔离

5.基于地理位置的复制。Plusar将多地域/可用区的复制作为首要特性支持。用户只需配置好可用区,消息就会被源源不断的复制到其他可用区。当某一个可用区挂掉或者发生网络分区,plusar会在之后不断的重试。

6.部署方式的多样化。既可以运行在裸机,也支持目前例如Docker、K8S的一些容器化方案以及不同的云厂商,同时在本地开发时也只需要一行命令即可启动整个环境。

7.Topic支持多种消费模式:

  • Exclusive: 一个topic只能被一个消费者消费。Plusar默认就是这个模式

  • Shared: 共享模式或者叫轮询模式,多个消费者可以连接到同一个topic,消息被依次分发给消费者,当一个消费者宕机或者主动断开连接,那么发到那个消费者的还没有ack的消息会得到重新调度分发给其他消费者。

  • Failover: 多个消费者可以连接同一个topic并按照字典序排序,第一个消费者会开始消费消息,称之为master,当master断开连接,所有未ack和队列中剩下的消息会分发给另一个消费者。

Pulsar对比Kafka的优点:

 

1. 流式处理和队列的合体

Pulsar 就像一个合二为一的产品,不仅可以像 Kafka 那样处理高速率的实时场景,还支持标准的消息队列模式,比如多消费者、失效备援订阅和消息扇出等等。Pulsar 会自动跟踪客户端的读取位置,并把这些信息保存在高性能的分布式 ledger(BookKeeper)当中。

与 Kafka 不同,Pulsar 具备传统消息队列(如 RabbitMQ)的功能,因此,只需要运行一个 Pulsar 系统就可以同时处理实时流和消息队列。

2. 支持分区,但不是必需的

如果你用过 Kafka,就一定知道分区是怎么回事。Kafka 中的所有主题都是分区的,这样可以增加吞吐量。通过分区进而划分到不同的 broker,单个主题的处理速率可以得到大幅提升。但如果某些主题不需要太高的处理速率,又该怎么办呢?对于这类情况,如果能不考虑分区,避免随之而来的 API 和管理工作,不是更好吗?

Pulsar 就可以做到。如果只需要一个主题,可以使用一个主题而无需使用分区。如果需要保持多个消费者实例的处理速率,也不需要使用分区,Pulsar 的共享订阅可以达到这一目的。

如果确实需要分区来进一步提升性能,Pulsar 也可以支持分区的使用。

3. 日志固然不错,但 ledger 更胜一筹

Kafka 开发团队预见了日志对于一个实时数据交换系统的重要性。日志通过追加的方式写入系统,写入速度很快。日志中的数据是串行的,可以按照写入的顺序快速读取数据。相比随机读取和写入,串行读取和写入速度更快。对于任何一个提供数据保证的系统来说,持久化存储方面的交互都是一个瓶颈,而日志抽象最大限度地提升了这方面的效率。

日志固然好,但当数据量过大时,也会给我们带来一些麻烦,单台服务器上保存所有日志已经成为一个挑战。在日志占满服务器存储之后该怎么办?如何进行扩容?或者保存日志的服务器宕机,需要重新从副本创建新的服务器时,该怎么办?将日志从一台服务器拷贝到另一台服务器耗时很长,特别是想要同时保持系统实时数据时,完成这个操作就更难了。

Pulsar 对日志进行分段,从而避免了拷贝大块的日志。通过 BookKeeper, Pulsar 将日志分段分散到多台不同的服务器上。也就是说,日志不会保存在单台服务器上,任何一台服务器都不会成为整个系统的瓶颈。这使故障处理和扩容更加简单,只需要加入新的服务器,而无需进行再均衡处理。

4. 无状态

对于云原生应用程序开发人员来说,最喜欢的东西就是无状态。无状态组件启动速度快、可替换,还可以实现无缝扩容。如果消息中间件也是无状态的,那岂不是更好?

Kafka 不是无状态的,每个 broker 都包含了分区的所有日志,如果一个 broker 宕机,不是所有 broker 都可以接替它的工作。如果工作负载太高,也不能随意添加新的 broker 来分担,而是必须与持有其分区副本的 broker 进行状态同步。

在 Pulsar 架构中,broker 是无状态的。但是完全无状态的系统无法持久化消息,所以 Pulsar 不是依靠 broker 来实现消息持久化的。在 Pulsar 架构中,数据的分发和保存是相互独立的。broker 从生产者接收数据,然后将数据发送给消费者,但数据保存在 BookKeeper 中。

Pulsar 的 broker 是无状态的,所以如果工作负载很高,可以直接添加新的 broker,快速接管工作负载。

5. 简单的跨域复制

跨域复制是 Pulsar 的拿手好戏。Pulsar 在设计之初就考虑到了这个特性,配置也很容易。无论是全局分布式应用程序还是灾备方案,都可以通过 Pulsar 搞定。

6. 稳定的表现

Pulsar 可以在提供较高吞吐量的同时保持较低的延迟。

 

总结出来最主要的优点就是plusar扩容,增加节点时比kafka更快更方便,且数据处理速度上也比kafka更上一层楼。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值