贝壳找房基于 Flink 的实时平台建设

2024-06-12 21:58

本文主要是介绍贝壳找房基于 Flink 的实时平台建设,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:本文由贝壳找房实时计算负责人刘力云分享,主要内容为 Apache Flink 在贝壳找房业务中的应用,分为以下三方面:

  1. 业务规模与演进

  2. Hermes 实时计算平台介绍

  3. 未来发展与规划

业务规模及演进

下图为贝壳找房的业务场景示意图。最上层为贝壳找房公司最为主体的四大业务:二手房交易、新房交易、租赁业务及装修业务。四大业务运营将产生图示中间部分的四大数据即楼盘字典、交易数据、用户行为日志与后端服务日志。图示最下面的部分代表公司实时数据采集、实时数据计算的业务模块,本文中的案例将重点介绍数据实时计算部分的设计、实现及应用。

 

发展历程

在 2018 年初,随着公司埋点治理规范的推进,我们建设了 DP 实时数据总线,统一承接各种埋点数据流的标准化处理,并对外提供清洗后的实时数据。随着维护的实时任务增加,面临着实时数据流稳定性以及任务管理方面的挑战,于是贝壳大数据部着手研发了 Hermes 实时计算平台,提供统一的实时任务管理平台。

在 2018 年 10 月,我们推出了 SQL V1 编辑器来方便用户开发实时计算任务。SQL V1 基于 Spark Structured Streaming 技术,用户可以使用 SQL 完成需求的开发,同时以界面拖拽的形式呈现给用户,使用户的操作更加便捷。在 2019 年 5 月,经过调研对比,我们引入了 Flink 技术栈,研发的 SQL V2 编辑器正式上线,SQL V2 全面支持 Flink SQL 的各种语法并设计了大量的自定义函数,兼容 Hive UDF 以及用户常用函数。目前我们已经在公司内进行实时数仓业务场景的探索应用。

 

 

应用规模

下图所示为目前实时计算在贝壳找房企业中的应用规模。目前平台支持 30 余个业务项目,流计算任务数达到 400 个,随着数仓的不断扩充,实时流计算的任务数将不断上升。每日处理的消息条数达到了 800 亿级别,效率十分可观。

 

 

支持的项目

从下图所示实时计算在企业中的支持项目可以看出,目前实时计算平台支持从风控、租赁到策略搜索再到新房交易等一系列业务项目,从各个维度支持起企业运营产生的数据实时计算的业务需求。

 

 

任务增长趋势

最开始平台上线时支持的任务增长较为缓慢,在 2019 年 6 月初,平台升级到 Flink 并全面支持 SQL 开发后,任务数量开始大规模的增长,在 2019 年 11 月份实时数仓建成后,平台所支持的任务数量有了十分明显的增长趋势。

 

 

平台数据统计

下图所示为平台每日数据统计。目前平台每日可以处理 1000 亿条数据,一般数据任务的处理延迟在 40 毫秒左右。

 

Hermes 实时计算平台介绍

 

平台概览

Hermes 平台目前支持着公司实时任务的开发、编辑、部署、启停等管理功能及丰富的监控报警等服务。平台支持 Java、Scala、Python 等多种语言开发的实时任务,支持自定义任务、模板任务及场景任务三大任务类型,同时做到了各个项目的资源隔离,每个项目均有项目的专有队列,防止与其他项目在资源上发生竞争。平台同时为资源需求较小的项目提供了公共队列,通过公共队列对该种项目进行支持的方式,更为方便的实现任务的开发。

 

Hermes 架构

下图所示为 Hermes 平台的整体架构,架构分为 4 个层次,图中最下层深蓝条目代表架构中的计算引擎,目前计算引擎支持 Flink 与 Spark Streaming 技术,并通过消息队列、离线存储等技术辅助完成数据实时的存储。

  • 在引擎层方面,架构采用 StreamSQL、DataStream、StreamCEP 等技术搭建,其中 StreamCEP 技术很好的支持了经纪人平台业务实时监控报警的需求。

  • 功能组件层方面包括了任务实例的管理、项目管理及数据源管理等。

平台目前可以在同一任务中的不同任务快照间进行相互切换,当发现上线任务有问题时,可以回退到之前的快照。

 

 

SQL V1 编辑器

下图所示为 SQL V1 编辑器示意图。该编辑器对于大部分数据清洗及数据处理的业务场景可以实现简洁高效的编辑处理。用户在编辑器左侧可以定义编辑数据源、操作符及目标源等数据信息。中央面板上呈现的数据为 SQL V1 支持编辑的操作类型,选中面板中央的过滤器,即可在编辑器右侧添加相关的过滤条件,实现数据的相关过滤。在目标源层面,编辑器目前支持 Kafka、Druid 等多种目标源,大大提升了编辑器的兼容性。

 

 

SQL V2 编辑器

下图所示为 SQL V2 编辑器示意图。目前 SQL V2 是基于 Flink SQL 技术较为完善的编辑器,左侧为用户进行代码编辑的部分,用户在此处可以编辑大量 SQL 语句以此助力不同业务场景。左下栏目中的数据为用户选中数据源自动生成的 DDL,通过 DDL 编辑器将操作数据的样式更清晰的展示给用户。SQL V2 支持了三大类型的数据表,分别是 source 表、sink 表及维表,以此方便用户的开发。编辑器右下角可以呈现 SQL 语法的检测情况,以此提示用户在编辑时出现的语法错误。

 

 

SQL V2 架构

