敏捷之歌
我抽数故我存在 | DBus
人人玩转流处理 | Wormhole
就当吾是数据库 | Moonbox
颜值最后十公里 | Davinci
导读: 实时数据平台 (RTDP,Real-time Data Platform) 是一个重要且常见的大数据基础设施平台. 在上篇 (设计篇) 中, 我们从现代数仓架构角度和典型数据处理角度介绍了 RTDP, 并探讨了 RTDP 的整体设计架构. 本文作为下篇(技术篇), 则是从技术角度入手, 介绍 RTDP 的技术选型和相关组件, 探讨适用不同应用场景的相关模式. RTDP 的敏捷之路就此展开~
拓展阅读: 如何设计实时数据平台(设计篇)
一, 技术选型介绍
在设计篇中, 我们给出了 RTDP 的一个整体架构设计 (图 1). 在技术篇里, 我们则会推荐整体技术组件选型; 对每个技术组件做出简单介绍, 尤其对我们抽象并实现的四个技术平台(统一数据采集平台, 统一流式处理平台, 统一计算服务平台, 统一数据可视化平台) 着重介绍设计思路; 对 Pipeline 端到端切面话题进行探讨, 包括功能整合, 数据管理, 数据安全等.
图 1 RTDP 架构
1.1 整体技术选型
图 2 整体技术选型
首先, 我们简要解读一下图 2:
数据源, 客户端, 列举了大多数数据应用项目的常用数据源类型.
数据总线平台 DBus, 作为统一数据采集平台, 负责对接各种数据源. DBus 将数据以增量或全量方式抽取出来, 并进行一些常规数据处理, 最后将处理后的消息发布在 Kafka 上.
分布式消息系统 Kafka, 以分布式, 高可用, 高吞吐, 可发布 - 订阅等能力, 连接消息的生产者和消费者.
流式处理平台 Wormhole, 作为统一流式处理平台, 负责流上处理和对接各种数据目标存储. Wormhole 从 Kafka 消费消息, 支持流上配置 SQL 方式实现流上数据处理逻辑, 并支持配置化方式将数据以最终一致性 (幂等) 效果落入不同数据目标存储 (Sink) 中.
在数据计算存储层, RTDP 架构选择开放技术组件选型, 用户可以根据实际数据特性, 计算模式, 访问模式, 数据量等信息选择合适的存储, 解决具体数据项目问题. RTDP 还支持同时选择多个不同数据存储, 从而更灵活的支持不同项目需求.
计算服务平台 Moonbox, 作为统一计算服务平台, 对异构数据存储端负责整合, 计算下推优化, 异构数据存储混算等(数据虚拟化技术), 对数据展示和交互端负责收口统一元数据查询, 统一数据计算和下发, 统一数据查询语言(SQL), 统一数据服务接口等.
可视应用平台 Davinci, 作为统一数据可视化平台, 以配置化方式支持各种数据可视化和交互需求, 并可以整合其他数据应用以提供数据可视化部分需求解决方案, 另外还支持不同数据从业人员在平台上协作完成各项日常数据应用. 其他数据终端消费系统如数据开发平台 Zeppelin, 数据算法平台 Jupyter 等在本文不做介绍.
切面话题如数据管理, 数据安全, 开发运维, 驱动引擎, 可以通过对接 DBus,Wormhole,Moonbox,Davinci 的服务接口进行整合和二次开发, 以支持端到端管控和治理需求.
下面我们会进一步细化上图涉及到的技术组件和切面话题, 介绍技术组件的功能特性, 着重讲解我们自研技术组件的设计思想, 并对切面话题展开讨论.
1.2 技术组件介绍
1.2.1 数据总线平台 DBus
图 3 RTDP 架构之 DBus
1.2.1.1 DBus 设计思想
1)从外部角度看待设计思想
负责对接不同的数据源, 实时抽取出增量数据, 对于数据库会采用操作日志抽取方式, 对于日志类型支持与多种 Agent 对接.
将所有消息以统一的 UMS 消息格式发布在 Kafka 上, UMS 是一种标准化的自带元数据信息的 JSON 格式, 通过统一 UMS 实现逻辑消息与物理 Kafka Topic 解耦, 使得同一 Topic 可以流转多个 UMS 消息表.
支持数据库的全量数据拉取, 并且和增量数据统一融合成 UMS 消息, 对下游消费透明无感知.
2)从内部角度看待设计思想
基于 Storm 计算引擎进行数据格式化, 确保消息端到端延迟最低.
对不同数据源数据进行标准化格式化, 生成 UMS 信息, 其中包括:
生成每条消息的唯一单调递增 id, 对应系统字段 ums_id_
确认每条消息的事件时间戳(event timestamp), 对应系统字段 ums_ts_
确认每条消息的操作模式(增删改, 或 insert only), 对应系统字段 ums_op_
对数据库表结构变更实时感知并采用版本号进行管理, 确保下游消费时明确上游元数据变化.
在投放 Kafka 时确保消息强有序 (非绝对有序) 和 at least once 语义.
通过心跳表机制确保消息端到端探活感知.
1.2.1.2 DBus 功能特性
支持配置化全量数据拉取
支持配置化增量数据拉取
支持配置化在线格式化日志
支持可视化监控预警
支持配置化多租户安全管控
支持分表数据汇集成单逻辑表
1.2.1.3 DBus 技术架构
图 4 DBus 数据流转架构图
更多 DBus 技术细节和用户界面, 可以参看:
GitHub: https://github.com/BriData
1.2.2 分布式消息系统 Kafka
Kafka 已经成为事实标准的大数据流式处理分布式消息系统, 当然 Kafka 在不断的扩展和完善, 现在也具备了一定的存储能力和流式处理能力. 关于 Kafka 本身的功能和技术已经有很多文章信息可以查阅, 本文不再详述 Kafka 的自身能力.
这里我们具体探讨 Kafka 上消息元数据管理 (Metadata Management) 和模式演变 (Schema Evolution) 的话题.
图 5
- Kafka Tutorial:Kafka, Avro Serialization and the Schema Registry
- http://cloudurable.com/blog/kafka-avro-schema-registry/index.html
来源: https://yq.aliyun.com/articles/707015