Apache Pulsar分布式Pub-Sub消息系统详解

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(120)   2024-05-22 06:21:28

Apache Pulsar 是一个开源分布式发布-订阅消息传递系统,最初由 Yahoo 创建,是 Apache Software Foundation 的一部分。

Pulsar 是用于服务器到服务器消息传递的多租户、高性能解决方案。

Pulsar 的主要功能包括 [4]:

  • 原生支持 Pulsar 实例中的多个集群,跨集群无缝地理复制消息
  • 极低的发布和端到端延迟
  • 无缝扩展到超过一百万个主题
  • 一个简单的 客户端 API,绑定了 JavaPythonC++
  • 主题的多种订阅模式独占共享故障转移
  • 通过 Apache BookKeeper 提供的持久消息存储 保证消息传递

架构概述

在最高层,一个 Pulsar 实例由一个或多个 Pulsar 集群组成。实例中的集群可以在它们之间复制数据 [4]。

下图展示了 Pulsar 集群:

Pulsar 与 Apache Kafka 的比较

下表列出了 Apache Pulsar 和 Apache Kafka 之间的异同 [5]:

<头>

卡夫卡 脉冲星  
概念 生产者-主题-消费者组-消费者 生产者主题订阅消费者
消费 更专注于分区上的流式传输、独家消息传递。没有共享消费。

统一消息传递模型和 API。

  • 通过独家故障转移订阅进行流式传输
  • 通过共享订阅排队
确认

简单的偏移量管理

  • 在 Kafka 0.8 之前,偏移量存储在 ZooKeeper 中
  • Kafka 0.8之后,offsets存储在offset topics上

统一消息传递模型和 API。

  • 通过独家故障转移订阅进行流式传输
  • 通过共享订阅排队
留存 根据保留删除消息。如果消费者在保留期之前没有阅读消息,它将丢失数据。

消息只有在所有订阅都使用它们后才会被删除。即使订阅的消费者长时间停机也不会丢失数据。

即使在所有订阅都使用消息之后,消息也可以保留配置的保留期。

TTL 不支持TTL 支持消息TTL

总结

Apache Pulsar 是一项正在 The Apache Software Foundation (ASF) [3] 孵化的项目,由 Apache Incubator PMC 赞助。由于其独特的功能,它似乎将成为 Apache Kafka 的竞争替代品。

资源: [1] https://pulsar.apache.org/ [2] https://developer.yahoo.com/open-source/ [3] https://apache.org/ [4] https://pulsar.apache.org/docs/latest/getting-started/ConceptsAndArchitecture/ [5] https://streaml.io/blog/pulsar-streaming-queuing/

地址:https://www.cundage.com/article/jcg-apache-pulsar-distributed-pub-sub-messaging-system.html

相关阅读

Apache Pulsar 是一个开源分布式发布-订阅消息传递系统,最初由 Yahoo 创建,是 Apache Software Foundation 的一部分。
Apache Fluo 是 Apache Accumulo [3] 的 Percolator [2](用于填充 Google 的搜索索引)的开源实现。使用 Fluo,用户可以不断地将新数据加入到...
Apache FileUtils 教程展示了如何使用 Apache FileUtils 在 Java 中处理文件和目录。这些示例读取、写入、复制、创建、删除、列出和获取文件大小。 Apache ...
一、概述 在本教程中,我们将构建一个将 HTML 作为输入的应用程序,并使用提供的 HTML 的 RichText 表示 创建 Microsoft Excel 工作簿。
介绍 Apache Flink 是一个用于分布式流和批数据处理的开源平台。 Flink 是一个流式数据流引擎,具有多个 API 以创建面向数据流的应用程序。 Flink 应用程序使用 Apach...
几个月前,我有幸参与了一些使用 Apache Spark 的 PoC(概念验证)。在那里,我有机会使用弹性分布式数据集(简称 RDD)、转换和操作。 几天后,我意识到虽然 Apache Spar...
什么是Apache卡夫卡? Apache Kafka 是一个分布式流系统,可以发布和订阅记录流。另一方面,它是企业消息传递系统。
虽然我通常使用 Groovy 来编写 JVM 托管的脚本以从命令行运行,但有时我需要在 Java 应用程序中解析命令行参数并且有大量可用的库供 Java 开发人员用来解析命令行参数。在本文中,我...
我在构建spring MVC 文件上传示例时遇到了这个异常。错误堆栈跟踪如下所示: java.lang.ClassNotFoundException: org.apache.commons.fi...
在本文中,“使用 Apache Ignite 进行高性能内存计算” 一书的作者将讨论使用 Apache Strom 和 Apache Ignite 进行复杂事件处理。本文部分内容摘自书的复杂事件...