通道服务是基于表格存储数据接口的全增量一体化服务,可以帮助您对表中历史存量数据和新增数据进行消费处理。

Tunnel Client为通道服务的自动化数据消费框架。Tunnel Client通过每一轮的定时心跳探测(Heartbeat)进行如下操作:
  • 活跃Channel的探测。
  • Channel和ChannelConnect状态的更新。
  • 数据处理任务的初始化、运行和结束等。
TunnelWorkerConfig提供Tunnel Client的自定义配置,可根据实际需要配置参数,参数说明请参见下表。
配置 参数 说明
Heartbeat的间隔和超时时间 heartbeatTimeoutInSec Heartbeat的超时间隔。

默认值为300s。

当Heartbeat发生超时,Tunnel服务端会认为当前TunnelClient不可用(失活),客户端需要重新的进行ConnectTunnel。

heartbeatIntervalInSec 进行Heartbeat的间隔。

Heartbeat用于活跃Channel的探测、Channel状态的更新、(自动化)数据拉取任务的初始化等。

默认值为30s,最小支持配置到5s,单位为s。

记录消费位点的时间间隔 checkpointIntervalInMillis 用户消费完数据后,向Tunnel服务端进行记录消费位点操作(checkpoint)的时间间隔。
默认值为5000ms,单位为ms。
说明
  • 因为读取任务所在机器不同,进程可能会遇到各种类型的错误。例如因为环境因素重启,需要定期对处理完的数据做记录(checkpoint)。当任务重启后,会接着上次的checkpoint继续往后做。在极端情况下,通道服务不保证传给您的记录只有一次,只会保证数据至少传一次,且记录的顺序不变。如果出现局部数据重复发送的情况,需要您注意业务的处理逻辑。
  • 如果希望减少在出错情况下数据的重复处理,可以增加做checkpoint的频率。但是过于频繁的checkpoint会降低系统的吞吐量,请根据自身业务特点决定checkpoint的操作频率。
客户端的自定义标识 clientTag 客户端的自定义标识,用于生成Tunnel Client ID。通过自定义此参数可以用于区分TunnelWorker。
数据处理的自定义Callback channelProcessor 用户注册的处理数据的Callback,包括process和shutdown方法。
数据读取和数据处理的线程池资源配置 readRecordsExecutor 用于数据读取的线程池资源。无特殊需求,建议使用默认的配置。
processRecordsExecutor 用于处理数据的线程池资源。无特殊需求,建议使用默认的配置。
说明
  • 自定义上述线程池时,线程池中的线程数要和Tunnel中的Channel数尽可能一致,此时可以保障每个Channel都能很快的分配到计算资源(CPU)。
  • 在默认线程池配置中,为了保证吞吐量,表格存储进行了如下操作:
    • 默认预先分配32个核心线程,以保障数据较小时(Channel数较少时)的实时吞吐量。
    • 工作队列的大小适当调小,当在用户数据量比较大(Channel数较多)时,可以更快的触发线程池新建线程的策略,及时的弹起更多的计算资源。
    • 设置了默认的线程保活时间(默认为60s),当数据量降下后,可以及时回收线程资源。
内存控制 maxChannelParallel 读取和处理数据的最大Channel并行度,可用于内存控制。

默认值为-1,表示不限制最大并行度。

说明 仅Java SDK 5.4.0及以上版本支持此功能。
最大退避时间配置 maxRetryIntervalInMillis Tunnel的最大退避时间基准值配置。

默认值为2000ms,最小支持配置到200ms。

最大退避时间会在这个基准值附近随机,具体范围为0.75*maxRetryIntervalInMillis~1.25*maxRetryIntervalInMillis。

说明
  • 仅Java SDK 5.4.0及以上版本支持此功能。
  • Tunnel对于数据量较小的情况(单次拉取小于900 KB或500条)会进行一定时间的指数退避,直至达到最大退避时间。