Ververica Platform-阿里巴巴全新Flink企业版揭秘

摘要:2019云栖大会大数据 & AI专场,阿里巴巴资深技术专家王峰带来“Ververica Platform-阿里巴巴全新Flink企业版揭秘”的演讲。本文主要从Ververica由来开始谈起,着重讲了Ververica Platform的四个核心插件App Manager、Libra Service、Stream Ledger、Gemini,以及阿里巴巴实时计算云原生版本相关特性及典型应用场景。

直播回放请点击

以下是精彩视频内容整理:

随着人工智能时代的降临,数据量的爆发,在典型的大数据业务场景下数据业务最通用的做法是:选用批处理的技术处理全量数据,采用流式计算处理实时增量数据。2017年基于Flink开发的实时计算产品正式服务于阿里巴巴集团内部,并从搜索和推荐两大场景开始应用。目前阿里巴巴及下属所有子公司,都采用实时计算产品来处理所有的实时业务。

Ververica 是如何诞生的?

众所周知,Apache Flink是业界非常流行的流计算引擎,最早诞生于欧洲,是柏林大学的研究型项目。后来由项目的发起人创办了DataArtisans公司并根据该研究项目孵化出 Flink,并于2014年将 Flink 捐赠给 Apache基金会。

同年,阿里巴巴开始关注Flink。由于搜索有很多业务场景非常依赖大数据和实时数据处理,而Flink在架构设计上,作为全流式的执行引擎,数据处理效率非常高。于是阿里巴巴内部开始着手研究Flink,并看好Flink将会成为新一代计算引擎,加速大数据计算的未来发展。

经过一年努力,阿里内部对Flink的开源版本做了很多深度优化与改进,使其能够适应阿里巴巴超大规模的业务场景,包括搜索、推荐等核心的业务场景。2016年,第一次将Flink推到双11场景使用,构建了搜索、推荐的全实时链路(包括在线学习、模型预测等),形成了一套完整的闭环。2017年,阿里巴巴全线上线了基于Flink实时计算产品,服务于阿里巴巴的搜索、推荐等核心场景以及广告、数据和所有部门的实时在线业务,比如:阿里巴巴双11全天各种多维的数据统计,交易额大屏幕的全球直播等全部都是由基于Flink的实时计算产品来支持。

在此基础之上,2018年,我们首次在阿里云公有云推出基于Flink的实时计算服务,开始支持各行各业的企业客户。阿里巴巴对Flink的认可度在逐渐增加,Flink也证明了在实时计算的业务中的巨大潜力。自此,阿里巴巴加大了对Flink的投入并加速推进Flink社区的发展。2019年1月,阿里巴巴收购了DataArtisans并创建了新企业品牌Ververica,以上即为Flink的企业品牌Ververica的由来。

在开源这块,相信大家都非常了解每个大的开源项目背后都有一个企业品牌,随着整合的逐步完善,德国的Flink创始团队与中国阿里巴巴的实时计算团队也开始密切合作。与此同时,我们也在持续推动Flink社区的发展。1月初,阿里巴巴将内部维护的Flink分支Blink贡献给整个Flink开源社区,目前阿里巴巴对Flink社区贡献的代码已超过100万行。并且,两个团队密切配合在商业化上进行联合作战,推出全新的Flink企业版——Ververica Platform。

Ververica Platform的技术架构如何,能够解决哪些应用场景,下面将详细讲解。

Ververica Platform 介绍

Ververica Platform是阿里巴巴推出的全新企业版,它仍然坚持以Apache Flink 的社区版本为内核,同时能够兼容各种企业级插件,在整个基于Flink的实时计算解决方案上对应用性、稳定性、性能、可运维性等方面提供企业级的增值服务。

首先,Ververica Platform是一个企业级的开放软件,支持客户将其部署在生产环境中,对接已有的周边生态系统如日志、Metrics、存储等。最初在设计Ververica Platform时就将其定位为完全云原生的方案,系统组件和核心组件都以支持微服务方式部署到Kubernetes上,用户可以非常方便的将Ververica Platform和自己的在线服务或其他数据服务做云原生的混布。

