概述
通道服务Tunnel Service是基于Table Store数据接口之上的全增量一体化服务,它通过一组Tunnel Service API和SDK为用户提供了增量、全量和增量加全量三种类型的分布式数据实时消费通道。通过为数据表建立Tunnel Service数据通道,用户可以简单地实现对表中历史存量和新增数据的消费处理。
Table Store NoSQL数据库非常适合元数据管理、时序数据监控、消息系统等服务应用,这些应用的一个常见设计模式就是利用增量数据流或者先全量后增量的数据流来触发一些附加的操作逻辑,这些附加操作包括:
- 数据同步,将数据同步到缓存、搜索引擎或者数据仓库中
- 事件驱动,触发函数计算、通知消费端消费或者调用一些API
- 流式数据处理,对接流式或者流批一体计算引擎
- 数据搬迁,数据备份到OSS、迁移到容量型的Table Store实例等
利用Tunnel Service,我们可以针对这些模式轻松构建高效、弹性的解决方案,如下图:
功能简述
Tunnel Service是Table Store在stream功能之上推出的更强大的数据通道功能,Tunnel Service提供了:
- 全增量一体的数据通道
Tunnel Service不仅提供增量数据消费能力,还提供了可并行的全量数据消费和全量加增量数据消费功能 - 增量数据变化保序
Tunnel Service会为用户数据划分一到多个可并行消费的逻辑分区channel,每个channel下的增量数据按写入时间顺序保序,不同channel的数据可以并行消费 - 消费延迟监控
Tunnel Service通过DescribeTunnel API提供了客户端消费数据RPO(_恢复点目标,recovery point objective_)信息,并在控制台提供了Tunnel数据消费监控 - 数据消费能力水平扩展
Tunnel Service提供了逻辑分区channel的自动负载均衡,通过增加消费端数量,可以水平扩展数据消费速度
快速入门
我们可以使用table store控制台快速体验tunnel service功能:
- 在控制台选择测试数据表,在通道服务管理页面创建通道,例如创建增量类型tunnel
- 新建的tunnel页面下,可以查看tunnel中的数据内容、消费延迟监控、逻辑分区channel下的消费数据行数统计
- 在控制台数据管理页面随机写入或删除数据
- 使用模拟消费按钮可以预览通道中的数据格式
- 复制通道ID,使用任一语言tunnel SDK,开启新建tunnel的数据消费
// 用户自定义数据消费Callback, 即实现IChannelProcessor接口(process和shutdown)
private static class SimpleProcessor implements IChannelProcessor {
@Override
public void process(ProcessRecordsInput input) {
System.out.println("Default record processor, would print records count");
System.out.println(
String.format("Process %d records, NextToken: %s", input.getRecords().size(), input.getNextToken()));
try {
// Mock Record Process.
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void shutdown() {
System.out.println("Mock shutdown");
}
}
// TunnelWorkerConfig里面还有更多的高级参数,这里不做展开,会有专门的文档介绍。
TunnelWorkerConfig config = new TunnelWorkerConfig(new SimpleProcessor());
// 配置TunnelWorker,并启动自动化的数据处理任务。
TunnelWorker worker = new TunnelWorker($tunnelId, tunnelClient, config);
try {
worker.connectAndWorking();
} catch (Exception e) {
e.printStackTrace();
worker.shutdown();
tunnelClient.shutdown();
}
- 在数据消费标准输出可以看到增量数据消费日志,在控制台或者使用describeTunnel接口也可以查看消费延迟,channel下的消费数据行数更新