当前位置: 首页 > 工具软件 > BRAFT > 使用案例 >

braft /docs /cn API接口使用文档(代码注释个人翻译)

卓胜
2023-12-01

接上一篇:https://blog.csdn.net/qq_35423190/article/details/108336736

cli.md

https://github.com/baidu/braft/blob/master/docs/cn/cli.md

braft提供了一系列API用来控制复制主或者具体节点, 可以选择在程序了调用API或者使用braft_cli来给节点发远程控制命令

API

// 将一个新的peer节点添加到由| conf |组成的复制组中。
// 成功返回OK,否则返回错误信息。
butil::Status add_peer(const GroupId& group_id, const Configuration& conf,
                       const PeerId& peer_id, const CliOptions& options);

// 将一个peer节点从由| conf |组成的复制组中移除。
// 成功返回OK,否则返回错误信息。
butil::Status remove_peer(const GroupId& group_id, const Configuration& conf,
                          const PeerId& peer_id, const CliOptions& options);

// 优雅地更改复制组的peers节点
butil::Status change_peers(const GroupId& group_id, const Configuration& conf, 
                           const Configuration& new_peers,
                           const CliOptions& options);

// 将该复制组的leader转移到目标peer节点
butil::Status transfer_leader(const GroupId& group_id, const Configuration& conf,
                              const PeerId& peer, const CliOptions& options);

// 将目标peer节点的peer set重置
butil::Status reset_peer(const GroupId& group_id, const PeerId& peer_id,
                         const Configuration& new_conf,
                         const CliOptions& options);

// 要求peer立即转储快照
butil::Status snapshot(const GroupId& group_id, const PeerId& peer_id,
                       const CliOptions& options);

braft_cli

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

client.md

https://github.com/baidu/braft/blob/master/docs/cn/client.md

Example

client side code of Counter

总体流程

要访问braft的主节点,需要做这么一些事情:

  • 需要知道这个复制组有哪些节点, 这个可以通过配置列表,记录在dns,或者提供某些naming service如集群的master,redis, zookeeper, etcd等。
  • 查询Leader位置
  • 感知Leader变化
  • 向Leader发起RPC.

RouteTable

braft提供了RouteTable功能,命名空间在braft::rtb, 可以帮助你的进程记录和追踪某个节点的主节点位置, 包含以下功能

// 更新路由表中组的配置
int update_configuration(const GroupId& group, const Configuration& conf);
int update_configuration(const GroupId& group, const std::string& conf_str);

// 得到该组leader
// 返回:
//  0 : 成功
//  1 : 不确定leader是谁
//  -1: 其他情况
int select_leader(const GroupId& group, PeerId* leader);

// 更新leader
int update_leader(const GroupId& group, const PeerId& leader);
int update_leader(const GroupId& group, const std::string& leader_str);

// 阻塞线程,直到query_leader完成
butil::Status refresh_leader(const GroupId& group, int timeout_ms);

// 从路由表中删除该组
int remove_group(const GroupId& group);

 

 

 类似资料: