862
人物
扩容缩容Merge/Split__高级特性_DataHub实时数据通道_大数据计算服务-阿里云
DataHub 支持为Topic动态扩容/缩容,通过SplitShard/MergeShard来实现。
使用场景
Datahub具有服务弹性伸缩功能,用户可根据实时的流量调整Shard数量,来应对突发性的流量增长或达到节约资源的目的。
例如在双11大促期间,大部分Topic数据流量会激增,平时的Shard数量可能完全无法满足这样的流量增长,此时可以对其中一些Shard进行Split操作,一变二,二变四,最大可扩容至256个Shard,按目前的流控限制足以达到256MB/s的流量。
在双11大促后,流量下降,多余的Shard会占用没有必要的quota,因此可以进行Merge操作,每两个Shard合并为一个,直到合适为止。
Shard属性
可以通过ListShard接口获取所有Shard的信息,每个Shard拥有如下属性, 样例:
{
"ShardId": "string",
"State": "string",
"ClosedTime": uint64,
"BeginHashKey": "string",
"EndHashKey": "string",
"ParentShardIds": [string,string,],
"LeftShardId": "string",
"RightShardId": "string"
}
SplitShard
指定一个128 bit的HashKey以及一个ShardID,通过SDK或者Console进行操作.
SplitShard操作会将指定的Shard分裂为两个ChildShard,并且返回ChildShard的Id以及Key信息,同时Parent Shard会被置为CLOSED状态。
例如,Split之前存在如下一个Shard:
ShardId:0 Status:ACTIVE BeginHashKey:00000000000000000000000000000000 EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
通过SDK进行Split操作:
String shardId = "0";
SplitShardRequest req = new SplitShardRequest(projectName, topicName, shardId, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
SplitShardResult resp = client.splitShard(req);
最终将会变成如下3个Shard:
ShardId:0 Status:CLOSED BeginHashKey:00000000000000000000000000000000 EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ShardId:1 Status:ACTIVE BeginHashKey:00000000000000000000000000000000 EndHashKey:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ShardId:2 Status:ACTIVE BeginHashKey:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
MergeShard
指定两个相邻的ShardID,通过SDK或者Console进行操作.
MergeShard操作会将指定的两个Shard合并为一个新的Shard,并且返回新Shard的ID以及Key信息,同时两个ParentShard会被置为为CLOSED状态。
例如,Merge之前存在如下两个Shard:
ShardId:0 Status:ACTIVE BeginHashKey:00000000000000000000000000000000 EndHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
ShardId:1 Status:ACTIVE BeginHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
通过SDK进行Merge操作:
String shardId = "0";
String adjacentShardId = "1";
MergeShardRequest req = new MergeShardRequest(projectName, topicName, shardId, adjacentShardId);
MergeShardResult resp = client.mergeShard(req);
最终将会变成如下3个Shard:
ShardId:0 Status:CLOSED BeginHashKey:00000000000000000000000000000000 EndHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF
ShardId:1 Status:CLOSED BeginHashKey:7FFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ShardId:2 Status:ACTIVE BeginHashKey:00000000000000000000000000000000 EndHashKey:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
注意事项
当Shard进行Merge/Split后会被置为CLOSED状态,该状态可以继续消费读取数据,但是不可写入,也不可再次进行Merge/Split操作,当到达Topic的lifecycle后该Shard会被回收。
如果配置了Connector,对应任务会在复制完该Shard数据后自动挂起,待该Shard回收后会自动删除任务。
Topic在进行Merge/Split后新的Shard需要等待变为ACTIVE状态后方可正常使用,通常不会超过5秒。
最后更新:2016-11-23 18:01:58
上一篇:
数据归档MaxCompute__高级特性_DataHub实时数据通道_大数据计算服务-阿里云
下一篇:
多方式写入__高级特性_DataHub实时数据通道_大数据计算服务-阿里云
GetGroup__组管理接口_RAM API文档_访问控制-阿里云
云服务器 ECS 网络和安全性之安全组
服务打包__线上服务发布_开发者指南_企业级分布式应用服务 EDAS-阿里云
扩容__购买磁盘_购买指南_云服务器 ECS-阿里云
新增水印模版__水印模板接口_API使用手册_媒体转码-阿里云
云服务器 ECS 快照(Snapshot)技术优势对比
按量计费__计费说明_日志服务-阿里云
AccessPointSetType__数据类型_API 参考_云服务器 ECS-阿里云
任务__基本概念_基本介绍_大数据计算服务-阿里云
LogHub-监控__Getting-Started_日志服务-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云