python消费datahub_协同消费_开发指南_DataHub - 阿里云

协同消费

datahub-client-library是Java-SDK读写功能的上层封装,支持协同消费的功能的Consumer,以及对shard均匀写入的Producer。

概念

点位服务

点位服务是提供将消费的点位保存在服务端的功能,点位由sequence和timestamp组成,sequence是递增的对应唯一记录的序列,timestamp是记录写入datahub的单位为ms的时间戳。

为Topic创建订阅,并在完成消费一部分数据后,将点位提交至服务端。下次启动任务时,可以从服务端获取上次提交的点位,从指定点位的下一条记录开始消费。将点位保存在服务端才能够实现shard重新分配后,能够从上次提交的点位之后消费,是协同消费功能的前提。

在Consumer中不需要手动处理点位,在config中设置点位提交的间隔,在读取记录时,认为之前的记录已经完成处理,若距离上次提交点位已经超过提交间隔,则尝试提交。在提交失败并且同时任务强制停止时,有一定可能造成点位提交不及时,重复消费一部分数据。

协同消费

协同消费是为了解决多个消费者同时消费一个topic时,自动分配shard的问题。能够简化消费的客户端处理,多个消费者可能是在不同机器上,通过自己协调分配shard是困难的。使用同一个Sub Id的Consummer在同一个Consumer Group中,同一个shard在一个Consumer Group中只会被分配给1个Consumer。

场景

现有3个消费者实例A,B,C,Topic共有10个shard

实例A启动,分配10个shard

实例B,C启动,shard分配为4,3,3

将1个shard进行split操作,在父节点消费完后,客户端主动释放,2个子节点加入后,shard分配为4,4,3

实例C停止后,shard分配为6,5

心跳

要实现协同消费的功能,需要通过心跳机制来通知让服务端消费者实例的状态,当前分配的shard和需要释放的shard,超过时间间隔没有收到心跳,则认为消费者实例已经停止。当消费者实例的状态发生改变,服务端会重新分配shard,新的分配计划也是通过心跳请求来返回,所以客户端感知shard变化是有时间间隔的。

版本

Maven依赖以及JDK:

maven pom

com.aliyun.datahub

aliyun-sdk-datahub

2.17.1-public

com.aliyun.datahub

datahub-client-library

1.1.12-public

jdk

jdk:>=1.8

示例

Producer 代码示例importcom.aliyun.datahub.client.exception.AuthorizationFailureException;

importcom.aliyun.datahub.client.exception.DatahubClientException;

importcom.aliyun.datahub.client.exception.InvalidParameterException;

importcom.aliyun.datahub.client.exception.MalformedRecordException;

importcom.aliyun.datahub.client.exception.NoPermissionException;

importcom.aliyun.datahub.client.exception.ShardNotFoundException;

importcom.aliyun.datahub.client.model.Field;

importcom.aliyun.datahub.client.model.FieldType;

importcom.aliyun.datahub.client.model.RecordEntry;

importcom.aliyun.datahub.client.model.RecordSchema;

importcom.aliyun.datahub.client.model.TupleRecordData;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值