背景

交易数据的实时统计是电商网站一个核心功能,可以帮助用户实时统计网站的整体销售情况,快速验证“新销售策略”的效果。我们今天介绍一个基于表格存储(Tablestore)实现交易数据的实时计算,给大家提供一个新使用方式。

Tablestore作为在线的结构化数据库,提供了毫秒级的访问延时和丰富的查询方式,能高效的支撑交易数据的存储和查询,同时Tablestore已经原生支持阿里云的流计算框架Flink/Blink,可以实现数据的实时计算。

架构

示例设计

基本场景

注意:示例是模拟一个电商网站的交易数据的存储和实时计算,目的是为了展示Tablestore + Blink的使用流程。

用户通过SDK将网站交易数据实时的存储(PutRow/BatchWrite/TableStoreWriter)到Tablestore的source_order表中,Tablestore通过Tunnel服务,将实时增量的数据流入到Flink/Blink中,每5秒进行一次聚合计算,并将计算的结果重新写回Tablestore的sink_order表中。最后提供给“大屏”实时读取(GetRange)展示。

Source表(源表)- source_order

source表是原始数据表,存储了所有交易记录。

字段 类型 注释
metering(PrimaryKey) string 计量类型,样例中默认是web
orderid(PrimaryKey) string 订单号ID
ts integer 交易时间(Unix时间戳,毫秒精度)
price double 交易金额
buyerid integer 买家ID
sellerid integer 卖家ID
productid integer 商品ID

Sink表(结果表)- sink_order

字段 类型 注释
metering(PrimaryKey) string 计量类型,样例中默认是web
ts(PrimaryKey) integer 交易时间(Unix时间戳,毫秒精度)
price double 交易金额
ordercount integer 交易次数

Flink SQL

DDL参考

注意:当前Blink在支持Tablestore source上还有些限制,只能运行ProcessingTime的方式,未来会支持EventTime模式,按照用户数据参数的时间进行计算。

-- Source 源表创建
CREATE TABLE ots_input (metering VARCHAR,orderid VARCHAR,price DOUBLE,byerid BIGINT,sellerid BIGINT,productid BIGINT,primary key(metering,orderid),ts AS PROCTIME()
) WITH (type = 'ots',instanceName = 'ordertest',tableName = 'source_order',accessId = '******************',accessKey = '******************',endpoint = 'http://ordertest.cn-zhangjiakou.vpc.tablestore.aliyuncs.com',tunnelName = 'blink_agg'
);
-- Sink 结果表创建
CREATE TABLE ots_output (metering VARCHAR,ts BIGINT,price DOUBLE,ordercount BIGINT,primary key(metering,ts)
) WITH (type = 'ots',instanceName = 'ordertest',tableName = 'sink_order',accessId = '******************',accessKey = '******************',endpoint = 'http://ordertest.cn-zhangjiakou.vpc.tablestore.aliyuncs.com',valueColumns = 'price,ordercount'
);-- 计算
INSERT INTO ots_output
SELECT DISTINCT metering as metering,CAST(TUMBLE_START(ots_input.ts, INTERVAL '5' SECOND) AS BIGINT) AS ts,SUM(price) as price,COUNT(orderid) as ordercount
FROM ots_input
GROUP BY TUMBLE(ts, INTERVAL '5' SECOND),metering;

实战

第一步:准备账户与开服

准备表格存储实例,可以参考《表格存储实例创建》

准备Flink/Blink项目,可以参考《Blink如何购买》

第二步:创建资源

表格存储资源

表格存储控制台入口,创建表格存储实例ordertest (用户自定义即可,下面对于参数位置更换为自定义的实例名),并记录实例的VPC地址

同时在控制台创建Source表和Sink表, 并为Source表(source_order)开启一个Tunnel服务blink_agg

图三 Source表(source_order)

图四 Sink表(sink_order)

图五 源表和目标表

图六 创建通道

Blink资源

Blink控制台入口,创建一个Blink项目(独享模式要创建集群之后才能创建项目),分别创建一个作业,agg_order,并将上面的Flink SQL粘贴到窗口中,上线服务

在运维窗口中启动该任务

第三步:压入数据 并 实时获取结算结果

1 准备配置文件

程序默认会从'~/tablestoreConf.json'获取配置

vim ~/tablestoreConf.json# 内容
{"endpoint":"http://ordertest.cn-zhangjiakou.ots.aliyuncs.com","accessId":"************","accessKey":"************","instanceName":"ordertest"
}

2 构建源码

mvn install
cd target
tar xzvf stream-compute-1.0-SNAPSHOT-release.tar.gz

3 启动压力器和模拟大屏

可以直接下载工具包:stream-compute-1.0-SNAPSHOT-release.tar.gz

# 窗口1
./bin/mock_order_generator
# 窗口2
./bin/data_show_screen

4 效果

原文链接
本文为云栖社区原创内容,未经允许不得转载。

