• 10 分钟了解 Pulsar:针对 Kafka 用户的指南


    本文翻译自 StreamNative 博客《Understanding Pulsar in 10 Minutes: A Guide for Kafka Users》,作者 Elliot West,StreamNative 软件工程师。本文由 StreamNative 组织翻译。

    译者简介

    王中兴,社区昵称 AlphaWang,就职于 eBay 消息中间件

    本文将结合你现有的 Apache Kafka 知识来带你入门 Apache Pulsar[1]。我们将展示 Apache Kafka 的基本概念是如何映射到 Apache Pulsar 中的,这样你就能够通过已有的 Kafka 知识快速上手 Pulsar 中类似的使用场景。

    Apache Pulsar 为成熟的 Apache Kafka[2] 生态提供了一个非常有吸引力的替代选择。Pulsar 中的差异化功能及架构可以克服 Kafka 中的种种限制。虽然 Kafka 和 Pulsar 都是高度可扩展以及持久化的分布式事件流平台,但是它们又有许多不同之处。例如,Pulsar 可以提供灵活的订阅、统一的流和消息、以及分离存储等等。

    我有幸使用过 Apache Kafka 许多年,将其作为企业级平台提供给数据科学家、工程师和分析师使用。因此,我遇见过多种多样的 Kafka 使用场景,并接触过 Kafka 生态系统的多个方面。当我加入 StreamNative[3] 团队并使用 Pulsar 时,我想看看我的 Kafka 经验在 Pulsar 环境下会是什么样子。本文的阅读前提是你对 Kafka 已经有一定的理解,因为我不会从头开始讲解诸如主题等基本概念。本文不会对比平台的功能,而是专注于从生产者和消费者的角度讲解 Pulsar 如何实现与 Kafka 类似的功能。

    注:本文不会讨论 Pulsar 的 Kafka 插件协议(KoP[4]),KoP 将 Pulsar 封装起来,直接使用 Broker 的资源使现有的 Kafka 客户端和 Pulsar 进行交互,使得客户端就好像是在和 Kafka Broker 交互一样。

    主题

    让我们先从主题开始,因为主题是 Kafka 和 Pulsar 中最基本的概念。你可以把 Pulsar 主题看作是单个 Kafka 主题分区。这里你可能会对性能有疑问,因为多分区是 Kafka 横向扩展能力的原因所在。不过不用担心,Pulsar 在主题的基础上提供了一个类似的概念,即“分区主题[5]”。在分区主题中,一组 Pulsar 主题在逻辑上被分成一组,实现与 Kafka 分区主题类似的功能。之所以存在这种区别,是因为 Pulsar 除了支持 Kafka 所针对的流式处理场景之外,还支持传统消息架构,而非分区主题是传统消息架构中的基本组件。由于我们关注的是 Kafka 使用场景,因此在下文中我们假设主题一词表示 Pulsar 分区主题,或者说 Kafka 主题。

    1. PulsarAdmin admin = ...;
    2. admin.topics().createPartitionedTopic(topic, partitions);

    主题保留策略

    与 Kafka 相比,Pulsar 在消息生命周期方面拥有更大的灵活性。默认情况下,Pulsar 会永远保留所有未确认消息,并立即删除已确认消息。当然,这两个行为[6]均可调整,可以通过设置消息保留时间来保留已确认消息,通过设置消息过期时间来清除未确认消息。

    而 Kafka 的保留策略则不关心消费者活动,消息是被持久化还是被清除完全与消费者是否消费过无关。用户也许不希望在 Pulsar 中复制 Kafka 的这种行为,因为这样一来消息保留策略的灵活性就更小了。不过为了学习的目的,我们还是来看看如何实现这一点。首先,我们来针对被所有消费者都确认过的消息设置保留策略。

    1. PulsarAdmin admin = ...;
    2. admin.topicPolicies().setRetention(
    3.         “topic-name”,
    4.         new RetentionPolicies(sizeInMins, sizeInMB)
    5. );

    然后设置未确认消息的过期时间:

    1. admin.topicPolicies().setMessageTTL(
    2.         “topic-name”,
    3.         messageTTLInSeconds
    4. );

    主题压实

    与 Kafka 一样,Pulsar 也支持对主题进行压实(Compaction)。然而其内部实现略有不同,Pulsar 同时维护着未压实和已压实的数据。在压实过程中会产生一个新的已压实 Ledger,而原有的已压实 Ledger 会被丢弃。

  • 相关阅读:
    如何使用IntelliJ IDEA将普通项目转换为Maven项目
    Apache DolphinScheduler v1.3.9 补数执行连续月任务的参数配置方法
    03 gp 集群搭建
    mysql如果忘记密码怎么办
    docker rabbitmq 宕机 无反应 不消费消息
    【反射】Field类
    R语言使用glm函数构建泊松对数线性回归模型处理三维列联表数据构建饱和模型、使用step函数基于AIC指标实现逐步回归筛选最佳模型、解读分析模型
    大话“高可用”-Part1∶什么是高可用?(原创,转载请标明出处)
    LintCode 1601: Boats to Save People 双指针经典题
    【Linux】部署单机OA项目及搭建spa前后端分离项目
  • 原文地址:https://blog.csdn.net/zhaijia03/article/details/128156860