本文为您展示DataHub的 C++ SDK的Shard操作。
Shard说明
Shard表示对一个Topic进行数据传输的并发通道,每个Shard会有对应的ID。每个Shard会有多种状态:
Opening:为启动中状态。
Active:为启动完成可服务状态。
每个Shard启用以后会占用一定的服务端资源,建议按需申请Shard数量。
列出Shard列表
参数说明
参数名  | 参数类型  | 参数说明  | 
projectName  | string  | 项目名称。  | 
topicName  | string  | Topic名称。  | 
代码示例
void ListShard()
{
    try
    {
       const ListShardResult& lsr = client.ListShard(projectName, topicName);
       std::cout<<lsr.GetShards().size()<<std::endl;
       std::vector<ShardEntry> shards = lsr.GetShards();
       std::vector<std::string> shardIds;
       for (size_t i = 0; i < shards.size(); ++i)
       {		
            ShardEntry shardEntry = shards[i];
            shardIds.push_back(shardEntry.GetShardId());
       }
    } 
    catch(const DatahubException& e)
    {
        std::cerr << "List shard fail: " << e.GetRequestId() << ", ErrorCode: " << e.GetErrorCode() << ", ErrorMessage: " << e.GetErrorMessage() << std::endl;
    }
}分裂Shard
参数说明
参数名  | 参数类型  | 参数说明  | 
projectName  | string  | 项目名称。  | 
topicName  | string  | Topic名称。  | 
代码示例
void SplitShard()
{
  std::string projectName = "";
  std::string topicName = "";
  try
  {
    const SplitShardResult& ssr = client.SplitShard(projectName, topicName, "0", "00000000000000000000000000AAAAAA");
    std::cout<<ssr.GetChildShards().size()<<std::endl;
  }
    catch(const DatahubException& e)
    {
        std::cerr << "Split shardId fail: " << e.GetRequestId() << ", ErrorCode: " << e.GetErrorCode() << ", ErrorMessage: " << e.GetErrorMessage() << std::endl;
    }
}合并Shard
参数说明
参数名  | 参数类型  | 参数说明  | 
projectName  | string  | 项目名称。  | 
topicName  | string  | Topic名称。  | 
代码示例
void MergeShard()
{
  std::string projectName = "";
  std::string topicName = "";
  try
  {
    const MergeShardResult& msr = client.MergeShard(projectName, topicName, "0", "1");
    std::cout<<msr.GetChildShard().GetShardId()<<std::endl;
    std::cout<<msr.GetChildShard().GetBeginHashKey()<<std::endl;
    std::cout<<msr.GetChildShard().GetEndHashKey()<<std::endl;
  }
   catch(const DatahubException& e)
   {
        std::cerr << "Merge sahrd fail: " << e.GetRequestId() << ", ErrorCode: " << e.GetErrorCode() << ", ErrorMessage: " << e.GetErrorMessage() << std::endl;
   }
	
}该文章对您有帮助吗?