Pulsar 能否超越 Kafka?

2020-11-25 12:16:25 浏览数 (1)

Pulsar 是类似于 Kafka 的一个消息中间件,是 Yahoo 开源的,可以说 Pulsar 就是针对 Kafka 的痛点而来的。

下面就说说 Kafka 都有哪些痛点,以及 Pulsar 的优质特性,当然还会说下它的不足。

1. Kafka 概述

Kafka 于 2011 年由 LinkedIn 创建,发展到现在已经成为消息系统的王者,支持了越来越多的功能,例如:

  • Schema Registry
  • Kafka Connect,用于对接其他数据源
  • Kafka Streams,用于分布式的流处理
  • KSQL,用于对 Topic 进行类似 SQL 的查询
  • ……

Kafka 速度快、安装简单,适用于非常多的使用场景,极其流行。

2. Kafka 痛点

  • 扩展困难,这是 Kafka 架构造成的,broker 存储了数据,想要动 broker,就意味着 topic 分区以及副本的复制,非常耗时。
  • 不支持完全独立的多租户模式。
  • 异步复制的情况下可能丢失数据。
  • 对于 broker、topic、partition、replica 的数量需要做一个规划,以便尽量避免扩展问题。
  • 当你只需要一个单纯的消息系统时,基于 offset 的方式就有点麻烦。
  • 集群再平衡会影响 producer 和 consumer 的性能。
  • MirrorMaker Geo 复制机制有问题,例如 Uber 设计了自己的方案来克服此问题。

3. Pulsar 概述

Pulsar 是 Yahoo 在 2013 年创建的,2016年贡献给了 Apache 基金会,目前已经是 Apache 的顶级项目。

Yahoo、Verizon、Twitter 等很多公司都在使用 Pulsar 来处理海量消息。

Pulsar 声称比 Kafka 更快、运行成本更低、解决了很多 Kafka 的痛点。

Pulsar 非常灵活,可以像 Kafka 一样作为分布式日志系统,也可以作为类似 RabbitMQ 这类简单的消息系统。

Pulsar 有多种订阅类型、传递保障、保存策略。

4. Pulsar 特性

  • 内置多租户

不同的团队可以使用同一个集群,互相隔离。支持隔离、认证授权、配额。

  • 多层架构

Pulsar 使用特定的数据层来存储 topic 数据,使用了 Apache BookKeeper 作为数据账本。Broker 与存储分离。

使用分隔机制可以解决集群的扩展、再平衡、维护等问题。也提升了可用性,不会丢失数据。

因为使用了多层架构,对于 topic 数量没有限制,topic 与存储是分离的,也可以创建非持久化的 topic。

  • 多层存储

Kafka 中存储是很昂贵的,所以很少存储冷数据。Pulsar 使用了多层存储,可以自动把旧数据移动到专门的存储设备,例如 Amazon S3,但是对于客户端来讲是透明的,还可以正常使用。

  • Functions

Pulsar Function 是一种部署简单,轻量级计算、对开发人员友好的 API,无需像 Kafka 那样运行自己的流处理引擎。

  • 安全

内置了代理、多租户安全机制、可插入的身份验证等功能。

  • 快速再平衡

partition 被分为了小块儿,所以再平衡时非常快。

  • 多系统集成

例如 Kafka、RabbitMQ 等系统都可以轻松集成。

  • 支持多种开发语言

例如 Go、Java、Scala、Node、Python 等等。

5. 小结

Pulsar 的确弥补了 Kafka 的很多不足,因为 Yahoo 就是为了解决这些问题而开发的 Pulsar。

但 Pulsar 也有明显的弱势,例如它的普及度比 Kafka 差太多了,而且 Kafka 有 Confluent 的专业支持,这个支持力度不是 Pulsar 能比的,由此就带来了其他问题,比如扩展插件太少、人才太少等等。

Pulsar 与 Kafka 各有所长,各有所短,没有技术是完美的,多一种技术就多一种选择,需要根据自己的情况来选择合适的技术。

参考资料:

https://itnext.io/pulsar-advantages-over-kafka-7e0c2affe2d6

Happy Learning ヾ( ̄▽ ̄)Bye~Bye~

0 人点赞