pulsar分层存储配置

文章目录

开启s3Driver

开启冷热存储需要先看一下是否开启了相应的driver。

bash 复制代码
#查看配置文件
cat broker.conf | grep -i offload
#开启
bin/pulsar-admin namespaces set-offload-policies public/default \
  -d aws-s3 \
  -b pulsar-test-fast \
  -e http://xxxx
#查看
bin/pulsar-admin namespaces get-offload-policies public/default

分层测试相关配置

未消费消息TTL

POST /admin/v2/namespaces/{tenant}/{namespace}/messageTTL

https://pulsar.apache.org/admin-rest-api/?version=4.0.1\&apiVersion=v2#operation/Namespaces_setNamespaceMessageTTL

边界值说明

复制代码
0 意味关闭 TTL;>0 则按秒生效;

已消费数据保留策略

pulsar官方文档说明了这两个配置的各种值的含义。

https://pulsar.apache.org/docs/next/cookbooks-retention-expiry/

结论:默认配置下,retentionSizeInMB,retentionTimeInMinutes配置生效。

POST /admin/v2/namespaces/{tenant}/{namespace}/retention

https://pulsar.apache.org/admin-rest-api/?version=4.0.1\&apiVersion=v2#operation/Namespaces_setRetention

边界值说明

复制代码
{
  "retentionTimeInMinutes": 0,//-1:无限保留,0:不保留,>0 保留指定时间
  "retentionSizeInMB": 0//如果用户已消费数据保留大于0,则固定传-1,表示忽略大小纬度,如果用户已消费数据保留大于0,则固定传0,表示消费完即删除,不保留
}

关闭冷热分层

结论:

1,关闭冷热分层后已消费消息被删除,offloaded为false,生效。

2,开启冷热分层后已消费消息被转移,offloaded为true,生效。

/admin/v2/namespaces/{tenant}/{namespace}/offloadThresholdInSeconds

https://pulsar.apache.org/admin-rest-api/?version=4.0.1\&apiVersion=v2#operation/Namespaces_setOffloadThresholdInSeconds

边界值说明

复制代码
单位秒
-1:关闭冷热数据分层,0:立刻 offload

热数据保留策略

结论:

1,=0,offloaded之后就会删除,无法查到ledger。(即使《已消费保留策略》设置成永久保留,也会立马删除)

2,>0时,offloaded之后,经过设置的规定时间,就会删除。

PUT /admin/v2/namespaces/{tenant}/{namespace}/offloadDeletionLagMs

https://pulsar.apache.org/admin-rest-api/?version=4.0.1\&apiVersion=v2#operation/Namespaces_setOffloadDeletionLag

复制代码
>0 延迟指定毫秒后删除,0 立即删本地段,-1 永不删除本地段

pulsar重启对bookkeeper的影响

复制代码
./bin/pulsar-admin \
    --admin-url http://xxxxxxxxx:8080 \
    namespaces get-persistence public/default
    
bin/pulsar-admin namespaces set-persistence public/default \
  --bookkeeper-ensemble 3 \
  --bookkeeper-write-quorum 3 \
  --bookkeeper-ack-quorum 3 \
  --size 10M

bin/pulsar-perf produce persistent://public/default/219 --batch-max-messages 10 --max-outstanding 1000 --rate 1000000 --test-duration 900 --size 1024 > testP1.log &

测试常用命令

bin命令

bash 复制代码
#已消费消息保留策略
bin/pulsar-admin topics set-retention   persistent://public/default/my-topic1   --size 0 --time 0
bin/pulsar-admin namespaces get-retention public/default
bin/pulsar-admin topics get-retention persistent://public/default/my-topic3
#查看topic存储大小
bin/pulsar-admin topics stats persistent://public/default/my-topic2 | grep storageSize

#冷热分层配置
bin/pulsar-admin namespaces get-offload-threshold public/default
bin/pulsar-admin namespaces -offload-policies public/default
#冷热分层
 bin/pulsar-admin topics stats persistent://public/default/offload-test | grep -E "storageSize|offloaded"
 bin/pulsar-admin topics stats persistent://public/default/cold-hot-test | grep -E "storageSize|offloadedStorageSize|offloaded"
