公司宣传网站,网站浏览器兼容性问题吗,免费论坛建站,社区团购小程序模板表格存储: 数据存储和数据消费All in one
表格存储#xff08;Table Store#xff09;是阿里云自研的NoSQL多模型数据库#xff0c;提供PB级结构化数据存储、千万TPS以及毫秒级延迟的服务能力。在实时计算场景里#xff0c;表格存储强大的写入能力和多模型的存储形态…表格存储: 数据存储和数据消费All in one
表格存储Table Store是阿里云自研的NoSQL多模型数据库提供PB级结构化数据存储、千万TPS以及毫秒级延迟的服务能力。在实时计算场景里表格存储强大的写入能力和多模型的存储形态使其不仅可以作为计算结果表同时也完全具备作为实时计算源表的能力。通道服务是表格存储提供的全增量一体化数据消费功能为用户提供了增量、全量和增量加全它量三种类型的分布式数据实时消费通道。实时计算场景下通过为数据表建立数据通道用户可以以流式计算的方式对表中历史存量和新增数据做数据消费。
利用表格存储存储引擎强大的写入能力和通道服务完备的流式消费能力用户可以轻松做到数据存储和实时处理all in one
Blink: 流批一体的数据处理引擎
Blink是阿里云在Apache Flink基础上深度改进的实时计算平台同Flink一致Blink旨在将流处理和批处理统一但Blink相对于社区版Flink在稳定性上有很多优化在某些场景特别是在大规模场景会比Flink更加稳定。Blink的另一个重大改进是实现了全新的 Flink SQL 技术栈在功能上Blink支持现在标准 SQL 几乎所有的语法和语义在性能上Blink也比社区Flink更加强大特别是在批 SQL 的性能方面当前 Blink 版本是社区版本性能的 10 倍以上跟 Spark 相比在 TPCDS 这样的场景 Blink 的性能也能达到 3 倍以上[1]。
从用户技术架构角度分析结合表格存储和Blink可以做到1. 存储侧使用表格存储则可以做到写一份数据业务立即可见同时原生支持后续流式计算消费无需业务双写2. 计算侧使用Blink流批一体处理引擎可以统一流批计算架构开发一套代码支持流批两个需求场景。
本文就将为大家介绍实时计算的最佳架构实践基于表格存储和Blink的实时计算架构并带快速体验基于表格存储和Blink的数据分析job。
更优的实时计算架构基于表格存储和Blink的实时计算架构
我们以一个做态势感知的大数据分析系统为例为大家阐述表格存储和Blink实时计算的架构优势。假如客户是大型餐饮企业CEO连锁店遍布全国各地CEO非常关心自己有没有服务好全国各地的吃货比如台湾顾客和四川顾客在口味评价上会不会有不同自己的菜品是否已经热度下降了为了解决这些问题CEO需要一个大数据分析系统一方面可以实时监控各地菜品销售额信息另一方面也希望能有定期的历史数据分析能给出自己关心的客户变化趋势。
用技术角度来解读就是客户需要1. 客户数据的实时处理能力持续聚合新增的订单信息能大屏展示和以日报形式展示2.对历史数据的离线分析能力分析离线数据做态势感知、决策推荐。
经典的解决方案基本上基于Lambda大数据架构[2]如下图1用户数据既需要进入消息队列系统New Data Stream如Kafka作为实时计算任务的输入源又需要进入数据库系统(All Data如HBASE)来支持批处理系统最终两者的结果写入数据库系统(MERGED VIEW)展示给用户。 图-1 Lambda大数据架构
这个系统的缺点就是太庞大需要维护多个分布式子系统数据既要写入消息队列又要进入数据库要处理两者的双写一致性或者维护两者的同步方案计算方面要维护两套计算引擎、开发两套数据分析代码技术难度和人力成本很高。 利用表格存储同时具备强大的写入能力、实时数据消费能力Blink SQL的高性能和流批融合经典Lambda架构可以精简为下图2基于表格存储和Blink的实时计算架构 图-2 基于表格存储和Blink的实时计算架构
该架构引入的依赖系统大大减少人力和资源成本都明显下降它的基本流程只包括
用户将在线订单数据或者系统抓取数据写入表格存储源表源表创建通道服务数据通道实时计算任务(黄线)使用Blink表格存储数据源DDL定义SQL源表和结果表开发和调试实时订单日聚合SQL job批处理计算任务(绿线)定义批处理源表结果表[1]开发历史订单分析SQL job;前端服务通过读取表格存储结果表展示日报和历史分析结果
快速开始
介绍完架构我们就来迅速开发一个基于TableStore和Blink的日报实时计算SQL以流计算的方式统计每日各个城市的实时用餐单数和餐费销售额。
在表格存储控制台创建消费订单表consume_source_table(primary key: id[string])并在订单表-通道管理下建立增量通道blink-demo-stream, 创建日统计结果表result_summary_day(primary key: summary_date[string]) 在Blink开发界面创建消费订单源表、日统计结果表、每分钟聚合视图和写入SQL ---消费订单源表
CREATE TABLE source_order (id VARCHAR,-- 订单IDrestaurant_id VARCHAR, --餐厅IDcustomer_id VARCHAR,--买家IDcity VARCHAR,--用餐城市price VARCHAR,--餐费金额pay_day VARCHAR, --订单时间 yyyy-MM-ddprimary(id)
) WITH (typeots,endPoint http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com,instanceName blink-demo,tableName consume_source_table,tunnelName blink-demo-stream,
);---日统计结果表
CREATE TABLE result_summary_day (summary_date VARCHAR,--统计日期total_price BIGINT,--订单总额total_order BIGINT,--订单数primary key (summary_date)
) WITH (type ots,endPoint http://blink-demo.cn-hangzhou.ots-internal.aliyuncs.com,instanceName blink-demo,tableName result_summary_day,columnsummary_date,total_price,total_order
);INSERT into result_summary_day
select
cast(pay_day as bigint) as summary_date, --时间分区
count(id) as total_order, --客户端的IP
sum(price) as total_order, --客户端去重
from source_ods_fact_log_track_action
group by pay_day; 上线聚合SQL, 在表格存储源表写入订单数据可以看到result_summary_day持续更新的日订单数大屏展示系统可以根result_summary_day直接对接
总结
使用表格存储和Blink的大数据分析架构相对于传统开源解决方案有很多优势
1、强大的存储和计算引擎表格存储除了海量存储、极高的读写性能外还提供了多元索引、二级索引、通道服务等多种数据分析功能相对HBASE等开源方案优势明显Blink关键性能指标为开源Flink的3到4倍数据计算延迟优化到秒级甚至亚秒级 2、全托管服务表格存储和Blink都全托管的serverless服务即开即用 3、低廉的人力和资源成本依赖服务全serverless免运维按量付费避免波峰波谷影响
篇幅原因本文主要介绍了表格存储和Blink结合的大数据架构优势以及简单SQL演示后续更复杂、贴近场景业务的文章也会陆续推出敬请期待
原文链接 本文为云栖社区原创内容未经允许不得转载。