天天看點

實時計算案例:杭州企鵝科技

作者:何孟強

1.企鵝簡介

杭州企鵝科技是一家集自主研發、商業營運、合作推廣為一體的智慧物聯平台服務商。企鵝科技利用智慧物聯技術平台,賦能自助商用裝置為營運商提供一體化物聯網改造方案和SaaS移動支付解決方案。公司依托領先的物聯網技術,瞄準線下消費更新和差異化趨勢,利用智慧物聯技術連接配接并賦能線下商用裝置實作商戶的智能化管理,降低運維成本、提高收益;同時,為使用者提供基于LBS定位的物聯自助智能體驗服務,滿足使用者體驗的智能化,個性化需求。

2. 業務場景

企鵝科技目前共有約40萬台物聯網終端裝置包括:洗衣機、烘幹機、飲水機、淋浴、吹風機、充電樁、按摩椅等,需實時掌握終端裝置的狀态以及下發指令後回報結果,每天将近4億條消息接收和發送。

  1. 以洗衣機場景為例:使用者完成下單後,通過阿裡雲物聯網平台向終端裝置下發啟動指令,指令下發成功後需實時掌握洗衣機是否啟動成功。
  2. 以飲水機場景為例:使用者掃描飲水機上的二維碼,下發解鎖指令後,需要實時掌握飲水機的流量、狀态等資訊。

業務痛點:由于終端裝置數量過多,裝置種類繁雜,消息量巨大,實時性要求高,小額高頻的交易場景且需根據各種業務場景進行處理,原來通過直接消息訂閱IOT平台消息和消息流轉均無法滿足我們業務場景複雜的小額高頻需求。

3.解決方案

為解決上文提到的業務痛點問題,選用阿裡雲實時計算Flink作為實時計算的基礎架構進行資料清理、過濾和業務處理後輸出至各下遊。

系統架構:

實時計算案例:杭州企鵝科技

資料流向及業務處理:

1. 裝置資訊資料實時上報到IOT物聯網平台。

2. IOT物聯網平台把資料流轉到DATAHUB。

3. 實時計算Flink版訂閱DATAHUB資料。

4. 實時計算Flink根據業務規則進行資料清洗、加工輸出至各下遊端。

飲水場景解決方案:

飲水場景是一種小額的高頻交易的後付費場景,使用者下單後先下發解鎖指令,讓使用者先使用然後再根據裝置上報的流量進行計費。終端裝置上報的資訊中會有單筆訂單上報,也會由于網絡情況不好而擠壓在終端的資訊需同時進行上報,通過實時計算Flink可快速通過sql方式進行資料過濾如:根據上報的類型和tag進行條件過濾如下:`type` = '08' AND `profile` IS NULL AND json_value ( `data`, '$.Flag' ) IN ( '04', '05' ); 可以判斷該筆消息是飲水場景單筆訂單的上報,很便捷的判斷出消息的種類後輸出至MQ、Redis等供下遊消費使用,完成業務的閉環。

充電樁場景解決方案:

充電樁裝置需實時掌握充電樁的通道的功率以及充電樁的狀态及充電的剩餘時間,為實時掌握通道的功率我們通過實時計算Flink進行加工後資料輸出至TSDB中。通過實時計算Flink可快速完成業務需求。

  1. 定義datahub的源表資訊和TSDB的結果表資訊
--建立iot_up資料源表
create table iot_up (
  `id` varchar,
  `imei` varchar,
  `pk` varchar,
  `type` varchar,
  `data` varchar,
  `profile` varchar
) with (
  type = 'datahub',
  endPoint = 'http://dh-cn-shanghai.aliyun-inc.com',
  project = '***',
  topic = '***',
  accessId = '***',
  accessKey = '***'
);
--建立tsdb表
CREATE TABLE charge_power (
    `metric`    VARCHAR,   
    `timestamp` INTEGER,
    `value`     INTEGER,
    `imei`      VARCHAR,
    `channel`   VARCHAR,
    `msgid`     VARCHAR,
    `pk`        VARCHAR
) WITH (
    type='hitsdb',
    host='***',
    port='***'
);      
  1. 根據業務規則過濾後輸出至TSDB中
--建立tsdb表寫入資料
insert into charge_power select 
  'power',
  cast(UNIX_TIMESTAMP(`time`) as int),
  cast(json_value(`data`,'$.Powers[0].Power') as int),
  imei,
  json_value(`data`,'$.Powers[0].Channel'),
  json_value(`data`,'$.Powers[0].MsgId'),
  pk
 from iot_up where `type` = '0706'  and json_value(`data`,'$.Powers[0]') is not null;      

4.總結

杭州企鵝科技平台涉及多台線下裝置(約40W台裝置),實時計算 Flink 版每秒處理輸入 10K 條資料,每秒輸出 20K 條處理後的資料,整體延遲為秒級,整體收益包括:

  • 節省運維成本:免運維,阿裡雲提供高保障;
  • 對接上下遊:實時計算強大的 Flink SQL 可以對接上下遊,直接注冊,不需要寫複雜代碼,使用通用 SQL 即可,資料分析的門檻低;
  • 降低開發成本:SQL 開發,效率高,門檻低,原來單作業 Java 開發 3 天的工作量降低到 1 天内,且 BUG 少。

企鵝科技平台通過實時計算技術快速處理各業務場景資料,在業務上取得了較大的成果,也得到了公司的高度認可,由于物聯網裝置實時性要求較強,通過實時計算在很多業務場景上已滿足我們的業務需要。