bilibili实时平台的架构与实践

一、实时计算的痛点二、Saber的平台演进三、结合AI的案例实践四、未来的发展与思考

各个业务部门进行业务研发时都有实时计算的需求。早期,在没有平台体系做支撑时开发工作难度较大,由于不同业务部门的语言种类和体系不同,导致管理和维护非常困难。其次,bilibili有很多关于用户增长、渠道投放的分析等BI分析任务。而且还需要对实时数仓的实时数据进行清洗。此外,bilibili作为一个内容导向的视频网站,AI推荐场景下的实时计算需求也比较强烈。

为解决上述问题,bilibili希望根据以下三点要求构建基于ApacheFlink的流式计算平台。

涵盖场景:bilibili流式计算平台主要涵盖四个方面的场景。

实时平台由实时传输和实时计算两部分组成,平台底层统一管理元数据、血缘、权限以及作业运维等。实时传输主要负责将数据传入到大数据体系中。实时计算基于BSQL提供各种应用场景支持。

如下图所示,实时传输有APP日志、数据库Binlog、服务端日志或系统日志。bilibili内部的Lancer系统解决数据落地到Kafka或HDFS。计算体系主要围绕Saber构建一套BSQL,底层基于YARN进行调度管理。

上层核心基于Flink构建运行池。再向上一层满足多种维表场景,包括MySQL、Redis、HBase。状态(State)部分在RocksDB基础上,还扩展了MapDB、Redis。Flink需要IO密集是很麻烦的问题,因为Flink的资源调度体系内有内存和CPU,但IO单位未做统一管理。当某一个作业对IO有强烈的需求时,需要分配很多以CPU或内存为单位的资源,且未必能够很好的满足IO的扩展。所以本质上bilibili现阶段是将IO密集的资源的State转移到Redis上做缓解。数据经过BSQL计算完成之后传输到实时数仓,如Kafka、HBase、ES或MySQL、TiDB。最终到AI或BI、报表以及日志中心。

(1)开发架构图:如下图左侧所示。最上层是Saber-Streamer,主要进行作业提交以及API管理。下一层是BSQL层,主要进行SQL的扩展和解析,包括自定义算子和个性算子。再下层是运行时态,下面是引擎层。运行时态主要管理引擎层作业的上下层。bilibili早期使用的引擎是SparkStreaming,后期扩展了Flink,在开发架构中预留了一部分引擎层的扩展。最下层是状态存储层,右侧为指标监控模块。

在上述抽象过程中规范语义化标准。即最后输入、输出给定规范标准,底层通过Json表达方式提交作业。在没有界面的情况下,也可以直接通过Json方式拉起作业。

构建一套基于Saber-BSQL、Flink引擎的数据计算Pipeline,极大简化Instance流的构建。其核心需要解决以下三个问题:StreamingJoinStreaming(流式SJoin),StreamingJoinTable(维表DJoin),Real-timeFeature(实时特征)。

进行SQL语义扩展主要有两个关键点。SQL语义的定义顶层通过Calcite扩展JoinType。首先将SQL展开成SQL树。SQL树的一个节点为left(global)$timewindowand$timedelayjoin。抽取出该子树,自定义逻辑转换规则。在此定义了StreamingJoinRute,将该子树转换为新的节点。通过Flink提供的异步IO能力,将异步子树转换为StreamingTable,并将其注册到Flink环境中。通过以上过程支持SQL表达。

另外,维表性能要求很高。因为AI场景会进行很多实验,例如某一个特征比较好,就会开很多模型、调整不同参数进行实验。单作业下实验组越多,QPS越高,RT要求越高。不同维表存储介质有差异,对稳定性有显著影响。调研中有两种场景。当量比较小,可以使用Redis存储,稳定性较好。当量很大,使用Redis成本高,但HBaseCP架构无法保证稳定性。

下图为HBase双集群架构。右侧是离线,以天为单位,通过调度框架拉起一个DAG进行计算。DAG的输出经过两层串行的HBase的Sink,串行可以保证数据先写完A再写B。运行时态中通过Flink、AsyncIO方式,通过两层HystrixClient。第一层HystrixClient主要对第二层HystrixClientHBase的RT通信质量进行收集,根据RT通信质量将流量动态分发到两套HBase集群中。在A集群稳定性很好时,流量都在A集群跑。当A集群出现抖动,会根据失败率动态切换一定配比流量到B集群。

整个体系解决了AI模型训练预生成数据给模型的Pipeline。展现和点击通过BSQL方案实现Joiner。实时特征数据通过BSQL进行计算,离线数据通过离线调度解决。维表的Join会通过BSQL构成Pipeline,从而给机器学习团队Instances流,训练模型,产出模型。

