braft提供了一系列API用来控制复制主或者具体节点, 可以选择在程序了调用API或者使用braft_cli来给节点发远程控制命令
API
- // Add a new peer into the replicating group which consists of |conf|.
- // Returns OK on success, error information otherwise.
- butil::Status add_peer(const GroupId& group_id, const Configuration& conf,
- const PeerId& peer_id, const CliOptions& options);
- // Remove a peer from the replicating group which consists of |conf|.
- // Returns OK on success, error information otherwise.
- butil::Status remove_peer(const GroupId& group_id, const Configuration& conf,
- const PeerId& peer_id, const CliOptions& options);
- // Gracefully change the peers of the replication group.
- butil::Status change_peers(const GroupId& group_id, const Configuration& conf,
- const Configuration& new_peers,
- const CliOptions& options);
- // Transfer the leader of the replication group to the target peer
- butil::Status transfer_leader(const GroupId& group_id, const Configuration& conf,
- const PeerId& peer, const CliOptions& options);
- // Reset the peer set of the target peer
- butil::Status reset_peer(const GroupId& group_id, const PeerId& peer_id,
- const Configuration& new_conf,
- const CliOptions& options);
- // Ask the peer to dump a snapshot immediately.
- butil::Status snapshot(const GroupId& group_id, const PeerId& peer_id,
- const CliOptions& options);
braft_cli
braft_cli提供了命令行工具, 作用和API类似
- braft_cli: Usage: braft_cli [Command] [OPTIONS...]
- Command:
- add_peer --group=$group_id --peer=$adding_peer --conf=$current_conf
- remove_peer --group=$group_id --peer=$removing_peer --conf=$current_conf
- change_peers --group=$group_id --conf=$current_conf --new_peers=$new_peers
- reset_peer --group=$group_id --peer==$target_peer --new_peers=$new_peers
- snapshot --group=$group_id --peer=$target_peer
- transfer_leader --group=$group_id --peer=$target_leader --conf=$current_conf