Ververica Platform 计算引擎

Ververica Platform使用Apache Flink作为其核心的计算引擎,保证和社区的完全兼容。上图为Apache Flink最新演进的架构图。Apache Flink的本质是一款有状态的流式计算引擎,可以连接各种各样的存储,通过ETL计算、数据分析等将数据结果导入到另外的存储中。作为流式计算,Flink的时效性非常好,可以在高吞吐量的同时达到亚秒级延时。Flink不仅能够连接消息队列等无限数据流的数据源,也可以连接文件系统、数据库表、KV存储等有限的数据集,所以Flink也在基于流式计算的优势上逐渐朝着批流融合的方向发展,有希望成为一种新的批流合一的全能计算引擎。

所以Ververica Platform将会依赖社区的力量,采用Flink社区的主流版本作为内核,所有的增值服务、各种优化都会通过嵌入的方式来实现,为用户提供一个开放透明的计算引擎。以下将详细介绍Ververica Platform的核心插件。

Ververica Platform – App Manager

Ververica Platform在应用上的企业级插件叫APP Manager,是管理Flink全生命周期的工具。Flink作为计算引擎,在易用性方面可以采用多种优化来帮助用户更高效地使用Flink系统。比如,整个Job生命周期的管理,从Job的开发、配置,到提交上线、停止重启等基本的运维功能可以通过APP Manager封装出一套完整的工具链来完成,同时提供包括日志的采集收集、运行Metrics的收集展现等功能,方便用户对任务进行debug。此外,企业级安全也是非常重要的feature,尤其是企业应用时存在多租户部署的需求,因此APP Manager也提供了Rollbase权限管理、OpenID授权系统。同时,我们非常注重开放性和被集成的能力,所以APP Manager还提供了完善的API,使用户能非常方便的将Ververica Platform企业级软件集成到自己已有的大数据平台之中。

Ververica Platform – Libra Service

Libra Service是提供智能运维能力的企业级插件。大数据的系统运行中运维是其中的重要部分,尤其是规模扩大的场景中。常规情况下运行Flink Job,基本上是开发人员写完代码后要配各种各样的参数,对于Flink的运维人员来讲,需要知道这个Job是干什么的、支持什么样的业务、峰值是什么情况、大概的数据规模是什么样子,根据自己的经验进行调整,并且经过多次迭代后才能够将一个任务调好。在任务较少的情况下,还可以通过运维人员人肉维护,但如果出现上千个Job,甚至阿里巴巴内部上万个Flink Job的场景,这是Flink社区版本无法帮助解决的,所以Ververica Platform提供了一套智能运维插件,类似于AI Ops,智能运维插件能够帮助用户推算出一个Job需要多少个TMs,每个TM需要配置多少个Slots,每个TM的JVM参数如何配置以及一个Job的并发度如何配置等。

上图为Libra Service的基本设计思路,这是一个非常经典的智能AI Ops设计方案,可以看到用户正常通过APP Manager会提交一个Job,Job在Kubernetes集群启动之后,Libra Service会监控所有在Kubernetes集群上面运行的Flink Job,实时采集所有的Metrics,包括Task的Metrics是否延迟、吞吐、buffer等运行信息,Job Manager和Task Manager的GC情况,JVM各种运行的数据指标等等。相当于自动采集作业的各种指标特征,利用算法推算出现在的Job运行是否健康。比如部分Job在持续地延迟运行或利用了大量资源但其实是在空跑等不健康状态,当Job处于不健康状态时,通过算法推算出合理的计划,比如延迟了要扩容,浪费资源可能要缩容,然后通知App Manager去修改整个Job的配置,让Job重启适应新的配置来达到稳定高效节省资源的效果,这就是弹性扩缩容插件Libra Service,是智能运维的AI Ops。

Ververica Platform – Stream Ledger

