原文作者 Maximilian Michels,翻译 Sijia@StreamNative,如需转载,请后盾留言。
英文链接:https://dzone.com/articles/10…\# 对于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/
Apache Pulsar 具备泛滥独特劣势,如分层存储、无状态 broker、跨地区复制、多租户等,这些个性让 Pulsar 比 Kafka 更胜一筹。
如果你还在 Pulsar 和 Kafka 的抉择上当机立断,心愿本文总结的 Pulsar 十大劣势能够帮你作出决策。
无状态的 broker(易扩大)
应用 Kafka 时,须要先设置 broker 的数量。因为 Kafka 将数据存储在 broker 中,因而在应用过程中,一旦发现设置值偏小,须要更多 broker 来扩大应用程序时,就须要充分利用新分区,必须对 topic 从新分区。
Pulsar 将 broker 的状态保留在独自的层 (Apache BookKeeper) 中。Broker 层与存储层解藕,无需挪动数据即可增加或应用 broker。也就是说,无需对现有数据进行从新分区也能够充分利用新 broker。
分层存储(长久存储音讯、升高存储老本)
Kafka 默认数据保留工夫为 7 天,也就是说,一周后会删除数据。而 Pulsar 默认保留所有未 ack 的数据,并立刻删除已 ack 的数据。
Kafka 和 Pulsar 都反对通过自定义保留策略批改数据保留期限。然而,主存储中可存储的数据量会受到限制,减少数据量也会减少存储老本。分层存储反对为不同类型的数据抉择节约老本又适合的存储。例如,仅在疏导(回填)应用程序中会用到历史数据,因而能够为历史数据抉择不同的存储类型。
Pulsar 的存储层采纳分片架构,分片散布在存储节点上。应用 Pulsar,既能够写入分片到主存储,也能够卸载分片到其余类型的存储中。因而,Pulsar 反对分层存储,但 Kafka 目前还不反对分层存储。分层存储提供多个存储层,如主存储(基于 SSD)、历史存储(S3)等,因而能够轻松获取每一层的存储状况。
基于 quorum 复制(改善提早一致性)
Pulsar 采纳基于 quorum 的算法进行复制,而 Kafka 采纳基于 leader-follower 的算法。尽管 Pulsar 和 Kafka 的保障雷同,但基于 quorum 形式产生的提早一致性更高。对于很多应用程序来说,提早一致性很重要,例如,获取某些 SLA(如查问的响应工夫)。
跨地区复制(高可用)
Pulsar 原生反对跨地区复制,因而 Pulsar 能够跨不同地理位置的数据中心复制数据。当数据中心中断或网络分区时,在多个数据中心存有音讯正本尤为重要,进步可用性。
多租户(简化架构和治理)
Pulsar 反对多租户,即多个用户组通过访问控制或在齐全不同的命名空间中共享同一集群。Kafka 目前不反对多租户,因而要共享集群就须要基于音讯零碎搭建一个形象的层,或者每个用户组独自应用一个集群。
信息加密(进步安全性)
Pulsar 提供从客户端到存储节点的端到端齐全加密。齐全加密个别是对数据安全性的要求。Kafka 目前不反对端到端加密。
多协定反对(易与现有应用程序集成)
Pulsar 不仅反对多种协定(如 RabbitMQ、AMQP、Kafka),还反对应用 Presto 并行读取历史流事件。
Pulsar Functions(一站式流解决)
Pulsar Functions 是基于 Pulsar 的轻量级流解决形式,其概念相似于 Kafka Streams。Pulsar Functions 间接部署在 broker 节点上(或作为 Kubernetes 集群中的容器),而 Kafka Streams 则是一个独自的应用程序。通过 Pulsar Functions,Pulsar 能够间接解决许多流解决工作,简化操作。
Apache Flink 集成(批处理和流解决)
Pulsar 社区就 Pulsar Functions 的局限性开展了一系列公开探讨,例如状态治理、DAG 流程等。如果 Pulsar Functions 不适用于你的应用场景,你能够思考另一个广受欢迎的开源工具——Pulsar Flink connector。
Pulsar 曾经过实际测验(已用于大规模生产环境)
Pulsar 在设计上具备诸多劣势。最后由雅虎团队开发,用于雅虎外部。2016 年,雅虎将 Pulsar 捐献给 Apache 软件基金会。之后,很多工作要害型应用程序都采纳了 Pulsar,例如腾讯、Splunk 等等。
Pulsar 并非美中不足
Pulsar 须要两个零碎:Apache BookKeeper 和 Apache ZooKeeper,而 Kafka“只”须要 ZooKeeper。多个零碎会减少操作复杂性,但也正因为采纳多个零碎,Pulsar 才更灵便。因为 Kafka 和 Pulsar 都应用了其余零碎,二者都须要设置和保护。
在 Pulsar 和 Kafka 之间作出抉择并不容易,这一决定也会带来一系列影响。我在本文中总结了 Pulsar 和 Kafka 之间的次要差别,心愿这些信息能够帮忙你和你的团队作出抉择。如需进一步理解 Apache Pulsar 的信息,能够拜访 pulsar.apache.org 或订阅邮件告诉。