1. 程式人生 > >Table Store新一代資料實時消費通道:Tunnel Service介紹

Table Store新一代資料實時消費通道:Tunnel Service介紹

概述

通道服務Tunnel Service是基於Table Store資料介面之上的全增量一體化服務,它通過一組Tunnel Service API和SDK為使用者提供了增量、全量和增量加全量三種類型的分散式資料實時消費通道。通過為資料表建立Tunnel Service資料通道,使用者可以簡單地實現對錶中歷史存量和新增資料的消費處理。

Table Store NoSQL資料庫非常適合元資料管理、時序資料監控、訊息系統等服務應用,這些應用的一個常見設計模式就是利用增量資料流或者先全量後增量的資料流來觸發一些附加的操作邏輯,這些附加操作包括:

  • 資料同步,將資料同步到快取、搜尋引擎或者資料倉庫中
  • 事件驅動,觸發函式計算、通知消費端消費或者呼叫一些API
  • 流式資料處理,對接流式或者流批一體計算引擎
  • 資料搬遷,資料備份到OSS、遷移到容量型的Table Store例項等

利用Tunnel Service,我們可以針對這些模式輕鬆構建高效、彈性的解決方案,如下圖:

tunnel1

功能簡述

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

tunnel2

tunnel3

  • 新建的tunnel頁面下,可以檢視tunnel中的資料內容、消費延遲監控、邏輯分割槽channel下的消費資料行數統計

tunnel4

  • 在控制檯資料管理頁面隨機寫入或刪除資料

tunnel5

  • 使用模擬消費按鈕可以預覽通道中的資料格式

tunnel6

  • 複製通道ID,使用任一語言tunnel SDK,開啟新建tunnel的資料消費
//使用者定義消費callback函式
func exampleConsumeFunction(ctx *client.ChannelContext, records []*client.Record) error {
    fmt.Println("user-defined information", ctx.CustomValue)
    for _, rec := range records {
        fmt.Println("tunnel record detail:", rec.String())
    }
    fmt.Println("a round of records consumption finished")
    return nil
}

func main() {
    //配置callback到SimpleProcessFactory,配置消費端TunnelWorkerConfig
    workConfig := &client.TunnelWorkerConfig{
        ProcessorFactory: &client.SimpleProcessFactory{
            CustomValue: "user custom interface{} value",
            ProcessFunc: exampleConsumeFunction,
        },
    }

    //使用TunnelDaemon持續消費指定tunnel
    tunnelClient := client.NewTunnelClient(endpoint, instance, accessKeyId, accessKeySecret)
    daemon := client.NewTunnelDaemon(tunnelClient, $通道ID, workConfig)
    log.Fatal(daemon.Run())
}
  • 在資料消費標準輸出可以看到增量資料消費日誌,在控制檯或者使用describeTunnel介面也可以檢視消費延遲,channel下的消費資料行數更新

tunnel7