# 查看当前集群配置offloader情况
bin/pulsar-admin namespaces get-offload-policies public/default
#查看 Pulsar 主题的「内部存储细节」,并筛选出与「Ledger(账本)」相关的关键信息(前后显示 10 行上下文)
bin/pulsar-admin topics stats-internal persistent://public/default/final-test | grep -A 10 ledgers

#延迟配置
bin/pulsar-admin namespaces set-offload-deletion-lag public/default --lag 0
bin/pulsar-admin namespaces get-offload-deletion-lag public/default

#手动关闭
bin/pulsar-admin topics unload persistent://public/default/offload-test

#查看ledger详情
bin/pulsar-admin topics stats-internal persistent://public/default/final-test

#unload
bin/pulsar-admin topics unload persistent://public/default/offload-test

测试数据命令

bash 复制代码
#创建topic
bin/pulsar-admin topics create persistent://public/default/my-topic
#生产者
bin/pulsar-perf produce persistent://public/default/224 --batch-max-messages 10 --max-outstanding 1000 --rate 1000000 --test-duration 900 --size 1024 > testP1.log &
#消费者
bin/pulsar-perf consume persistent://public/default/224 -n 8 -q 10000 --subscriptions perf-consume-sub --test-duration 300 -r 0 --subscription-type Shared > consumeP1.log &

------------------------------配置(通过接口的形式)--------------------------------
#已消费消息保留策略
curl -X POST http://xxxxxxxxx:8080/admin/v2/namespaces/public/default/retention \
     -H "Content-Type: application/json" \
     -d '{
           "retentionTimeInMinutes": 1,
           "retentionSizeInMB": -1
         }'
#ttl
curl -X POST http://xxxxxxxxx:8080/admin/v2/namespaces/public/default/messageTTL      -H "Content-Type: application/json"      -d '0'
#查看ledger,如果是500,则不存在
curl -v "http://pulsartest5.cloud.bjpdc.qihoo.net:8001/api/v1/ledger/metadata/?ledger_id=1339752"
bash 复制代码
#发送少量的消息
for i in {1..10}; do
  echo "bin/pulsar-client produce persistent://public/default/243 --messages \"hello-243-message-$i\" -n 1"
  bin/pulsar-client produce persistent://public/default/243 \
      --messages "hello-243-message-$i $(date +%F_%T.%3N)" -n 1
done
相关推荐
做个文艺程序员5 小时前
MQ第04篇:ActiveMQ深度解析:JMS规范、Spring JMS整合与企业级异步通信实战
spring·消息队列·activemq·java-activemq·jms
做个文艺程序员6 小时前
MQ第03篇:RabbitMQ进阶实战:Topic路由+死信队列+延迟消息,SaaS订单超时取消完整方案
分布式·消息队列·rabbitmq·死信队列·延迟队列
吴爃1 天前
小微企业 SRE 稳定性建设(四):消息链路与消费积压
中间件·容量规划·消息队列·sre
做个文艺程序员2 天前
MQ第02篇:RabbitMQ快速上手教程:AMQP模型详解+Spring Boot整合实战(附完整代码)
spring boot·消息队列·rabbitmq·java-rabbitmq·amqp
做个文艺程序员3 天前
MinIO第05篇:MinIO事件通知机制与Kafka集成——构建SaaS平台的异步文件处理管道
kafka·消息队列·springboot·minio·事件驱动·异步处理
j7~9 天前
【C++标准项目】C++基于protobuf的发布订阅式消息队列(篇一):项目概述+环境搭建
分布式·消息队列·rabbitmq·gtest·protobuf·muduo·sqlites
醉颜凉12 天前
Kafka 与 RabbitMQ/RocketMQ 选型对比:场景匹配、性能基准与迁移成本
kafka·消息队列·rabbitmq·rocketmq·中间件选型
ShineWinsu13 天前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
智码看视界13 天前
技术选型指南:Pulsar vs Kafka:消息队列选型终极对比与压测
kafka·消息队列·pulsar·消息中间件·流处理·高吞吐·架构选型
吉甫作诵21 天前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列