Tablestore + Blink实战:交易数据的实时统计相关推荐

  1. Kafka项目实战-用户日志上报实时统计之编码实践

    1.概述 本课程的视频教程地址:<Kafka实战项目之编码实践>  该课程我以用户实时上报日志案例为基础,带着大家去完成各个KPI的编码工作,实现生产模块.消费模块,数据持久化,以及应用调 ...

  2. 唐宇迪学习笔记10:项目实战-交易数据异常检测

    目录 一.任务目标解读 信用卡欺诈检测 任务流程: 主要解决问题: 二.项目挑战与解决方案制定 1.导入我们的工具包 2.数据读取 3.数据标签分布 三.数据标准化处理 四.下采样数据集制作 五.交叉 ...

  3. python抓取股市实时交易数据_python实时读取股票大单交易数据

    代码如下,有时可以读取成功,有时显示错误Exception:'gb2312' codec can't decode bytes in position 1-2, 不晓得原因是什么,跪求大神指点~ # ...

  4. 广告效果数据的实时计算与分析(Druid)(一)

    我是做SSP-供应方平台服务的,工作中除了负责SSP 管理后台的需求开发(如,媒体应用和位置的管理.流量分配.效果数据的报表展示.SDK性能分析等)之外,最主要的是负责SSP广告效果数据的实时统计与分 ...

  5. 实时计算的最佳实践:基于表格存储和Blink的大数据实时计算

    表格存储: 数据存储和数据消费All in one 表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供PB级结构化数据存储.千万TPS以及毫秒级延迟的服务能力.在实时计算场景 ...

  6. 【全网详解】从0到1搭建双十一实时交易数据展示平台——Spark+Kafka构建实时分析系统

    目录 万事具备之巧借东风 预备知识 环境搭建 Spark安装 Kafka安装 Kafka核心知识介绍 Kafka开启及测试服务 Python依赖库 PyCharm安装 搭建总结 八仙过海之各显神通 数 ...

  7. 【免费股票数据接口|实测可用|史上最全】沪深A股实时交易数据数据API接口

    沪深A股基础实时数据API 数据来源:麦蕊智数 请求方式:Get(直接在浏览器打开就可以看到返回的数据) 数据格式:标准Json格式[{},...{}] 数据时效:实时更新 API说明文档:https ...

  8. InfluxDB SpringBoot Docker Grafana实战监控数据统计

    一.InfluxDB是什么? 二.与Java交互中有哪些对象? 三.Docker安装Influxdb 四.SpringBoot + InfluxDB 实战监控数据统计 五.实际监控 一.InfluxD ...

  9. Spark Streaming 项目实战 (4) | 得到最近1小时广告点击量实时统计并写入到redis

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

最新文章

  1. IEEE最新薪资报告 | 手机开发者年入153万,机器学习并非最高(附链接)
  2. Pycharm如何设置自定义背景颜色
  3. Leetcode 144. 二叉树的前序遍历 解题思路及C++实现
  4. linux kernel 最新版本,linux kernel 最新版本4.10正式发布 附下载地址
  5. 《标准库time、datetime、calendar、random的使用》
  6. 顶级程序员的心得–Coders at Work
  7. 程序员的未来在哪里?赶紧看看!!
  8. BZOJ4199 NOI2015品酒大会(后缀树)
  9. 微软:macOS 漏洞可用于绕过TCC技术,访问用户敏感数据
  10. 20.QT-Qpixmap实现图片鼠标缩放,鼠标拖动示例(详解)
  11. exls表格搜索快捷键_excel表格里搜索快捷键是什么,excel的搜索快捷键是什么?...
  12. 洛谷P5385 [Cnoi2019]须臾幻境
  13. Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use.
  14. 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
  15. 绘画教程:如何轻松画出皮肤的挤压感
  16. 券商也“网红”,证券行业IT服务运维发展按下“快进键”
  17. kaldi 的安装和thchs30语音识别测试
  18. 2022年金三银四面试葵花宝典(你不知道的程序员面试技巧)
  19. 攻读学位研究计划计算机专业,拟攻读博士学位的科学研究计划书模板
  20. 获取树结构JAVA代码设计

热门文章

  1. Java中高效判断数组中是否包含某个元素
  2. java reflectionutils_Spring中的各种Utils(五):ReflectionUtils详解(转载)
  3. 为何控件删除不了_过不好又离不了的婚姻,不如这样去处理
  4. mysql bug_MySQL 记一次 Bug发现过程
  5. 抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...
  6. 加载中图片 转圈_对话洛可可平面设计师:平面设计中的效率瓶颈
  7. 汤姆克兰西全境封锁服务器维护时间,汤姆克兰西全境封锁无法登录怎么解决 无法登录解决方法攻略...
  8. 加载oracle属性文件,关于属性文件的详细介绍
  9. 计算机网络 --- 数据链路层介质访问控制
  10. linux下c语言绘图库_Linux 下的图形库介绍