client

graph TD A[开始] --> B[解析命令行参数] B --> C[注册配置到RouteTable] C --> D[创建多个发送线程] D --> E[发送线程执行] E --> F{从RouteTable<br/>选择Leader} F -->|失败| G[刷新Leader] G --> F F -->|成功| H[创建Channel到Leader] H --> I[发送compare_exchange请求] I --> J{请求是否成功?} J -->|失败| K[检查是否需要重定向] K --> F J -->|成功| L[更新本地value值] L --> M[记录延迟数据] M --> N{是否需要打印日志?} N -->|是| O[打印请求信息] N -->|否| F O --> F P[主线程] --> Q[每秒打印QPS和延迟] Q --> R{是否退出?} R -->|否| Q R -->|是| S[等待所有发送线程结束] S --> T[结束]