SQL V2 工具整体架构如下图所示。前端 SQL 编辑器模块包括语法语义的检查、执行计划的查看、自动 DDL 的生成及任务调试的功能。用户通过任务调试功能可以查看任务执行结果。后台将引擎提交到 Yarn 集群上执行,引擎通过任务 id 回调后台接口获取需要执行的 SQL,对 SQL 做语法校验和语法解析,若出现维表关联则会额外对 SQL 做一层转换。

 

 

SQL 引擎整体架构

下图所示为 SQL 引擎的整体架构。整体架构分为三个层次,最底层为 Flink Table API。在 Flink 层之上企业设计了代码的封装,以 factory 的形式方便最上层的方法调用。最上层的 core 层负责整个系统的 SQL 解析。

 

 

维表关联

在 SQL 解析过程中,最为复杂的是维表的表格关联,下图为维表关联系统架构图。数据从数据源导入后,系统使用 Async I/O 技术访问后端,系统后端使用 Data Accessor 接口访问后端的存储。系统后端存储支持 HBase 与 Redis 存储技术,同时后端会将数据缓存于 LRU Cache 模块中。维表关联后的数据支持多种大数据工具的存储,从而大大增加了系统的兼容性。

 

 

丰富的内置函数

系统同时为用户提供了丰富的内置函数,包括时间函数、集合函数、Json 处理函数及字符串函数。丰富的内置函数可以方便用户的开发,省去用户自己去开发的时间。

 

 

实时数仓整体架构

下图所示为实时数仓的整体架构,同时也是 SQL V2 系统落地的应用场景。各个层级间产生的数据被储存在了 Kafka Topic 中,同时数据也将被同步到 Hive 中备份。业务方可以查询实时备份数据进行数据验证及分析等操作。目前数仓的实时计算部分可以计算当天或过往几天的数据,实时计算平台正在与其他组件合作,开发实时与离线联合的分析查询,以此扩展实时数仓的使用范围。

 

 

实时数仓数据统计

下图所示为企业实时数仓的数据统计。从 2019 年 8 月,SQL V2 正式上线运营,至 2019 年 10 月平台开始支持实时数仓开发,系统的数据量开始加速增长。目前,实时数仓已经有 100 余个任务,数据吞吐量也达到了 21 亿条/天的数据级别,数据规模较为可观。

 

 

实时数仓案例

下图列举出实时数仓平台已经实现提供数据支持的应用案例。

1. 交易平台

交易平台实时大屏实时展示大区内的交易状况。在交易平台的建设中,开发团队通过数据回环将还未关联的数据返回储存模块进行重新关联,并通过检验该数据的生命周期判断是否关联成功,团队通过此种方式使得数据维表与事实表数据最终一致。

2. 经纪人行程量

经纪人行程量可以动态的展示当前经纪人对客户的维护情况,使企业可以掌握经纪人实时的工作状态。

3. 实时用户画像

实时用户画像可以实时地向企业呈现来自各个系统用户的数据信息,通过组合各个平台上用户的行为信息,提供全面、精准的用户画像。企业的算法策略部门将根据用户的实时画像进行相关信息、内容的推荐。

 

 

监控报警

下图为平台的监控报警页面截图。监控系统会实时监控平台任务的处理延时、 source 写入量及 sink 写出量三大指标。系统中同时可以设置平台数据的无心跳时间,当超出设置时限后,系统将会进行报警。

 

 

监控报警架构

下图为监控报警架构图。监控系统通过自定义的 Listener 对 Spark 进行监控,Listener 引入 SDK 收集 Spark 任务的信息及运行中的日志数据。用户在此处需要进行手动 SDK 的导入。在 Flink 应用模块中,系统设计支持了自定义 Report 数据的获取,并通过自动加载的方式直接载入 Flink 中进行数据的分析与计算,同时通过任务启动时注入 java 探针的方式获取任务的相关信息。所有的监控信息将被统一送到 Kafka Topic 中,经 Hermes 平台分析处理,触发相应的延时报警及心跳报警。

 

未来发展与规划

 

整体架构

实时计算平台的整体架构如下图所示。在架构中间部分,平台包含了实时事件中心、事件处理平台等系统来更好的处理未来企业中的业务场景需求,以通用服务平台的方式为更多的业务方提供统一的业务支撑。在引擎方面,未来会深入研究 Flink 的状态管理、端到端的精确一次等技术,提高数据处理的准确性和一致性。

 

 

未来发展

未来将会加强平台的资源动态分配能力,根据任务的历史运行情况自动分配资源。

  • 用户可以在事件处理平台上定义各种事件,实时对事件进行分析,并产生相关的数据报表。用户通过实时规则引擎完成各种业务规则的配置,事件命中规则后触发相关的业务操作。

  • 用户数据平台汇集各个产品、各个端的用户数据,提供用户行为的实时查询、分析,更加高效的支持营销、推荐等业务场景。

  • 实时数仓建设方面会进行 KAPPA 模式的探索,推进流批一体化建设,提升历史数据的处理和查询能力。

 


往期推荐

1、HBase最佳实践 | 聊聊HBase核心配置参数
2、Apache Hudi:剑指数据湖的增量处理框架
3、Hadoop社区比 Ozone 更重要的事情
4、MapReduce Shuffle 和 Spark Shuffle 结业篇

 

这篇关于贝壳找房基于 Flink 的实时平台建设的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055454

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

SpringBoot整合Apache Flink的详细指南

《SpringBoot整合ApacheFlink的详细指南》这篇文章主要为大家详细介绍了SpringBoot整合ApacheFlink的详细过程,涵盖环境准备,依赖配置,代码实现及运行步骤,感兴趣的... 目录1. 背景与目标2. 环境准备2.1 开发工具2.2 技术版本3. 创建 Spring Boot

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