贝壳找房:千亿级实时计算引擎实战与Flink选型策略

0 下载量 190 浏览量 更新于2024-08-31 收藏 1.47MB PDF 举报
在贝壳找房,实时计算引擎的广泛应用对于支撑其庞大的数据处理需求至关重要。贝壳的产品技术团队超过1000人,他们面对的主要实时数据来源包括: 1. **日志数据**:来自2000多个在线服务的日志是流式数据的主要组成部分,这些服务产生的海量日志被用于监控系统性能和异常检测。 2. **前端埋点**:APP和web端上报的经纪人作业情况和用户行为,通过前端埋点技术实时收集,用于个性化推荐、用户体验优化等。 3. **业务数据**:Kafka作为消息队列,承载着业务产生的实时数据,如交易记录、用户交互等。 为了实现高效的实时计算,贝壳建立了一个流式计算平台,主要依赖SparkStreaming和Flink这两种流行引擎。平台化设计旨在降低业务方的运维成本,避免重复建设和维护自己的实时计算环境。早期,每增加一个业务方使用数据流计算就需要单独搭建客户端,而现在,平台化将这些复杂性统一起来,使得业务人员可以直接使用大数据能力进行实时处理,但同时也要求他们具备一定的技术基础。 Kafka作为数据源,承载不同类型的数据流和实时数据库binlog,以及内部前端项目的埋点数据(如Dig)。资源调度层面,平台使用YARN进行管理,同时基于社区版Flink扩展了SQL能力,并提供通用实时处理模板。数据的输出则需要兼容各种存储和分析工具,如Elasticsearch、Kafka、Hbase等。 实时任务管理与监控是平台的核心功能,包括资源调度优化、元数据化数据处理以及SQL IDE支持和报警系统。此外,平台还支持多种业务应用,如指标分析、实时特征工程、安全风控、ETL(提取、转换、加载)以及实时推荐等。 当前,贝壳的实时计算平台规模庞大,约有700个节点和1000多个实时任务,每天处理的数据量达到千亿级别,高峰时单个任务每秒可处理百万条消息。在这样的背景下,贝壳选择Flink作为主要引擎的原因在于它的Exactly-Once一致性保证和丰富的窗口机制,这对于保证数据的准确性和一致性至关重要。Flink的这些特性使得贝壳能够处理高并发、低延迟的实时计算场景,满足其业务需求的实时性和可靠性要求。