百万量级 topic 下,如何配置 bookies、broker 以及硬件?

答:容量评估需要结合消息的大小\业务中实际可以接收的 batch 大小等因素,假如一个消息 100 bytes,一个客户端发送,客户端每 2ms 打包发送,数据写两个副本,那基本 2 台机器就够了,但是这个明显不符合实际的应用场景。对于 Pulsar 来讲容量评估主要考虑几个方面的因素:

  1. 消息吞吐量:直接决定对网卡和磁盘的需求,硬件支持的最大吞吐必须要 >= 期望的吞吐;
  2. 实际 batch 的影响:决定了对 CPU 的需求,这个要根据具体的测试数据来,通过设置不同 batch 大小做一些 benchmark,再根据实际业务的情况来做评估;
  3. 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 集群上进行性能测试。