【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3

四、Flink vs. Blink


4.1 Spark Streaming、Kafka Streams、Storm等存在的问题


在设计一个低延迟、exactly once、流和批统一的,能够支撑足够大体量的复杂计算的引擎时,Spark Streaming 等的劣势就显现出来。Spark Streaming的本质还是一个基于microbatch计算的引擎。这种引擎一个天生的缺点就是每个microbatch的调度开销比较大,当我们要求的延迟越低,额外的开销就越大。这就导致了Spark Streaming实际上不是特别适合于做秒级甚至亚秒级的计算。


Kafka Streams 是从一个日志系统做起来的,它的设计目标是足够轻量,足够简洁易用。这一点很难满足我们对大体量的复杂计算的需求。


Storm是一个没有批处理能力的数据流处理器,除此之外Storm只提供了非常底层的API,用户需要自己实现很多复杂的逻辑。


4.2 Flink的优势


(1)不同于Spark,Flink是一个真正意义上的流计算引擎,和Storm类似,Flink是通过流水线数据传输实现低延迟的流处理;


(2)Flink使用了经典的Chandy-Lamport算法,能够在满足低延迟和低failover开销的基础之上,完美地解决exactly once的目标;


(3)如果用一套引擎来统一流处理和批处理,那就必须以流处理引擎为基础。Flink还提供了SQL/tableAPI这两个API,为批和流在query层的统一又铺平 了道路。因此,Flink是最合适的批和流统一的引擎;


(4)Flink在设计之初就非常在意性能相关的任务状态state和流控等相关技术的设计,这些都使得用Flink执行复杂的大规模任务能时性能更胜一筹。


4.3 Flink和Blink的主要区别


简单地说,Blink就是阿里巴巴开发的基于开源Flink的企业版计算引擎。如前面所说,虽然Flink在理论模型和架构方面有很多创新,但是在工程实现上还有不少问题。


2015年到2016年,阿里巴巴团队主要专注于解决Blink的runtime稳定性和scalability的问题:


(1)优化了集群调度策略使得Blink能够更好更合理地利用集群资源;


(2)优化了checkpoint机制,使得Blink能够很高效地处理拥有很大状态的job;


(3)优化了failover的策略,使得job在异常的时候能够更快恢复,从而对业务延迟造成更少的影响;


(4)设计了异步算子,使得Blink能够在即使被读取外部数据阻塞的同时还能继续处理其他event,从而获得整体非常高的吞吐率。


在拥有了稳定的runtime之后,开始专注于增强Blink的易用性 。所以在2016年底到现在,阿里巴巴团队大力开发Blink实时计算SQL,通过SQL作为统一API服务于各种复杂业务。从规范Streaming SQL的语义和标准,到实现UDX、join、aggregation、window等一系列SQL最重要的算子,几乎一手打造了完整的Streaming SQL,并且将这些工作推回了FLink社区,得到Flink社区的认可。


4.4 流数据的SQL查询存在的难点,以及Blink的解决方案


流计算SQL设计中最大的难点就是Stream SQL的语义和标准。这个事情在Flink和Calcite两个社区一直都在讨论研究中,后来达成共识—世界上不存在Stream SQL。流和批的计算可以自然而然地在传统SQL这一层统一。


流计算所特有的unbounded特性其实本质只是何时观测抽样计算结果,这种属性可以作为一个job的configure来设置而无需去改变用户的业务查询逻辑。为了能够使用传统SQL在流计算上执行,阿里巴巴和Flink社区一起引入了动态表的概。除了动态表之外,阿里巴巴还提出并解决了流计算撤回等其他重要的流计算场景拥有的概念。有了这些语义和功能,使用传统批处理SQL就能写出Blink流式计算的任务,这样就使得使用Blink SQL作为一个支持流处理和批处理的统一的API成为可能。


基于Blink SQL,阿里巴巴打造了新一代阿里巴巴流计算平台streamCompute。现在整个阿里集团包括搜索、推荐、广告等大部分核心流计算业务都是通过streamCompute平台来提供服务。


五、Referece


阿里云实时计算产品文档

https://help.aliyun.com/product/45029.html?spm=5176.13910061.1131226.3.60735f872nXZRJ


阿里云实时计算整体解决方案

https://developer.aliyun.com/article/765097spm=a2c6h.12873639.0.0.383449ffOD9vSk&groupCode=sc


阿里云实时计算产品案例&解决方案汇总

https://developer.aliyun.com/article/691499


Apache Flink 中文社区

https://ververica.cn/


Apache Flink 中文社区B站视频地址

https://space.bilibili.com/33807709?spm_id_from=333.788.b_765f7570696e666f.2


我的Flink学习记录专栏

https://blog.csdn.net/beiisbei/category_9882999.html


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
2月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
483 5
|
30天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110844 99
阿里云实时计算Flink的产品化思考与实践【下】
|
1月前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1416 1
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
1月前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1356 1
官宣|Apache Flink 1.19 发布公告
|
1月前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
143 3
|
1月前
|
Oracle 关系型数据库 流计算
flink cdc 同步问题之报错org.apache.flink.util.SerializedThrowable:如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
152 0
|
1月前
|
消息中间件 Java Kafka
Apache Hudi + Flink作业运行指南
Apache Hudi + Flink作业运行指南
86 1
|
1月前
|
缓存 分布式计算 Apache
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
61 0
|
1月前
|
监控 Apache 开发工具
Apache Flink 1.12.2集成Hudi 0.9.0运行指南
Apache Flink 1.12.2集成Hudi 0.9.0运行指南
67 0

热门文章

最新文章

推荐镜像

更多