Flink提供了非常完整的一致性语义,也支持强一致性的语义,保证数据一条不丢、一条不少,这个是可以支持计费等金融级非常苛刻的条件,但有一个约束即整个正确性只能够保证单条的记录,比如2个账户要转账就保证不了,因为只能够保证对A的操作绝对正确,对B的操作绝对正确,但是对A的10块钱转给B,这个完整的事务原生的Flink是没有办法保证的。

因此Ververica Platform提供了一套分布式的跨行跨机器事务解决方案。Stream Ledger是基于Flink Datastream API生态的Library,可以实现高性能的跨行分布式事务处理能力,这套Library完全基于Flink内部API,没有任何外部依赖,可以与Datastream API和SQL无缝集成,能够兼容Flink已有的所有读写Connectors,所以Steam Ledger是一个轻量的分布式事务处理方案,也是为金融级场景提供的分布式事务处理能力的解决方案。

Ververica Platform – Gemini

最后一个插件是状态存储插件。在流式计算中,Flink天然支持内置状态存储管理,不需要依赖外部的存储就可以把实时的数据统计等工作完成。正常做报表统计时都有count、sum、average等参数,这些计数器就是状态数据,随着计算量的增加,状态数据可能会越来越大以至于内存可能无法承担,所以需要一套内置的状态存储来存储这些状态。大家都知道在计算系统中,一旦有存储IO访问,性能瓶颈则很有可能是在存储IO上,所以需要优化状态存储的访问。

Flink内置了两种状态存储,一种是基于Java Heap的State Backend状态存储插件,另一种是基于RocksDB的状态存储插件。基于Java Heap的性能非常好,因为是完全基于JVM内存的,并且没有序列化反序列化。但它的局限在于Java的方案内存容量会是瓶颈,因为Java对内存的利用率非常低,不如序列化高。经过测试,在物理数据超过几百兆之后,内存的使用率超过几个G就不能够扩大数据量了,所以系统非常不稳定。业界很多公司都是在用RocksDB来做,这是非常优秀的开源KV存储,但因为是基于C++写的,所以和Flink的集成上还有很多不方便的地方,同时RocksDB也不是为Flink设计的,所以Flink在很多状态的数据结构设计上没有办法进行优化。我们希望针对Flink的状态存储来做一套自己的存储插件,可以提供更强大的功能,同时也兼容社区的协议,所以Gemini应运而生。Gemini是完全存储计算分离的设计,它和RocksDB有很大的不同,同时它也可以利用本地SSD做二级缓存来加速访问,尤其是在Flink出现故障,一个Task失败,重新拉起一个进程时,它可以远程的从HDFS上直接拉起状态,下载时间会大幅降低,提升了整个Flink SLB体验,包括它在设计的时候采用了Java,和Flink系统间的整合也会更好。

这是整个Ververica Platform Gemini Store和RocksDB的Benchmark的性能数据,我们可以看到Flink在常用的KV state、List state、Map state等性能上都有非常明显的提升,具体的数据大家可以自行查看。这个项目也是我们在整个Ververica Platform做性能优化中效果最明显的插件。

阿里巴巴实时计算云原生版本

Ververica Platform是企业级的引擎软件,能够部署到任何环境中,天然可以跑在Kubernetes上,所以为了方便提供实时计算的云计算服务,让阿里云的客户都能够方便的使用,我们已经把它适配到阿里云的云环境之中,和阿里云的系统实现了无缝的集成。将Flink的log放到阿里云的SLS上,可以利用SLS的log技术查询搜索Flink的log,所以我们将Flink Metrics对接到Prometheus生态中。我们也将Flink Checkpoint存储的状态数据对接到阿里云的OSS上,让已有的用户能够复用OSS系统。更重要的一点是整个阿里系统都是云原生的,Ververica Platform也完全运行在阿里云的容器服务平台之上,因此云原生也是Ververica Platform的特点之一。如果用户已经有自己的云原生集群或容器服务,可以尝试半托管模式,用户将提供集群给我们,我们就可以把整个软件部署到用户的集群上,包括已经存在的集群或新购买的集群,这种半托管方式能够给用户提供到此种服务,当然我们也会提供全托管模式,选择上比较灵活,这就是目前已经在公测的Ververica Platform云原生企业版。

