模拟客户端(simulation client)是一个程序,它可以创建和订阅消息速率和大小可配的 topic。 有时需要使用多个客户端来模拟大负载,此时用户不需要直接与客户端交互,而是将请求委托给模拟控制器(simulation controller),然后模拟控制器将向客户端发送信号以开启负载。 The client implementation is in the class .
要启动模拟客户端,请使用 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)
- 创建一组 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
- 关闭以前创建的 topic 组
stop_group <tenant> <group>
- 将历史数据从一个 ZooKeeper 复制到另一个 ZooKeeper,并基于该段历史中的消息速率和大小进行模拟
copy <tenant> <source zookeeper> <target zookeeper> [--rate-multiplier value]
- 在当前的 ZooKeeper 上使用历史数据的做负载模拟(应该是正在模拟的同一个 ZooKeeper)
simulate <tenant> <zookeeper> [--rate-multiplier value]
- 从给定的活动 ZooKeeper 中传输最新数据,以模拟该 ZooKeeper 的实时负载
这些命令中的 “group” 参数允许用户同时创建或影响多个 topic。 通过调用 trade_group
命令创建组,随后可使用 chang_group
和 stop_group
来修改和停止组。 所有 ZooKeeper 参数都来自于 zookeeper_host:port
列表。
To observe the behavior of the load manager in these simulations, one may utilize the broker monitor, which is implemented in org.apache.pulsar.testclient.BrokerMonitor
. Broker 监视器在通过 watchers 获得更新后,将向控制台打印载入数据的表。
要启动 broker 监视器,请使用 pulsar-perf
脚本中的 monitor-brokers
命令:
控制台将不停的打印加载的数据,直到中断为止。