Tablestore + Blink实战:交易数据的实时统计

背景

交易数据的实时统计是电商网站一个核心功能,可以帮助用户实时统计网站的整体销售情况,快速验证“新销售策略”的效果。我们今天介绍一个基于表格存储(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
tsinteger交易时间(Unix时间戳,毫秒精度)
pricedouble交易金额
buyeridinteger买家ID
selleridinteger卖家ID
productidinteger商品ID

Sink表(结果表)- sink_order

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

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 效果


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无标注数据是鸡肋还是宝藏?阿里工程师这样用它

阿里妹导读:针对业务场景中标注数据不足、大量的无标注数据又难以有效利用的问题,我们提出了一种面向行为序列数据的深度学习风控算法 Auto Risk,提出通过代理任务从无标注数据中学习通用的特征表示。这种思想与目前 NLP 领域前沿的 Bert 等预…

Android 控件 - TextView

1、TextView https://www.bilibili.com/video/BV13y4y1E7pF?p3 1.1、layout_width、layout_height match_parent:表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小 wrap_content:表示让当前的控件大小能够刚好…

为什么选择Cassandra

cassandra概况 为什么选择Cassandra?cassandra到底有那些令人印象深刻的特点呢?不防我们先来看下cassandra目前的大体概况。 理论扎实,师出名门 cassandra不仅吸收了dynamo论文中的如何做分布式,如何做副本复制,故障…

加速开放混合云技术开发,满足客户新需求,红帽打出这套组合拳!

云计算发展有几十年的历史了,随着科技的进步和发展,云技术慢慢渗透到各行各业,企业上云也不再是新鲜事,据《2020-2026年中国云计算行业市场分析预测及战略咨询研究报告》数据显示:2018年,以IaaS、PaaS和Saa…

系统性能提升利刃 | 缓存技术使用的实践与思考

导读 按照现在流行的互联网分层架构模型,最简单的架构当属Web响应层DB存储层的架构。从最开始的单机混合部署Web和DB,到后来将二者拆分到不同物理机以避免共享机器硬件带来的性能瓶颈,再随着流量的增长,Web应用变为集群部署模式&…

Android 控件 - Button

1、Button 1.1、新建 mybutton 模块 在原有项目基础上新建 mybutton项目 1.2、Button基础 在源码中Button继承TextView,所以TextView有的功能Button基本都有,重复功能不在赘述 1.2.1 设置button背景颜色 当使用background不起作用时&#xff0c…

通过SQL即可让监控分析更简单更高效

1.前言 阿里时序时空数据库TSDB最新推出TSQL,支持标准SQL的语法和函数。用户使用熟悉的SQL,不仅仅查询更简单易用,用户还可以利用SQL强大的功能,实现更加复杂的计算分析。 2. 为什么需要用SQL做时序查询? 2.1 SQL拥…

深度好文 | 战“疫”上云正当时:打开云计算的正确姿势

作者 | 马超责编 | Carol封图 | CSDN 付费下载于视觉中国4月29日,谷歌的母公司Alphabet正式发布了2020年第一季度财报,报告显示,Alphabet比去年同期的363.39亿美元增长13%,不计入汇率变动的影响为同比增长15%;在业绩公…

Windows批处理文件(.bat文件和.cmd文件)简单使用

cmd文件和bat文件的区别,从文件描述中的区别是,cmd文件叫做:Windows命令脚本,bat文件叫:批处理文件,两者都可以使用任意一款文本编辑器进行创建、编辑和修改,只是在cmd中支持的命令要多于bat。 …

AnalyticDB for MySQL:PB级云数仓核心技术和场景解析

2019阿里云峰会上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能高级技术专家南仙的精彩演讲&#xff…

UML科普文,一篇文章掌握14种UML图

来源 | 如逆水行舟责编 | Carol封图 | CSDN 付费下载于视觉中国什么是UML?UML是Unified Model Language的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语言。为什么要用UML?通过使用UML使得在软件开发之前&#xff0c…

企业级数据库新型研发模式——数据管理DMS实践

2019阿里云峰会上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能技术专家王天振 (为知)的精彩演讲&…

linux-centos7环境搭建

1、下载centos7 官网地址: http://isoredirect.centos.org/centos/7/isos/x86_64/ 阿里云: http://mirrors.aliyun.com/centos/ 以下针对各个版本的ISO镜像文件,进行一一说明: CentOS-7-x86_64-DVD-1708.iso 标准安装版&#x…

揭秘!机器人和你对话时在想什么?

阿里妹导读:为什么聊天机器人越来越普及?聊天机器人不仅可以节省时间,提升效率,还能一天24小时提供服务,更是可以减少误差。聊天机器人背后的问题原理是什么?效率如何提升?就是今天我们要了解的…

阿里云与A站在一起后,悄悄干了件大事

八月盛夏,“AcFun弹幕视频网站”(简称“A站”)的视频服务器全面迁移上阿里云(此处应有掌声)! A站去年与阿里云达成此项合作。在迁移过程中,阿里云提供专业技术解决方案团队,为A站建立…

科大讯飞营收破百亿,员工涨薪27%,羡慕这个AI“老大哥”​了!

科大讯飞,中国AI公司“老大哥”,交出2019年成绩单。营收达到100.79亿,首次破百亿;净利润同比增长51.12%,达到8.19亿,日均盈利224万元,创下历史最佳业绩。与此同时,5大厂2020年应届生…

Knative Serving 之路由管理和 Ingress

Knative 默认会为每一个 Service 生成一个域名,并且 Istio Gateway 要根据域名判断当前的请求应该转发给哪个 Knative Service。Knative 默认使用的主域名是 example.com,这个域名是不能作为线上服务的。本文我首先介绍一下如何修改 默认主域名&#xff…

linux-centos7 关机命令、系统目录结构介绍

1、关机命令 关机指令 shutdown; sync # 将数据由内存同步到硬盘中,一般关机前需要同步一下,防止数据丢失shutdown # 关机指令,会在一定时间后关机,我试的是一分钟后关机shutdown -h 10 # 十分钟后关机 shutdown -h 10 # 十分…

SprinBoot2.X 集成 Flowable6.6 工作流引擎

上一篇:SpringBoot2.x Flowable 6.4.2 开源项目 码云开源地址:https://gitee.com/lwj/flow GitHub开源地址:https://github.com/ecnice/flow flowable学习 可以入群:633168411 说明:此项目是我师傅为了帮助更多小伙伴们入门工作流…

OceanBase高可用实践

背景 高可用是构建分布式系统的基石。一方面,出于成本考虑, 分布式系统往往采取比较廉价的硬件,其可靠性相对于小型机、专有硬件有很大的不足, 而分布式系统的规模一般比较大,假如硬件的可靠性只有三个9(99.9%)&#…