基于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 实时计算

上一篇:从零开始搭建一个简单的ui自动化测试框架01(pytest+selenium+allure)


下一篇:小冰、情感计算以及人工智能的另一条发展之路