天天看點

基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

需求分析

在共享充電寶場景中,會有一些對實時性要求較高的計算場景。例如大屏展示每個省份、每個機櫃的營收情況。這類場景不同于離線計算類的場景,需要實時地根據訂單資料的變化來統計營業額,并不能采用前文中介紹的Spark近實時流批計算來實作。整個場景需求鍊路為根據訂單增量變化,觸發計算邏輯,計算結果寫入Tablestore表中,提供給大屏展示。大緻可以歸納成增量寫入-實時計算-回寫/展示一系列動作。

Tablestore通道服務介紹

在介紹實時計算實作方案之前,先需要了解一下表格存儲Tablestore功能之一通道服務。

通道服務是表格存儲資料接口上的全增量一體化服務。可提供增量、全量、全增量三種分布式資料實時消費通道。通過對資料表建立通道,可以實作對表中存量、增量資料進行實時消費。下圖介紹了通道服務的一些常見應用場景

基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

Tablestore+Blink方案

Tablestore實作了實時計算Blink的connector,可以基于通道服務實作實時消費增量資料。本方案共分四個子產品。

  • 訂單源表。以表格存儲Tablestore作為訂單源表的存儲庫。在源表上建立增量類型通道,可實時監聽表格中的資料變化。
  • Blink叢集。Blink提供了分布式實時計算服務,可無縫動态對接表格存儲通道服務,對增量資料進行分布式計算,并回寫到訂單結果表中。
  • 訂單結果表。以表格存儲Tablestore作為訂單資料計算完的結果表。
  • DataV。通過DataV通路表格存儲,可将表格存儲資料可視化展現。

通過上述四個子產品之間的對接可實作此場景需求,方案整體架構如下圖所示:

基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

實作步驟

建立源表和結果表

  1. 登入 實時計算官網 。開通實時計算服務。
  2. 表格存儲官網 ,進入控制台,進入訂單表管理-實時消費通道頁面。建立增量類型通道。
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算
  1. 建立Blink獨享叢集。進入叢集管理建立項目。
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算
  1. 進入項目,編寫作業SQL。
    1. 建立訂單資料源表
create table order_source(
  order_Md5ID VARCHAR,
  cabinet_province VARCHAR,
  order_start_time BIGINT  ,
  order_end_time BIGINT ,
  cabinet_pricePerHour  DOUBLE 
) with (
  type ='ots',
  endPoint ='Tablestore執行個體VPC服務位址',
  instanceName = 'Tablestore執行個體名',
  tableName ='order',
  tunnelName = '增量通道名',
  accessId ='',
  accessKey ='',
  ignoreDelete = 'false'
);               
  1. 建立訂單結算結果表
CREATE TABLE order_sink (
    order_province VARCHAR,
    total_price DOUBLE,
    order_count BIGINT,
    primary key(order_province)
) WITH (
    type = 'ots',
    endPoint ='Tablestore執行個體VPC服務位址',
      instanceName = 'Tablestore執行個體名',
      tableName ='order_sink',
      accessId ='',
      accessKey ='',
    valueColumns = 'total_price,order_count'
);           

實時計算作業

  1. 編寫實時計算作業SQL。按照省份實時聚合營業額,計算結果回寫Tablestore結果表。
INSERT INTO order_sink
SELECT
    cabinet_province AS province,
    sum((order_end_time - order_start_time)/3600/1000 * cabinet_pricePerHour) AS             total_price,
    count(order_Md5ID) AS order_count
    FROM order_source
    GROUP BY cabinet_province;           
  1. 上線作業,啟動實時計算任務。
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

3、Tablestore中ots_sink表實時聚合結果展示

基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

資料可視化

  1. DataV官網 ,開通服務,進入DataV控制台。
  2. 添加Tablestore資料源,配置AK。
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算
  1. 設定Tablestore資料源讀取方式,配置資料過濾器。DataV資料可視化實時大屏展示結果如下。
基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

小結

通過實時計算Blink對接表格存儲Tablestore源表,在訂單表上建立增量資料通道,可實作分布式實時消費充電寶訂單增量資料,并将全國實時營收資料的計算結果回寫到Tablestore表中,通過對接DataV實作資料可視化的能力,完成大屏展示的系列過程。

聯系我們

如對本章節所述有疑問或有其他問題需要咨詢,歡迎加入釘釘群:“表格存儲公開交流群-2”。群内提供免費的線上專家服務,歡迎掃碼加入,群号23307953。

基于Tablestore的一站式物聯網存儲解決方案-Flink 實時計算

繼續閱讀