三、什么是阿里云实时计算
实时计算(Alibaba Cloud RealtimeCompute,Powered by Ververica)是阿里云提供的基于 Apache Flink 构建的企业级大数据计算平台。它可以在 PB 级别的数据集上可以支持亚秒级别的处理延时,赋能用户标准实时数据处理流程和行业解决方案;在支持 Datastream API 作业开发的同时,提供了批流统一的 Flink SQL,弥补了社区 SQL 功能缺失,使得 BI 场景下的开发变得更加简单。丰富的上下游 connector 保证了与用户已使用的大数据组 件无缝对接;智能作业调优和诊断功能进一步简化了用户的开发和使用。同时,实时计算在 Apache Flink 核心功能的基础上还增强了企业用户所关注的集群稳定、性能优化、安全控制、系统监 控和作业管理等。
目前阿里云实时计算 Realtime Compute 在各行业丰富的场景中都有应用,得到了金融、物流、广告、IoT等行业一线企业的一致认可。
3.1 产品特点
• 强大的实时处理能力
阿里云实时计算集成诸多全链路功能,方便进行全链路实时计算开发,包括:
强大的流计算(实时计算)引擎。
阿里云实时计算提供Flink SQL,支持各类错误场景的自动恢复,保证故障情况下数据处理的准确性。
支持多种内置函数,包括:字符串函数、日期函数和聚合函数等。
精确的计算资源控制,高度保证您的作业的隔离性。
关键性能指标为开源Flink的3到4倍。数据计算延迟优化到秒级。单个作业吞吐量可达到百万(记录/秒)级别,单集群规模达到数千台。
深度整合各类云数据存储。阿里云实时计算可以直接读写包括数据总线DataHub、日志服务LOG、云数据库RDS版、表格存储TableStore、分析型数据库MySQL版在内的各类数据存储系统,无需进行额外的数据集成工作。
• 托管的实时计算服务
不同于开源或者自建的流式处理服务,阿里云实时计算是完全托管的流式计算引擎。阿里云可以针对流数据运行查询,无需预置或管理任何基础设施。在阿里云实时计算,可以享受一键启用的流式数据服务能力。阿里云实时计算天然集成数据存储、数据开发、数据运维、监控报警等功能,方便以较小成本试用和迁移流式计算。同时,实时计算提供完全租户隔离的托管运行服务。从最上层工作空间,到最底层执行机器,提供高度有效的隔离和全面防护,客户可以放心使用实时计算。
• 低廉的人力和集群成本
大量优化的SQL执行引擎,提供比开源Flink作业更高效且更廉价的计算作业。在开发成本和运行成本方面,阿里云实时计算均要远低于开源流式框架。例如,项目预算时客户需要考虑如下成本:
编写一个复杂业务逻辑下Flink作业Java代码的人力成本。
针对作业的调试、测试、调优和上线工作成本。
后续长期用于Flink或Zookeeper等开源软件的运维成本。
如果使用阿里云实时计算服务,客户可以专注于业务。
3.2 产品定位
目前实时计算适用的应用场景
实时的网络点击PV、UV统计。
统计交通卡口平均时间段内(例如平均每5分钟)的车流量。
水利大坝的压力数据的统计和展现。
网络支付中涉及金融盗窃固定行为规则的告警。
目前实时计算无法实现的场景
Oracle存储过程无法使用实时计算替换。实时计算无法从功能上完全替换掉Oracle存储过程,两者面向问题领域不一致。
Spark作业无法无缝迁移至实时计算。Spark中涉及实时计算的部分,可以通过改造,完成从Spark至实时计算的迁移。完成迁移后您可以省去运维Spark和开发Spark等工作成本。
实时计算无法实现多条复杂规则引擎的告警功能。如果单一数据存在多条复杂规则的告警,在系统运行的同时,告警本身也会发生变化。这类场景建议使用规则引擎系统解决,实时计算主要针对的不是此类问题。
当前实时计算对外接口定义为Flink SQL加UDF。实时计算提供服务于流式数据分析、统计、处理等应用场景的一站式开发工具。面向的用户包括数仓开发人员、数据分析师等。您通过编写Flink SQL,即可完成自身流式数据分析业务,不需要参与底层代码开发。
3.3 基本概念
- 计算集群(ComputeCluster)
计算集群是承载实时计算产品计算任务的分布式集群系统,基于YARN模式。根据集群的形态不同,实时计算分为独享模式和共享模式。
- 开发界面(WebConsole)
实时计算提供了一套完整在线IDE开发工具,一站式集成数据存储、数据开发、数据运维和监控报警等功能,辅助您进行业务开发。
- 项目空间(Project)
项目空间是实时计算最基本的业务组织单元,是您管理集群、作业、资源和人员的基本单元。您可以新建项目,也可以以子账号身份加入其它项目空间。
- 实时计算单元(CU)
在实时计算中,作业的实时计算单元为CU。1 CU描述了1个实时计算作业最小运行能力,即在限定的CPU、内存和I/O情况下对于事件流处理的最小能力。1个实时计算作业可以指定在1个或者多个CU上运行。当前对实时计算单元(CU)运行能力的定义:1
CU=1 CPU + 4GMEM。其处理能力约为:
• 简单业务:例如单流过滤、字符串变换等操作,1 CU每秒可以处理10000条数据。
• 复杂业务:例如JOIN、窗口和GROUP BY等操作,1 CU每秒可以处理1000到5000条数据。
3.4 产品形态
目前有两种产品形态,可以适应不同客户的需求。
底座适配Hadoop(EMR)、K8S(ACK)两大调度体系,可以适配不同技术栈的客户需求。
3.5 应用场景
3.5.1 已有流处理系统迁移
如果本地已安装Flink、Storm或Spark Streaming系统,可以直接迁移到实时计算产品。
3.5.2 按照部门场景划分
可以根据企业部门不同的角度对实时计算进行划分:
- 业务部门:实时风控、实时推荐、搜索引擎的实时索引构建等。
- 数据部门:实时数仓、实时报表、实时大屏等。
- 运维部门:实时监控、实时异常检测和预警、全链路Debug等
。
3.5.3 按照技术领域划分
在前面,Flink的使用场景中,我们便做了技术划分,实时计算也是按这三个部分进行划分的。
- 实时ETL和数据流
实时ETL和数据流的目的是实时地把数据从A点投递到B点。在投递的过程中可能添加数据清洗和集成的工作,例如实时构建搜索系统的索引、实时数仓中的ETL过程等。
和Spark的不同之处在于,Flink使用流式处理来模拟批处理,因此实时计算能提供亚秒级、符合Exactly-once语义的实时处理能力,通过构建实时的数据通道,在不同的存储之间搬运和转换数据。
- 实时数据分析
数据分析指的是根据业务目标,从原始数据中抽取对应信息并整合的过程。例如,查看每天销量前10的商品、仓库平均周转时间、文档平均点击率、推送打开率等。实时数据分析则是上述过程的实时化,通常在终端体现为实时报表或实时大屏。
- 事件驱动应用
事件驱动应用是对一系列订阅事件进行处理或作出响应的系统。事件驱动应用通常需要依赖内部状态,例如点击欺诈检测、风控系统、运维异常检测系统等。当用户的行为触发某些风险控制点时,系统会捕获这个事件,并根据用户当前和之前的行为进行分析,决定是否对用户进行风险控制。
3.5.4 场景实践
在电商行业实战场景:
- 利用实时计算获取最新交易记录
- 使用实时计算完成时态势感知和订单地理分布,有助于企业及时的优化产品品类的分配和发布
- 实时计算能够实时的去监控用户的消费金额,在双十一活动中,筛选满足营销红包发放条件的用户
- 使用实时计算制作实时PV和UV曲线图
- 使用实时计算完成数据的实时处理、多类目的管理
- 使用实时计算完成订单与销量的统计
IoT行业实战场景:
工业客户拥有1千多台设备,分布在不同城市的多个厂区,每个设备上有10个不同种类传感器,这些传感器,大概每5秒采集并上传一份数据到日志服务(Log/SLS)。同时,上述传感器分布在多个设备、多个厂区,用户在RDS上记录传感器、设备、厂区的分布维表。
使用阿里云实时计算可以将数据按照一定窗口汇聚,并根据传感器不同维度进行数据筛选,打平为一张宽表,完成多维度传感器数据分析。
视频直播行业实战场景:
视频核心指标监控,使用实时计算监控系统稳定性和平台运营情况
使用实时计算完成直播数字化运营,包括热门视频、用户走势等等
3.6 使用限制
目前实时计算所支持的服务范围和相应的限制,包括CU处理能力的限制、项目创建的限制。
3.6.1 支持地域
实时计算当前支持的地域
- Flink半托管(基于 ACK):华南1(深圳)、华北2(北京)、华东2(上海)、华北3(张家口)、华东1(杭州)。
- Blink独享/共享集群(原产品线):
独享模式(按量付费):华东1(杭州)、华北2(北京)、华东2(上海)、华南1(深圳)。
独享模式(包年包月):华东1(杭州)、华北2(北京)、华东2(上海)、华南1(深圳)、华北3(张家口)、中国(香港)、新加坡。
共享模式:华南1(深圳)
3.6.2 CU处理能力
实时计算当前在内部压测场景下,一个CU的处理能力估算如下:
- 简单业务:例如单流过滤、字符串变换等操作,1CU每秒可以处理10000条数据。
- 复杂业务:例如JOIN、窗口、GROUP BY等操作,1CU每秒可以处理1000到5000条数据。
3.6.3 作业、任务数量限制
实时计算对整个项目(Project)下属的作业、Task版本、IDE打开Task页面数量均有不同限制。包括:
- 单个项目下允许最多创建作业的个数为100。
- 单个项目下允许最多的文件夹的个数为50,层级最大不超过5层。
- 单个项目下允许最多的UDX或JAR个数为50。
- 单个项目下允许最多注册数据存储的个数为50。
- 单个作业允许最多的历史保存版本数为20。