Ververica Platform产品能够应用于哪些场景,帮助用户解决哪些问题想必是大家非常关心的,以下将详述。

应用场景1 - 实时数仓

第一个场景是实时数仓,这也是在阿里巴巴内部用得最多的场景,在云上抽象为如图的模型,用户的数据来自于两处甚至是三处,第一部分来自于ECS日志,第二部分来自于RDS结构化数据,第三部分来自于IOT的设备。通过阿里云的SLS服务或者DataHub数据收集通道来收集用户数据,实时计算的产品可以实时订阅到上述数据,用Flink SQL对以上数据进行多维数据分析,产生实时的数据报表。这个过程中,除了有单流的数据处理还有多流数据的join,还可能和HBase、Redis、MySQL等数据库的数据有结合,其中可以运行复杂的SQL做经典数仓的处理,把数仓处理的结果实时写到在线的数据库比如HBase中,都是比较常用的用法。然后通过在线的数据服务在大屏幕中展现,这个场景在淘宝内部是非常经典的场景,双11的时候可以看到大屏幕上有各种数据的成交、统计、分布、排名等,最典型的就是GMA交易数据,比如今年1000多亿,明年2000多亿等等,数字是实时滚动、全球直播的,也是通过这套Flink的架构来实现的。现在对于云上的很多客户而言,实时数仓也是一个很大的应用场景。

应用场景2 - 实时风控

第二个实时场景就是实时监控、异常数据的报警等等。这也是现在非常主流的场景之一,其实数据源和实时数仓很像,基本上还是基于ECS的日志数据或数据库中的增量数据表的更新数据、IOT的数据等,工业会产生大量的数据,需要监测设备数据的异常。与实时数仓不同之处在于实时风控并不是采用SQL来做统计和分析,基本上会采用复杂时间处理,比如Flink CEP或业务方自己定制的风控库来对实时数据进行监测,这个监测可能基于业务的规则,也可能基于Bigdata on AI的方案。新的研究方向是在异常监测或者风控领域基于模型监控,离线或实时训练并在线加载这些模型进行实时检测,能够实时发现异常的事件,及时进行补救。通过Kafka集群到在线的报警系统来对接各种业务系统去报警,这也是能够秒级实时监测各种异常事件做风险控制的方式之一,在整个安防场景、金融场景都是非常常见的解决方案。

应用场景3 - 在线机器学习

第三个场景是成长最快的在线机器学习。在线机器学习是阿里多年的研究方向之一,也是Flink首先应用在阿里巴巴搜索事业部搜索推荐业务部场景的原因。在线机器学习是搜索推荐广告中非常火的方向,机器学习不仅是离线数据模型来做训练,甚至能够形成一个完全的实时化闭环方案,通过用户在天猫、淘宝上产生的大量的点击、交易,相关数据都会通过日志系统实时收集,之后传入实时计算中计算,我们称之为特征工程。对用户的数据如用户的订单等做数据清洗,数据特征的弥补、计算,甚至和离线特征做一些结合。部分数据,如30天销量、用户年龄等数据并非实时变化,是需要长时间的统计得到,我们把实时特征、离线特征全部都做了拼接之后就是多维数据的join,最终能够得出实时样本。我们通过流式得到实时样本之后就能够在后面对接流式来做机器学习的训练,可以通过PAI等类似的机器学习产品来做实时或者准实时的模型训练,训练完之后产生的模型有一套完整的验证机制,验证完整的模型Validation之后才能推上线,再用新模型提供个性化的搜索和推荐,从而驱动用户产生新的点击,再去进行模型的更新,进而形成一套完整的闭环。这是Bigdata+AI的一个典型场景,从数据处理、数据训练,再到数据预测、用户点击形成反馈等,形成完整生产线。这也是Flink做实时计算和在线的流式计算与在线机器学习的训练形成一套完整闭环的经典方案,这套方案也是淘宝天猫真实的在线搜索推荐解决方案。

