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/

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

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
相关推荐
zwxu_6 小时前
thread堆栈分析报告
java·微服务·消息队列·熔断
武子康9 小时前
Java-208 RabbitMQ Topic 主题交换器详解:routingKey/bindingKey 通配符与 Java 示例
java·分布式·性能优化·消息队列·系统架构·rabbitmq·java-rabbitmq
小满、1 天前
RabbitMQ:Fanout、Direct、Topic 交换机、队列声明与消息转换器
java·分布式·消息队列·rabbitmq·spring amqp
武子康2 天前
Java-206 RabbitMQ 发布订阅(fanout)Java 实战:推/拉模式、ACK 与绑定排错全梳理
java·分布式·消息队列·rabbitmq·rocketmq·java-rabbitmq·mq
武子康2 天前
Java-207 RabbitMQ Direct 交换器路由:RoutingKey 精确匹配、队列多绑定与日志分流实战
java·消息队列·rabbitmq·erlang·ruby·java-rabbitmq
hzk的学习笔记3 天前
RocketMQ 的架构
中间件·消息队列·rocketmq
武子康3 天前
Java-204 RabbitMQ Connection/Channel 工作流程:AMQP 发布消费、抓包帧结构与常见坑
java·分布式·消息队列·rabbitmq·ruby·java-activemq
武子康3 天前
Java-205 RabbitMQ 工作模式实战:Work Queue 负载均衡 + fanout 发布订阅(手动ACK/QoS/临时队列)
java·性能优化·消息队列·系统架构·rabbitmq·java-rabbitmq·mq
gordon~93 天前
RabbitMQ -消息可靠 的实战示例
分布式·消息队列·rabbitmq·消息可靠性