共计 2235 个字符,预计需要花费 6 分钟才能阅读完成。
对于 FAQ 知识库
平时在 Pulsar 交换群中,咱们发现大家在接触和应用 Pulsar 的过程中,会重复遇到相相似的问题。为了更高效地解决大家这些“高频疑难”,同时也对提出优质问题的敌人表示感谢,咱们特地建设了 FAQ 知识库,以便于收集及解答大家的疑难。
咱们将定期收集筛选社群内提出的高频问题,由社区专家甄别筛选出其中优质的发问进行答复,整合优化后分享给社区的小伙伴们作为遇到问题时的优先参考,心愿能够帮忙大家解决应用 Pulsar 过程中的问题。
上面来看看本期收集的问题吧:
统计 Topic 下音讯条数
问题 1: 如何应用统计 Topic 下所有的音讯条数(非 Entry 条数)?
解答:目前还没有这个个性,能够依据以后 Message Index 的个性来反对 Message Level 的 Backlog。相对来说,对于 Exclusive(独占)和 Failover(灾备)模式的解决会简略一些,对于反对单条音讯不间断签收的订阅来说会比较复杂一些。
百万量级 Topic 配置
问题 2: 百万量级 Topic 下如何配置 Bookies、Broker 以及硬件?
解答:容量评估须要联合音讯的大小 / 业务中理论能够接管的 Batch 大小等因素。如果一个音讯 100 Bytes,一个客户端发送,客户端每 2ms 打包发送,数据写两个正本,那根本 2 台机器就够了,然而这显著不符合实际的利用场景。对于 Pulsar 来讲容量评估次要思考几个方面的因素:
- 音讯吞吐量:间接决定对网卡和磁盘的需要,硬件反对的最大吞吐必须要 >= 冀望的吞吐;
- 理论 Batch 的影响:决定了对 CPU 的需要,这个要依据具体的测试数据来,通过设置不同 Batch 大小做一些 Benchmark,再依据理论业务的状况来做评估;
- Topic 数量:决定对 Metadata Service 的需要,如果有几千个 / 几万个 Topic,那不必太思考这个方面的影响;如果几十万及以上的 Topic,那要给 ZooKeeper 一些比拟好的资源,尤其是在磁盘上,比方 Log Data 和 Data 离开,尽量应用 Nvme SSD 等。
相干配置:
- Broker 配置:次要配置是网卡和 CPU,倡议应用万兆网卡,Broker 会并行写多个正本到 Bookie,所以单个 Broker 可能承载的写入带宽要除以正本数。
- Bookie 配置:次要配置是网卡和磁盘,倡议应用万兆网卡,Journal 盘如果应用 HDD 要敞开同步刷盘,不然刷盘的提早会间接影响写入的吞吐。
以上只是一些比拟惯例的思考因素和倡议,容量评估还是要结合实际的测试后果得出。社区也有不少简略好用的工具,比方 Pulsar 自带的 Pulsar-perf 或者 Openmessaging Benchmark,能够容易的在指定的 Pulsar 集群上进行性能测试。
磁盘被写满如何清理文件
问题 3: Pulsar 磁盘被写满后须要清理哪些文件?
解答:清理 Bookie 不能通过间接清理文件的形式进行,这会导致整个 Bookie 状态的不统一,并且一旦文件被删除可能会导致不可逆的劫难。
解决这个文件需视环境而定。如果是测试环境或者不会关怀数据失落的其余环境,那么能够间接应用 Admin 删除掉集群的所有的 Topic,而后一一 Bookie 节点触发手动 GC curl,Bookie 就能够逐步开释磁盘空间。
如果是线上环境,必定是不能间接把 Topic 都删除掉的。首先,优先思考扩容保障服务不会中断,而后依据 Topic 应用的存储大小来查看是哪些 Topic 占用了大量的存储空间。Pulsar 的机制是 Subscription 没有 Ack 的音讯是不会被删除掉的。因而如果发现是某些不必的 Subscription 导致 Topic 数据无奈删除,能够查看 Subscription 是不是还再用 / 能够清理掉。总之,找出那些能够清理数据的 Topic,让不必的数据过期或被删除,而后再到 Bookie 节点触发手动 GC 来清理数据。
生产位点与 Ack
问题 4: Pulsar 新接入的消费者,都是从最新开生产吗?
解答:如果没有订阅过,就从最新开始生产。
问题 5: 哪个参数能够指定生产位点的?
解答:ConsumerBuilder#subscriptionInitialPosition。默认是 latest,能够改成 earliest。如果曾经订阅过,如何改变都是最新。须要改的话用 Consumer#seek 来扭转地位。
问题 6: 默认音讯被 Ack,如果没有保留策略那么就会被立刻删除、无奈回溯?
解答:标记为删除不是立刻删除。如果没有被理论删除的话能够 Seek 回溯。
BookKeeper Ledger 写满
问题 7: 单个 Ledger 目录写满,然而其余目录闲暇。
解答:BookKeeper PR-2121 已通过防止 entry 日志进行压缩解决该问题,请确保应用 4.10 或以上版本的 BookKeeper。
微服务场景 - 实例订阅
问题 8: 在微服务场景中,可能一个服务有多个实例。这些实例都应用不同的订阅名称吗?
解答:每个订阅在 Pulsar 中对能够读取一份残缺的 Topic 数据。依据你的应用场景,如果你心愿每个实例都拿到一份残缺的 Topic 数据,每个实例应该应用不同的订阅名称;如果不同的实例共享一份 Topic 数据,则应该应用同一个订阅名称。大多数场景会是后者。
以上就是第 2 期社区 FAQ 汇总,在此感激参加社群日常发问与解答的小伙伴们。让咱们期待下一期的 FAQ 内容吧!
相干举荐
- 社区知识库|常见问答 FAQ 汇合第 1 期
关注 公众号「Apache Pulsar」,获取干货与动静
退出 Apache Pulsar 中文交换群 👇🏻