目前我们有很多客户都在采用这种新的方案来提升他们的点击,尤其是社交媒体类的公司都在尝试这个新的解决方案。

最后,回到社区,阿里巴巴收购完DataArtisans之后成立了新的企业品牌Ververica,我们希望除了商业化品牌的统一、提供的增值服务之外,还希望能够继续扩大社区规模,服务好更多社区的用户,推动社区繁荣发展。所以阿里巴巴也投入了很大的精力来支持整个 Flink 社区的发展,尤其是在中国,我们已经在北京、上海、深圳等连续办了非常多的Flnik社区Meetup,包括去年年底举办的首届Flink Forward China大会,今年将继续举办第二届。去年大会的规模是1000人,今年希望能够达到2000人,希望中国比较主流的互联网公司都能参与其中,分享他们对Flink应用的经验,我们也会联合Flink创始团队一起,讲Flink的新特性、发布以及方向上的展示。欢迎更多对Flink有兴趣的同学一起来参与大会,交流探讨。


iPhone 11 Pro、卫衣、T恤等你来抽,马上来试试手气 https://www.aliyun.com/1111/2019/m-lottery?utm_content=g_1000083877

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

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

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

相关文章

滴滴经验分享:SQLFlow如何让运营专家用上AI?

蚂蚁金服过去十五年,重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑。在2019杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享。我们将其中的优秀演讲整…

秒杀场景_Sentinel在秒杀场景的应用_05

上一篇解决了在高并发秒杀场景下的超卖问题,这一篇主要解决如何利用Sentinel防止服务器雪崩。 文章目录一、 商品微服务集成Sentinel1. 引入依赖2. 添加配置二、 秒杀微服务集成Sentinel2.1. 引入依赖2.2. 添加配置三、 Sentinel流控规则3.1. 登录Sentinel3.2. 请求…

SQLServer 密码验证登录18456错误解决方案

一、SQLServer18456错误 二、解决方案 第一步:确定这两个服务都是开启状态 (1)点击管理 (2)点击服务和应用程序 (3)确定这两个都是开启状态 (4)开启方法,右…

80% 的 Java 焦虑,都可以被这张图解决

昨晚,我在路口等车的时候,听到几个人在那讨论问题:“之前我用 jprofiler 监控 jvm 里的对象,当老年代满了,我手动触发一次 fgc,发现只能回收一半,再触发一次,就完全回收,…

直击案发现场!TCP 10倍延迟的真相是?

阿里妹导读:什么是经验?就是遇到问题,解决问题,总结方法。遇到的问题多了,解决的办法多了,经验自然就积累出来了。今天的文章是阿里技术专家蛰剑在工作中遇到的一个问题引发的对TCP性能和发送接收Buffer关系…

今日头条在消息服务平台和容灾体系建设方面的实践与思考

本篇文章整理自今日头条的沈辉在 RocketMQ 开发者沙龙中的演讲,主要和大家分享一下,RocketMQ 在微服务架构下的实践和容灾体系建设。沈辉是今日头条的架构师,主要负责 RocketMQ 在头条的落地以及架构设计,参与消息系统的时间大概一…

秒杀场景_同步秒杀分析和实战_01

文章目录一、应用部署准备1. mysql安装部署2. redis安装部署3. nacos安装部署二、数据库准备2.1. 创建数据库2.2. 初始化表结构2.3. 搭建微服务父工程三、商品模块微服务3.1. 搭建product-serv模块3.2. 配置yml3.3. 实体3.4. 接口3.5. service3.6. controller3.7. 启动类四、秒…

Kali 2020版 Linux操作系统解决系统语言问题(英文--中文)

文章目录一、更新镜像源(1)进入配置文件(2)更新软件包二、修改配置(1)打开终端输入以下数据(2)修改配置文件三、安装中文字体四、restart(重启Kali Linux系统)一、更新镜像源 镜像源有很多,我这里提供了阿里云的镜像源…

Spark Relational Cache实现亚秒级响应的交互式分析

