需求分析
在共享充電寶場景中,會有一些對實時性要求較高的計算場景。例如大屏展示每個省份、每個機櫃的營收情況。這類場景不同于離線計算類的場景,需要實時地根據訂單資料的變化來統計營業額,并不能采用前文中介紹的Spark近實時流批計算來實作。整個場景需求鍊路為根據訂單增量變化,觸發計算邏輯,計算結果寫入Tablestore表中,提供給大屏展示。大緻可以歸納成增量寫入-實時計算-回寫/展示一系列動作。
Tablestore通道服務介紹
在介紹實時計算實作方案之前,先需要了解一下表格存儲Tablestore功能之一通道服務。
通道服務是表格存儲資料接口上的全增量一體化服務。可提供增量、全量、全增量三種分布式資料實時消費通道。通過對資料表建立通道,可以實作對表中存量、增量資料進行實時消費。下圖介紹了通道服務的一些常見應用場景

Tablestore+Blink方案
Tablestore實作了實時計算Blink的connector,可以基于通道服務實作實時消費增量資料。本方案共分四個子產品。
- 訂單源表。以表格存儲Tablestore作為訂單源表的存儲庫。在源表上建立增量類型通道,可實時監聽表格中的資料變化。
- Blink叢集。Blink提供了分布式實時計算服務,可無縫動态對接表格存儲通道服務,對增量資料進行分布式計算,并回寫到訂單結果表中。
- 訂單結果表。以表格存儲Tablestore作為訂單資料計算完的結果表。
- DataV。通過DataV通路表格存儲,可将表格存儲資料可視化展現。
通過上述四個子產品之間的對接可實作此場景需求,方案整體架構如下圖所示:
實作步驟
建立源表和結果表
- 建立Blink獨享叢集。進入叢集管理建立項目。
- 進入項目,編寫作業SQL。
- 建立訂單資料源表
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'
);
- 建立訂單結算結果表
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'
);
實時計算作業
- 編寫實時計算作業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;
- 上線作業,啟動實時計算任務。
3、Tablestore中ots_sink表實時聚合結果展示
資料可視化
- DataV官網 ,開通服務,進入DataV控制台。
- 添加Tablestore資料源,配置AK。
- 設定Tablestore資料源讀取方式,配置資料過濾器。DataV資料可視化實時大屏展示結果如下。
小結
通過實時計算Blink對接表格存儲Tablestore源表,在訂單表上建立增量資料通道,可實作分布式實時消費充電寶訂單增量資料,并将全國實時營收資料的計算結果回寫到Tablestore表中,通過對接DataV實作資料可視化的能力,完成大屏展示的系列過程。
聯系我們
如對本章節所述有疑問或有其他問題需要咨詢,歡迎加入釘釘群:“表格存儲公開交流群-2”。群内提供免費的線上專家服務,歡迎掃碼加入,群号23307953。