实时计算案例:杭州企鹅科技

作者:何孟强

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 少。


企鹅科技平台通过实时计算技术快速处理各业务场景数据,在业务上取得了较大的成果,也得到了公司的高度认可,由于物联网设备实时性要求较强,通过实时计算在很多业务场景上已满足我们的业务需要。

上一篇:云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI续费


下一篇:实时计算案例:上海鸥新软件