本次分享主要分为以下四个方面: 项目介绍技术分析如何使用性能分析 一、项目介绍 项目背景 阿里云EMR是一个开源大数据解决方案,目前EMR上面已经集成了很多开源组件,并且组件数量也在不断的增加中。EMR下层可以访问各种各样的存储&#xf…

阿里巴巴 Kubernetes 应用管理实践中的经验与教训

导读:云原生时代,Kubernetes 的重要性日益凸显。然而,大多数互联网公司在 Kubernetes 上的探索并非想象中顺利,Kubernetes 自带的复杂性足以让一批开发者望而却步。本文中,阿里巴巴技术专家孙健波在接受采访时基于阿里…

那些被大数据时代抛弃的人

作者 | 衣公子来源 | 衣公子的剑(ID:yigongzidejian)前言2000年,微软如日中天。有人问比尔盖茨(Bill Gates)对于IT行业的看法。盖茨说,挺好的,就是有点noise。 noise,本意…

秒杀场景_多线程异步抢单队列分析与实现_02

文章目录1. 实体2. Service改造3. 启动类1. 实体 package com.gblfy.entity;import java.io.Serializable;/*** 用户排队抢单信息实体*/Data public class SkillEntity implements Serializable {private Long productId;private String userId; }2. Service改造 SkillGoodSe…

AI赋能DevOps:数据驱动的全栈工程师实践

DevOps是什么? 对于传统的软件研发而言,开发,测试,运维,运营,有不同的岗位进行分工协作,以保证质量和专业度,同一件事情,依赖不同岗位的排期、沟通、协调,效率…

阿里HBase高可用8年“抗战”回忆录

2017年开始阿里HBase走向公有云,我们有计划的在逐步将阿里内部的高可用技术提供给外部客户,目前已经上线了同城主备,将作为我们后续高可用能力发展的一个基础平台。本文分四个部分回顾阿里HBase在高可用方面的发展:大集群、MTTF&a…

使用apache POI把list集合里面的实体写入Excel(java)

一、导入maven依赖包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId>&…

一文带你了解混淆矩阵!

来源 | 数据科学CLUB封图 | CSDN 下载自视觉中国混淆矩阵是一个表&#xff0c;经常用来描述分类模型(或“分类器”)在已知真实值的一组测试数据上的性能。混淆矩阵本身比较容易理解&#xff0c;但是相关术语可能会令人混淆。让我们从一个二进制分类器的混淆矩阵示例开始(尽管它…

从0到千万DAU,这5年闲鱼架构如何演进?

阿里妹导读&#xff1a;闲鱼品牌创立于14年阿里的某个茶水间&#xff0c;从0开始到现在千万DAU&#xff0c;5年时间里闲鱼见证了闲置物品从线下到线上交易的转移。而线上交易的繁荣&#xff0c;则需要业务架构做相应的调整、演进才能支撑业务的快速发展。本文主要通过介绍闲鱼从…

初创公司5大Java服务困局,阿里工程师如何打破?

阿里妹导读&#xff1a;初创公司遇到的每一个问题都可能攸关生死。创业之初更应该总结行业的常见问题&#xff0c;对比方案寻找最优解。阿里巴巴地图技术专家常意在技术圈摸爬滚打数年&#xff0c;接触了各式各样的Java服务端架构。服务端问题见得多了&#xff0c;也就更能分辨…

Navicat for MySQL连接MySQL数据库时各种错误解决

一 、2058错误 通过命令行进入MySQL&#xff0c;执行如下命令&#xff1a; ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY root截图&#xff1a; 二、1251错误 通过命令行进入MySQL&#xff0c;执行如下命令&#xff1a; ALTER USER rootlocalhost I…

构建灵活工作方式 戴尔最智能商用客户端产品线全面上市

戴尔Latitude、Precision和OptiPlex产品组合再次全面升级&#xff0c;带来更高水平生产力 2020年6月12日&#xff0c;随着“新基建”首次被写入《政府工作报告》&#xff0c;数字经济将成为释放经济新动能的最重要途径。在企业加速数字化转型的过程中&#xff0c;生产力转型是…