乐趣区

关于pulsar:Pulsar-270-新增特性概览事务支持Topic-级别策略配置等

对于 Apache Pulsar

Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。
GitHub 地址:http://github.com/apache/pulsar/


本文转载自 StreamNative,作者李鹏辉,他是 Apache Pulsar PMC 成员,目前任职 StreamNative 软件工程师。他负责此次 Pulsar 2.7.0 Release Manager。

Apache Pulsar 2.7.0 反对事务、Topic 级别策略配置、Azure Blob 二级存储、反对原生 protobuf schema、反对 Pulsar Functions 端到端加密等,修复了 2.6.2 版本中的诸多问题,改良了一些性能,进一步丰盛了 Pulsar 作为云原生流数据平台的性能。

Pulsar 2.7.0 版本中合并了来自社区的 450+ commit,上面一起来看看 2.7.0 版本有哪些更新吧!

反对事务

Pulsar 事务反对事件流应用程序实现原子操作,同时实现生产、解决、生产音讯。采纳事务语义,Pulsar 的单分区和多分区都能够实现 exactly-once 语义。因而 Pulsar 能够利用于新的应用场景,即客户端(作为 producer 或 consumer)解决多个 Topic 和分区中的音讯,并保障将这些音讯作为一个音讯单元来解决。事务的引入不仅加强了 Pulsar 的音讯语义,也会进一步加强 Pulsar Functions 的解决保障。

目前,Pulsar 事务还在开发阶段。Pulsar 社区将会持续开发并欠缺事务的个性,推动事务在生产环境中的应用。

在 Pulsar 中启用事务,须要在 broker.conf 文件中配置以下参数。

transactionCoordinatorEnabled=true

初始化事务协调组件的元数据后,事务协调组件能够利用分区 topic 的劣势,例如负载平衡,能够是事务协调组件散布在多个 broker 中。

bin/pulsar initialize-transaction-coordinator-metadata -cs 127.0.0.1:2181 -c standalone

对于 Pulsar 客户端,也须要启用事务个性。

PulsarClient pulsarClient = PulsarClient.builder()
        .serviceUrl("pulsar://localhost:6650")
        .enableTransaction(true)
        .build();

Pulsar 事务的示例如下。

// Open a transaction
Transaction txn = pulsarClient
        .newTransaction()
        .withTransactionTimeout(5, TimeUnit.MINUTES)
        .build()
        .get();

//  Publish messages with the transaction
producer.newMessage(txn).value("Hello Pulsar Transaction".getBytes()).send();

// Consume and acknowledge messages with the transaction
Message<byte[]> message = consumer.receive();
consumer.acknowledgeAsync(message.getMessageId(), txn);

// Commit the transaction
txn.commit()

对于 Pulsar 事务的更多信息,参阅这里。对于 Pulsar 事务设计的更多信息,参阅这里。

Topic 级别策略

Pulsar 2.7.0 引入了零碎 Topic,用于保护所有策略更改事件,进而实现 Topic 级别的策略。目前,命名空间级别的策略都能够在 Topic 级别应用,因而用户能够在 Topic 级别自定义策略,而无需应用大量的元数据服务资源。应用 Topic 级别策略,用户能够更灵便地治理 Topic,同时不会给 ZooKeeper 减少累赘。

在 Pulsar 中启用 Topic 级别策略,须要在 broker.conf 文件中配置以下参数。

systemTopicEnabled=true
topicLevelPoliciesEnabled=true

启用 Topic 级别策略后,能够通过 Pulsar Admin 更新 Topic 策略。为特定 Topic 设置数据保留的代码示例如下。

bin/pulsar-admin topics set-retention -s 10G -t 7d persistent://public/default/my-topic

对于 Topic 零碎和 Topic 级别策略的更多信息,参阅这里。

反对 Azure Blob 二级存储

Pulsar 2.7.0 反对 Azure Blob 二级存储。应用此个性,用户能够将历史数据卸载到 Azure Blob 存储,不仅为 Azure 云用户提供极大便当,还能够升高在 BookKeeper 中治理大量历史数据的老本。Pulsar 将在后续版本中为 Azure 云增加更多反对。

在 Pulsar 中应用 Azure Blob 存储,须要在 broker.conf 文件中配置以下参数。

managedLedgerOffloadDriver=azureblob

更多详细信息,参阅 PR-8436。

反对原生 protobuf schema

Pulsar 2.7.0 反对原生 protobuf schema,简化了 protobuf 与 Pulsar 集成的操作,能让 protobuf 用户应用 Pulsar 的更多功能。上面的代码展现了如何在 Java 客户端中应用原生 protobuf schema。

Consumer<PBMessage> consumer = client.newConsumer(Schema.PROTOBUFNATIVE(PBMessage.class))
.topic(topic)
.subscriptionName("my-subscription-name")
.subscribe();

更多详细信息,参阅 PR-8372。

资源限度

在 Pulsar 中,租户、命名空间和 Topic 是集群的外围资源。Pulsar 2.7.0 反对用户限度集群中租户的数量、租户中命名空间的数量、命名空间中 Topic 的数量,以及 Topic 中的订阅数量。

在 Pulsar 中配置资源限度,须要在 broker.conf 文件中配置以下参数。

maxTenants=0
maxNamespacesPerTenant=0
maxTopicsPerNamespace=0
maxSubscriptionsPerTopic=0

配置资源限度能够为 Pulsar 管理员治理资源提供极大便当。

Pulsar Functions 反对端到端加密

Pulsar 2.7.0 反对为 Pulsar Functions 增加端到端(End-to-End,e2e)加密。用户能够应用配置应用程序加密的公钥和私钥对。只有当密钥无效时,用户才能够解密加密的音讯。

通过在命令行指定 --producer-config 即可在 Functions Worker 上启用端到端加密。更多详细信息,参阅 Pulsar Encryption。

更多详细信息,参阅 PR-8432。

Function 重均衡

2.7.0 版本公布前,Pulsar 没有用于重均衡 worker 上 function 调度程序的机制。Function 之间的工作负载可能相差较多。Pulsar 2.7.0 反对手动触发 function 重均衡,也能够周期性进行主动重均衡。

更多详细信息,参阅 PR-7388 和 PR-7449。

更多信息

  • 点击这里下载 Pulsar 2.7.0。
  • 对于 Apache Pulsar 2.7.0 的更多信息,请参考 2.7.0 公布阐明 和 2.7.0 PR 列表。

如果您有任何对于 Pulsar 的疑难或倡议,欢送通过邮件或 Slack 与咱们分割。

  • users@pulsar.apache.org
  • dev@pulsar.apache.org
  • Pulsar slack 频道:https://apache-pulsar.slack.com
  • 在 https://apache-pulsar.herokuapp.com 网站进行注册
退出移动版