越来越多人使用平台时,基础运维是最为关键的。Saber平台将会完善SQLIDE开发,如提供更丰富的版本管理、上下线、任务调试、资源管理、基础操作等。同时将丰富化作业运维。包括SLA、上线审批、优先级、各类系统监控指标、用户自定义指标告警、作业OP操作等。

Saber应用能力将会向AI方向不断演进。例如模型训练的工程化方面,将引入实验维度概念,通过实验拉起SQLPipeline。同时将为做模型训练的同学统一流、批SQL复用。并且进行模型实验效果、评估、预警等。实时特征的工程化方面,将会支持多特征复合计算,涵盖特征计算、存储、查询等多个场景。

THE END
1.23种设计模式介绍设计模式(Design Patterns)是软件开发中经过验证的解决方案,它们提供了一种通用的方式解决常见的设计问题。通过使用设计模式,开发者可以提高代码的可读性、可维护性和可扩展性。1994年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的《设计模式:可复用面向对象软件的基础》一书首次系统地介绍了23种https://blog.csdn.net/zhaoxilengfeng/article/details/144382870
2.软件架构三层结构图mob6454cc68310b的技术博客asp.net三层架构代码 aspnet三层架构结构图 接解asp.net已很久了,一直采用一个解决方案一个项目的方式去开发,所有的数据操作全放在一个类文件里,以为这就是所谓的三层结构,后来听说真正的大型网站的三层结构,应该是三个项目,或是更多的项目组成的,找网上找到N久的关于三层结构的教程,一直没有什么好的,可以入门的,https://blog.51cto.com/u_16099212/12797421
3.软件架构设计模式:从单体应用到微服务的演进策略详解软件架构设计模式:从单体应用到微服务的演进策略详解 一、引言 在当今的软件开发领域,随着业务的不断发展和需求的不断变化,单体应用架构已经不能满足日益增长的复杂需求。微服务架构作为一种新的解决方案,逐渐成为了各大企业关注的焦点。本文将对单体应用和微服务架构进行详细对比,并提出在实际应用中的演进策略。 https://www.jianshu.com/p/6035547eb228
4.软件架构设计软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式;惯用模式则反映众多系统共有的结构和语义特性。强调对软件设计的重用。 架构风格定义一个系统家族,即一个架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连https://www.163.com/dy/article/GDGCECK505529XVP.html
5.架构设计常用到的10种设计模式,你都知道吗?企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。 软件架构模式 什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构https://www.cloud.tencent.com/developer/news/470432
6.数字经济领域百问百答67.工业互联网平台基础共性能力要求包括哪些方面? 答:包括平台资源管理能力(工业设备管理、软件应用管理、用户与开发者管理、数据资源管理)、平台应用服务能力(存储计算服务、应用开发服务、平台间调用服务、安全防护服务、新技术应用服务)、平台基础技术能力(平台架构设计、平台关键技术)、平台投入产出能力(平台研发投入、https://www.zjk.gov.cn/content/bwbd/197999.html
7.企业私有云平台基础架构规划建设实践平台建设难点总结探讨最好以业务应用类型来驱动,例如,以微服务架构为基础设计的应用,就推荐使用云计算架构来满足其弹性伸缩的要求。 Q2: 企业云平台建设一共分几期?还是一部到位?云平台实施的方向? A2: 云平台很少有一步到位的,往往最开始的阶段是满足最基础的需求,例如计算虚拟化,存储虚拟化,然后网络虚拟化,然后容器,监控,大数据,编https://redhat.talkwithtrend.com/Article/217841
8.标签系列:标签管理平台的架构与设计数据Taylor有了对平台架构的整体认知之后,接下来就从产品设计角度,从标签的管理,生产,分析,应用四个方面聊聊下标签平台的常见功能与设计。 标签平台的产品设计 管理 包含了统一的对接入数据源的管理,围绕标签生命周期的管理,和作为平台通用的那些功能设计。 数据源管理 https://xie.infoq.cn/article/75059aca4fe6a85a12557b2a9
9.前端低代码平台架构介绍低代码前端开发框架为了充分发挥低代码开发在前端架构中的优势,我们可以采取以下策略:首先,深入了解项目的需求和特点,明确哪些部分适合使用低代码开发,哪些部分需要采用传统开发方式。其次,在选择低代码平台时,我们需要关注其组件库的丰富程度、自定义能力的强弱以及平台的稳定性和安全性。最后,我们需要保持对底层技术的关注和学习,不断提升https://www.bnocode.com/article/low-code-front-end-architecture.html
10.字节跳动一站式数据治理解决方案及平台架构文章上面介绍了我们应对数据治理的解决方案,包括全规则、全链路和一站式,接下来介绍具体的平台架构。 整体架构 首先在整体的架构部分,这是治理平台内整体的架构图。 其中灰色的部分是在平台透出给用户的产品能力,包括治理全景。治理全景对应于刚才在一站式的视图层能够告诉用户,有哪些资产,这些资产的情况是怎么样的。然后https://developer.volcengine.com/articles/7316453574492782642
11.10种常见的软件架构模式·微服务架构·看云架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。 架构模式与软件设计模式类似,但具有更广泛的范围。 在本文中,将简要地解释以下10种常见的体系架构模式,以及它们的用法、优缺点。 分层模式 客户端-服务器模式 https://www.kancloud.cn/architect-jdxia/architect/521056
12.如何做好整车开发的平台与架构?而在制造方面,当采用平台战略时,由于采用共用件策略,所以制造方式也必然是相同的。在扩展到架构策略时,虽然某些零部件已有所不同,但在相同工程解决方案的基础上,也有可能确定相同的制造方式或找到可以互换的制造方式,这就是所谓的模块化设计和制造。因此,所谓架构,实际上就是相同的工程解决方案和模块化制造工艺的综合http://www.360doc.com/content/21/0126/08/46573964_958971988.shtml
13.如何搭建全平台营销活动产品架构编辑导语:本文从平台性的营销活动切入,介绍了需求分析、产品设计架构思路和详细的单一活动模型设计,帮助大家熟悉底层逻辑,掌握核心要义,在产品初期就能够考虑到未来的扩展性、全面性,具有强势的扩展能力。 双十一大促,我们最关注的就是各家电商平台有哪些营销活动,哪些折扣的方式能够让在必须消费的前期下省钱到最低。甚https://supplier.alibaba.com/article/CTG0OO4P03O.htm
14.美好家长:打造有温度的教育共同体美好教育在上城热点专题课程架构中的内容遵循学生的发展核心,把家长和儿童的需求作为课程设计的出发点和落脚点,满足家长个性化、多样化终身学习的需求,注重解决家长教育中的突出问题,创新家庭教育指导方式,为家长提供多元、有针对性的指导服务。 2.家长课程内容精心选择 课程内容按照划分的四个年龄段,围绕十个核心问题进行内容的设计。学龄前https://z.hangzhou.com.cn/2019/mhjyzsc/content/content_7126138_0.html
15.常见的系统架构模式有哪些?详解8大系统架构设计哲学设计不仅仅指的是外观和感觉,它还包括运作方式。——史蒂夫·乔布斯 系统架构(System Architecture)、软件架构(Soft Architecture)是IT领域常见的名词,架构设计是软件系统构建过程中极其关键的一部分。 系统架构为什么重要?常见的架构模式都有哪些?本文将带你了解不同的架构设计所运用的不同设计哲学。 https://baidu-mip.xianjichina.com/news/details_254901.html
16.基于FPGA的实时图像处理实验平台设计AET本文介绍了一种采用CMOS摄像头作为视频源输入,SDRAM作为帧缓冲器,FPGA作为主控器和图像处理模块,ADV7123作为视频D/A转换器,UART和VGA作为输入输出接口的系统设计方案,对相关设计人员具有一定的参考价值。 1 实时图像处理实验平台架构 本系统由视频采集模块、帧缓存模块(处理前)、图像处理模块、帧缓存模块(处理后)、http://www.chinaaet.com/article/3000002969
17.全面易懂!写给新手的信息架构设计指南优设网简单来说,信息架构设计就是让用户可以 容易地理解你的产品是怎样的。让他们在使用你产品的时候可以更顺利更自然。就像一进入饭店就会有一种感觉,门口是等餐的地方,进去就应该吃饭,如果找洗手间一定不会往门口走,而会往深处走。这就是信息架构的好处:他让用户使用同类产品时更容易上手和理解,让产品更容易被接受。https://www.uisdc.com/information-architecture-design-guide
18.培训报告(通用13篇)本着“围绕打造本质安全型企业”的主题要求,利用职工班前班后会、安全文化建设、安全教育培训等方式方法,把安全教育主题活动和“以人为本”的理念落实到安全生产每一个环节,对职工安全意识的动态把握和对安全隐患的超前防控,使生产活动中危及劳动者生命安全、身体健康的各种事故风险和伤害因素,始终处于有效认知、动态。https://www.liuxue86.com/a/4986923.html