Kafka 消费积压影响写入?试试 Pulsar

1. Pulsar 特性

Apache Pulsar 的设计背景,是雅虎为了替代团队内部多个业务线搭建小规模 Kafka 集群,带来的维护成本,于2012年开源。

因此 Pulsar 的多租户和集群容灾是所有开源MQ中最好的。

Kafka 消费积压影响写入?试试 Pulsar

Pulsar 支持最全的消息队列 API,支持复杂业务场景。

Kafka 消费积压影响写入?试试 Pulsar

1.1 极限性能

单分区 topic 写性能极限测试。

  1. 低延迟:单条同步发送,生产者发送一条消息收到回包,仅需0.3ms,服务端完成 2 副本持久化到磁盘。

  2. 高吞吐:赞批发送,单客户端单线程,可实现150万写QPS

Kafka 消费积压影响写入?试试 Pulsar

线上 Pulsar 集群端到端读写延迟P99耗时监控如下,平均延迟再10ms以下,最高 P99 耗时再 20ms 以内:

Kafka 消费积压影响写入?试试 Pulsar

1.2 长期存储

Pulsar 使用 SSD 磁盘存储热数据,冷数据存储在S3,Pulsar分层存储的实现原理是:

  1. 卸载阈值:Topic 的数据随着时间,生成很多 Segment,当 Segment 关闭时,触发上传 S3,已经上传完的Segment不删除,消费者可优先从磁盘读取数据进行消费,性能更好。

  2. 热数据删除阈值:到达热数据删除阈值后,本地磁盘上的 Segment 数据被删除,消费者只能从S3消费数据。此阈值支持按业务属性个性化配置。

  3. 数据过期阈值:即数据的保存周期,当 Segment 到达保存阈值后,删除S3上的Segment。

Kafka 消费积压影响写入?试试 Pulsar

使用注意事项

  1. 冷数据消费性能上限:默认超过4小时的数据,需要从S3拉取,单分区读性能上限:60MB/s,可通过扩展分区数线性扩展冷数据消费能力。

  2. 支持个性化配置:分层存储的热数据阈值、数据过期阈值支持自定义配置,支持关闭分层存储

1.3 延迟队列

目前智汇云内部 Pulsar 版本对应 Apache Pulsar 4.0.x 版本,支持将延迟消息的索引持久化到磁盘,从而实现更大规模、更长延迟时间的延迟消息。

Pulsar 延迟消息的使用非常简单,普通类型 Topic 即可支持收发定时/延时消息,调用 SDK 的 API 即可发送定时/延时消息。

//定时消息producer.newMessage()    .value(value.getBytes())    .deliverAt(timeStamp)    .send();//延时消息producer.newMessage()    .value(value.getBytes())    .deliverAfter(delayTime, TimeUnit.SECONDS)    .send();

使用延迟消息时需要注意:

1) topic 的 TTL 自动确认时间需要比延时消息的时间更长,否则延迟消息会在TTL后自动确认,不投递给消费者。

2) 生产者不可以使用 batch 模式发送,在创建 producer 的时候把 enableBatch 参数设为 false

3) 消费模式仅支持使用 Shared 模式进行消费,否则会失去定时效果(Key-shared 也不支持)。

// 构建消费者Consumer<byte[]> consumer = pulsarClient.newConsumer()        .topic("persistent://pulsar-xxx/sdk_java/topic1")        .subscriptionName("sub_topic1")        // 声明消费模式为Shared(共享)模式        .subscriptionType(SubscriptionType.Shared)    .subscribe()

2. 产品特点

2.1 Serverless

按需创建资源,成本的最优解

  1. Kafka 扩缩容困难,因此需预留资源,整体磁盘利用率低

  2. Pulsar 计算节点无状态,部署在容器,按需分配资源,小流量场景可共享

  3. 服务端实现了按需秒级分配资源

Kafka 消费积压影响写入?试试 Pulsar

租户隔离

Kafka 无租户隔离,一个用户积压数据过多,混合随机读写严重影响 broker 性能,集群里其他 topic 受影响。

Pulsar 支持为 namespace 配置资源组,不同资源组之间,计算节点broker和存储节点bookie都可以做到物理隔离。

Kafka 消费积压影响写入?试试 Pulsar

读写IO隔离

Pulsar 中 topic 消费积压不会导致写超时,Pulsar 读写磁盘分开,写数据使用WAL磁盘,顺序写,WAL的数据会在内存中赞批刷到Ledger磁盘,数据消费时,如果没命中缓存,从Ledger磁盘读取,因此实现了读写IO隔离,互不影响。

Kafka 消费积压影响写入?试试 Pulsar

2.2 成本优势

Pulsar 相比 Kafka 最高能达到45倍成本节约。主要得益于:

  1. Pulsar 底层按需创建资源

  2. Pulsar 按成本定价

某 topic 吞吐 100MB/s,保存 1 天,使用 Kafka 和 Pulsar,折扣前价格对比:

读写流量

带宽费用/月

存储费用/月

Kafka

100MB/s

25920

1728

Pulsar

100MB/s

864

259

案例1: 金融某业务团队之前使用MQ,吞吐是 25MB/s,在 Kafka 中,内结价10385/月,切换到Pulsar后,当前内结价228/月,成本降低约45倍。

2.3 故障容灾

Pulsar 支持跨地域复制,支持 namespace 级别和 topic 级别开启,可以实现:

  1. 无感机房迁移:业务通过域名连接集群,运维会做DNS解析替换,topic被批量unload后,客户端会自动重连,切换到新集群。

  2. 集群级别故障容灾:集群双活,数据和消费位点双向同步,当其中一个集群故障后可轻松切换到另一个集群。

Kafka 消费积压影响写入?试试 Pulsar


更多技术干货,

请关注“360智汇云开发者”👇

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。

目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案。

官网:https://zyun.360.cn(复制在浏览器中打开)

更多好用又便宜的云产品,欢迎试用体验~

添加工作人员企业微信👇,get更快审核通道+试用包哦~

图片

© 版权声明

相关文章