Simulation tools
模拟客户端(simulation client)是一个程序,它可以创建和订阅消息速率和大小可配的 topic。 有时需要使用多个客户端来模拟大负载,此时用户不需要直接与客户端交互,而是将请求委托给模拟控制器(simulation controller),然后模拟控制器将向客户端发送信号以开启负载。 客户端实现位于类中。
要启动模拟客户端,请使用 pulsar-perf
脚本并结合 simulation-client
命令,如下所示:
然后模拟客户端就可以接收模拟控制器的命令了。
要启动模拟控制器,使用pulsar-perf
脚本并结合simulation-controller
命令,参考如下:
在控制器启动之前需要先启动客户端。 启动后会有一个简单的命令提示符,之后就可以在此向模拟客户端发出指令。 参数通常包括租户名称、命名空间名称和 topic 名称。 在所有情况下,都使用租户、命名空间和 topic 的 BASE 名称。 例如,对于 topic persistent://my_tenant/my_cluster/my_namespace/my_topic
,租户名称是 my_tenant
,命名空间名称是 my_namespace
,topic 的名称是 my_topic
。 控制器可以执行以下操作:
- 创建一组 topic (都包含一个 producer 和一个 consumer)
trade_group <tenant> <group> <num_namespaces> [--rate <message rate per second>] [--rand-rate <lower bound>,<upper bound>] [--separation <separation between creating topics in ms>] [--size <message size in bytes>] [--topics-per-namespace <number of topics to create per namespace>]
- 更改现有 topic 的配置
change <tenant> <namespace> <topic> [--rate <message rate per second>] [--rand-rate <lower bound>,<upper bound>] [--size <message size in bytes>]
- 更改一个 topic 组的配置
- 关闭以前创建的 topic 组
stop_group <tenant> <group>
- 将历史数据从一个 ZooKeeper 复制到另一个 ZooKeeper,并基于该段历史中的消息速率和大小进行模拟
copy <tenant> <source zookeeper> <target zookeeper> [--rate-multiplier value]
- 在当前的 ZooKeeper 上使用历史数据的做负载模拟(应该是正在模拟的同一个 ZooKeeper)
simulate <tenant> <zookeeper> [--rate-multiplier value]
这些命令中的 “group” 参数允许用户同时创建或影响多个 topic。 通过调用 trade_group
命令创建组,随后可使用 chang_group
和 stop_group
来修改、停止各自分组中的 topic。 所有 ZooKeeper 参数都来自于 zookeeper_host:port
列表。
要在这些模拟中观察负载管理器的行为,可以使用 Broker 监控工具(broker monitor),它在 org.apache.pulsar.testclient.BrokerMonitor
中实现。 Broker 监视器借助 watcher 获得更新后,会向控制台输出表格式负载数据。
要启动 broker 监视器,请使用 pulsar-perf
脚本中的 monitor-brokers
命令:
控制台将持续输出负载数据,直到中断为止。