表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供PB级结构化数据存储、千万TPS以及毫秒级延迟的服务能力。在实时计算场景里,表格存储强大的写入能力和多模型的存储形态,使其不只能够做为计算结果表,同时也彻底具有做为实时计算源表的能力。
通道服务是表格存储提供的全增量一体化数据消费功能,为用户提供了增量、全量和增量加全它量三种类型的分布式数据实时消费通道。实时计算场景下,经过为数据表创建数据通道,用户能够以流式计算的方式对表中历史存量和新增数据作数据消费。html
利用表格存储存储引擎强大的写入能力和通道服务完备的流式消费能力,用户能够轻松作到数据存储和实时处理all in one!前端
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。less
咱们以一个作态势感知的大数据分析系统为例,为你们阐述表格存储和Blink实时计算的架构优点。假如客户是大型餐饮企业CEO,连锁店遍及全国各地,CEO很是关心本身有没有服务好全国各地的吃货,好比台湾顾客和四川顾客在口味评价上会不会有不一样?本身的菜品是否已经热度降低了?为了解决这些问题,CEO须要一个大数据分析系统,一方面能够实时监控各地菜品销售额信息,另外一方面也但愿能有按期的历史数据分析,能给出本身关心的客户变化趋势。运维
用技术角度来解读,就是客户须要:1. 客户数据的实时处理能力,持续聚合新增的订单信息,能大屏展现和以日报形式展现;2.对历史数据的离线分析能力,分析离线数据作态势感知、决策推荐。分布式
经典的解决方案基本上基于Lambda大数据架构[2]
,以下图1,用户数据既须要进入消息队列系统(New Data Stream如Kafka)做为实时计算任务的输入源,又须要进入数据库系统(All Data如HBASE)来支持批处理系统,最终二者的结果写入数据库系统(MERGED VIEW),展现给用户。性能
这个系统的缺点就是太庞大,须要维护多个分布式子系统,数据既要写入消息队列又要进入数据库,要处理二者的双写一致性或者维护二者的同步方案,计算方面要维护两套计算引擎、开发两套数据分析代码,技术难度和人力成本很高。
利用表格存储同时具有强大的写入能力、实时数据消费能力,Blink + SQL的高性能和流批融合,经典Lambda架构能够精简为下图2,基于表格存储和Blink的实时计算架构:大数据
该架构引入的依赖系统大大减小,人力和资源成本都明显降低,它的基本流程只包括:优化
介绍完架构,咱们就来迅速开发一个基于TableStore和Blink的日报实时计算SQL,以流计算的方式统计每日各个城市的实时用餐单数和餐费销售额。
在Blink开发界面,建立消费订单源表、日统计结果表、每分钟聚合视图和写入SQL:
---消费订单源表 CREATE TABLE source_order ( id VARCHAR,-- 订单ID restaurant_id VARCHAR, --餐厅ID customer_id VARCHAR,--买家ID city VARCHAR,--用餐城市 price VARCHAR,--餐费金额 pay_day VARCHAR, --订单时间 yyyy-MM-dd primary(id) ) WITH ( type='ots', 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', column='summary_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;
使用表格存储和Blink的大数据分析架构,相对于传统开源解决方案,有不少优点:
一、强大的存储和计算引擎,表格存储除了海量存储、极高的读写性能外,还提供了多元索引、二级索引、通道服务等多种数据分析功能,相对HBASE等开源方案优点明显,Blink关键性能指标为开源Flink的3到4倍,数据计算延迟优化到秒级甚至亚秒级;
二、全托管服务,表格存储和Blink都全托管的serverless服务,即开即用;
三、低廉的人力和资源成本,依赖服务全serverless免运维,按量付费,避免波峰波谷影响;
篇幅缘由,本文主要介绍了表格存储和Blink结合的大数据架构优点,以及简单SQL演示,后续更复杂、贴近场景业务的文章也会陆续推出,敬请期待!
1. Blink解密,https://yq.aliyun.com/articles/689117
2. Lambda大数据架构,https://mapr.com/developercentral/lambda-architecture/
本文为云栖社区原创内容,未经容许不得转载。