宜信实时数据平台介绍

宜信实时数据平台介绍(根据相关资料整理)

文章目录

  • 宜信实时数据平台介绍(根据相关资料整理)
    • 1.架构设计方案
      • 1.1 定位和目标
      • 1.2 整体设计架构
        • 1)统一数据采集平台
        • 2)统一流式处理平台
        • 3)统一计算服务平台
        • 4)统一数据可视化平台
    • 2.技术组件介绍
      • 2.1 数据总线平台DBus
        • 2.1.1 DBus设计思想
        • 2.1.2 DBus功能特性
        • 2.1.3 DBus技术架构
        • 2.1.4 DBus(Github链接)
      • 2.2 分布式消息系统Kafka
      • 2.3 流处理平台Wormhole
        • 2.3.1 Wormhole设计思想
        • 2.3.2 Wormhole功能特性
        • 2.3.3 Wormhole技术架构
        • 2.3.4 Wormhole(Github链接)
      • 2.4 常用数据计算存储选型
      • 2.5 计算服务平台Moonbox
        • 2.5.1 Moonbox设计思想
        • 2.5.2 Moonbox功能特性
        • 2.5.3 Moonbox技术架构
        • 2.5.4 Moonbox(Github链接)
      • 2.6 可视应用平台Davinci
        • 2.6.1 Davinci设计思想
        • 2.6.2 Davinci功能特性
        • 2.6.3 Davinci(Github链接)

作者:宜信技术学院
链接:https://juejin.im/post/5d0c53ad5188255716490f92 (如何设计实时数据平台(技术篇))

来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.架构设计方案

1.1 定位和目标

实时数据平台(Real-time Data Platform,以下简称RTDP),由宜信技术学院研发的一个开源的实时数据平台(文章中有平台各组件的Github链接),旨在提供数据端到端实时处理能力(毫秒级/秒级/分钟级延迟),可以对接多数据源进行实时数据抽取,可以为多数据应用场景提供实时数据消费。作为现代数仓的一部分,RTDP可以支持实时化、虚拟化、平民化、协作化等能力,让实时数据应用开发门槛更低、迭代更快、质量更好、运行更稳、运维更简、能力更强。

1.2 整体设计架构

概念模块架构,是实时数据处理Pipeline的概念层的分层架构和能力梳理,本身是具备通用性和可参考性的,更像是需求模块。下图给出了RTDP的整体概念模块架构,具体每个模块含义都可自解释,这里不再详述。
宜信实时数据平台介绍_第1张图片
如下图所示,我们针对概念模块架构的四个层面进行了统一化抽象:

  • 统一数据采集平台(DBus)
  • 统一流式处理平台(Wormhole)
  • 统一计算服务平台(Moonbox)
  • 统一数据可视化平台(Davinci)

同时,也对存储层保持了开放的原则,意味着用户可以选择不同的存储层以满足具体项目的需要,而又不破坏整体架构设计,用户甚至可以在Pipeline中同时选择多个异构存储提供支持。

宜信实时数据平台介绍_第2张图片
下面分别对四个抽象层进行解读:

1)统一数据采集平台

统一数据采集平台,既可以支持不同数据源的全量抽取,也可以支持增强抽取。其中对于业务数据库的增量抽取会选择读取数据库日志,以减少对业务库的读取压力。平台还可以对抽取的数据进行统一处理,然后以统一格式发布到数据总线上。这里我们选择一种自定义的标准化统一消息格式UMS(Unified Message Schema)做为统一数据采集平台和统一流式处理平台之间的数据层面协议。

UMS自带Namespace信息和Schema信息,这是一种自定位自解释消息协议格式,这样做的好处是:

  • 整个架构无需依赖外部元数据管理平台;
  • 消息和物理媒介解耦(这里物理媒介指如Kafka的Topic, Spark Streaming的Stream等),因此可以通过物理媒介支持多消息流并行,和消息流的自由漂移。

平台也支持多租户体系,和配置化简单处理清洗能力。

2)统一流式处理平台

统一流式处理平台,会消费来自数据总线上的消息,可以支持UMS协议消息,也可以支持普通JSON格式消息。同时,平台还支持以下能力:

  • 支持可视化/配置化/SQL化方式降低流式逻辑开发/部署/管理门槛
  • 支持配置化方式幂等落入多个异构目标库以确保数据的最终一致性
  • 支持多租户体系,做到项目级的计算资源/表资源/用户资源等隔离

3)统一计算服务平台

统一计算服务平台,是一种数据虚拟化/数据联邦的实现。平台对内支持多异构数据源的下推计算和拉取混算,也支持对外的统一服务接口(JDBC/REST)和统一查询语言(SQL)。由于平台可以统一收口服务,因此可以基于平台打造统一元数据管理/数据质量管理/数据安全审计/数据安全策略等模块。平台也支持多租户体系。

4)统一数据可视化平台

统一数据可视化平台,加上多租户和完善的用户体系/权限体系,可以支持跨部门数据从业人员的分工协作能力,让用户在可视化环境下,通过紧密合作的方式,更能发挥各自所长来完成数据平台最后十公里的应用。

以上是基于整体模块架构之上,进行了统一抽象设计,并开放存储选项以提高灵活性和需求适配性。这样的RTDP平台设计,体现了现代数仓的实时化/虚拟化/平民化/协作化等能力,并且覆盖了端到端的OLPP数据流转链路。

  • 数据源、客户端,列举了大多数数据应用项目的常用数据源类型。

  • 数据总线平台DBus,作为统一数据采集平台,负责对接各种数据源。DBus将数据以增量或全量方式抽取出来,并进行一些常规数据处理,最后将处理后的消息发布在Kafka上。

  • 分布式消息系统Kafka,以分布式、高可用、高吞吐、可发布-订阅等能力,连接消息的生产者和消费者。

  • 流式处理平台Wormhole,作为统一流式处理平台,负责流上处理和对接各种数据目标存储。Wormhole从Kafka消费消息,支持流上配置SQL方式实现流上数据处理逻辑,并支持配置化方式将数据以最终一致性(幂等)效果落入不同数据目标存储(Sink)中。

  • 在数据计算存储层,RTDP架构选择开放技术组件选型,用户可以根据实际数据特性、计算模式、访问模式、数据量等信息选择合适的存储,解决具体数据项目问题。RTDP还支持同时选择多个不同数据存储,从而更灵活的支持不同项目需求。

  • 计算服务平台Moonbox,作为统一计算服务平台,对异构数据存储端负责整合、计算下推优化、异构数据存储混算等(数据虚拟化技术),对数据展示和交互端负责收口统一元数据查询、统一数据计算和下发、统一数据查询语言(SQL)、统一数据服务接口等。

  • 可视应用平台Davinci,作为统一数据可视化平台,以配置化方式支持各种数据可视化和交互需求,并可以整合其他数据应用以提供数据可视化部分需求解决方案,另外还支持不同数据从业人员在平台上协作完成各项日常数据应用。其他数据终端消费系统如数据开发平台Zeppelin、数据算法平台Jupyter等在本文不做介绍。

  • 切面话题如数据管理、数据安全、开发运维、驱动引擎,可以通过对接DBus、Wormhole、Moonbox、Davinci的服务接口进行整合和二次开发,以支持端到端管控和治理需求。

2.技术组件介绍

2.1 数据总线平台DBus

宜信实时数据平台介绍_第3张图片

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语义。
  • 通过心跳表机制确保消息端到端探活感知。

2.1.2 DBus功能特性

  • 支持配置化全量数据拉取
  • 支持配置化增量数据拉取
  • 支持配置化在线格式化日志
  • 支持可视化监控预警
  • 支持配置化多租户安全管控
  • 支持分表数据汇集成单逻辑表

2.1.3 DBus技术架构

宜信实时数据平台介绍_第4张图片

2.1.4 DBus(Github链接)

更多DBus技术细节和用户界面,可以参看:

GitHub: github.com/BriData

2.2 分布式消息系统Kafka

Kafka已经成为事实标准的大数据流式处理分布式消息系统,当然Kafka在不断的扩展和完善,现在也具备了一定的存储能力和流式处理能力。关于Kafka本身的功能和技术已经有很多文章信息可以查阅,本文不再详述Kafka的自身能力。

2.3 流处理平台Wormhole

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r9ba7C6f-1590318188187)(宜信实时数据平台介绍.assets/RTDP架构之Wormhole-1590132527372.png)]

2.3.1 Wormhole设计思想

1)从外部角度看待设计思想

  • 消费来自Kafka 的UMS消息和自定义JSON消息
  • 负责对接不同的数据目标存储 (Sink),并通过幂等逻辑实现Sink的最终一致性
  • 支持配置SQL方式实现流上处理逻辑
  • 提供Flow抽象。Flow由一个Source Namespace和一个Sink Namespace定义,且具备唯一性。Flow上可以定义处理逻辑,是一种流上处理的逻辑抽象,通过与物理Spark Streaming、Flink Streaming解耦,使得同一个Stream可以处理多个Flow处理流,且Flow可以在不同Stream上任意切换。
  • 支持基于回灌(backfill)的Kappa架构;支持基于Wormhole Job的Lambda架构

2)从内部角度看待设计思想

  • 基于Spark Streaming、Flink计算引擎进行数据流上处理。Spark Streaming可支持高吞吐、批量Lookup、批量写Sink等场景;Flink可支持低延迟、CEP规则等场景。
  • 通过ums_id_, ums_op_实现不同Sink的幂等入库逻辑
  • 通过计算下推实现Lookup逻辑优化
  • 抽象几个统一以支持功能灵活性和设计一致性

✔ 统一DAG高阶分形抽象

✔ 统一通用流消息UMS协议抽象

✔ 统一数据逻辑表命名空间Namespace抽象

  • 抽象几个接口以支持可扩展性

✔ SinkProcessor:扩展更多Sink支持

✔ SwiftsInterface:自定义流上处理逻辑支持

✔ UDF:更多流上处理UDF支持

  • 通过Feedback消息实时归集流式作业动态指标和统计

2.3.2 Wormhole功能特性

支持可视化,配置化,SQL化开发实施流式项目

支持指令式动态流式处理的管理、运维、诊断和监控

支持统一结构化UMS消息和自定义半结构化JSON消息

支持处理增删改三态事件消息流

支持单个物理流同时并行处理多个逻辑业务流

支持流上Lookup Anywhere,Pushdown Anywhere

支持基于业务策略的事件时间戳流式处理

支持UDF的注册管理和动态加载

支持多目标数据系统的并发幂等入库

支持多级基于增量消息的数据质量管理

支持基于增量消息的流式处理和批量处理

支持Lambda架构和Kappa架构

支持与三方系统无缝集成,可作为三方系统的流控引擎

支持私有云部署,安全权限管控和多租户资源管理

2.3.3 Wormhole技术架构

宜信实时数据平台介绍_第5张图片

2.3.4 Wormhole(Github链接)

更多Wormhole技术细节和用户界面,可以参看:

GitHub:github.com/edp963/worm…

2.4 常用数据计算存储选型

RTDP架构对待数据计算存储选型的选择采取开放整合的态度。不同数据系统有各自的优势和适合的场景,但并没有一个数据系统可以适合各种各样的存储计算场景。因此当有合适的、成熟的、主流的数据系统出现,Wormhole和Moonbox会按照需要相应的扩展整合支持。

这里大致列举一些比较通用的选型:

  • 关系型数据库(Oracle/MySQL等):适合小数据量的复杂关系计算
  • 分布式列存储系统

✔ Kudu:Scan优化,适合OLAP分析计算场景

✔ HBase:随机读写,适合提供数据服务场景

✔ Cassandra:高性能写,适合海量数据高频写入场景

✔ ClickHouse:高性能计算,适合只有insert写入场景(后期将支持更新删除操作)

  • 分布式文件系统

✔ HDFS/Parquet/Hive:append only,适合海量数据批量计算场景

  • 分布式文档系统

✔ MongoDB:平衡能力,适合大数据量中等复杂计算

  • 分布式索引系统

✔ ElasticSearch:索引能力,适合做模糊查询和OLAP分析场景

  • 分布式预计算系统

✔ Druid/Kylin:预计算能力,适合高性能OLAP分析场景

2.5 计算服务平台Moonbox

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4muwfAuj-1590318188191)(宜信实时数据平台介绍.assets/RTDP架构之Moonbox.png)]

2.5.1 Moonbox设计思想

1)从外部角度看待设计思想

  • 负责对接不同的数据系统,支持统一方式跨异构数据系统即席混算
  • 提供三种Client调用方式:RESTful服务、JDBC连接、ODBC连接
  • 统一元数据收口;统一查询语言SQL收口;统一权限控制收口
  • 提供两种查询结果写出模式:Merge、Replace
  • 提供两种交互模式:Batch模式、Adhoc模式
  • 数据虚拟化实现,多租户实现,可看作是虚拟数据库

2)从内部角度看待设计思想

  • 对SQL进行解析,经过常规Catalyst处理解析流程,最终生成可下推数据系统的逻辑执行子树进行下推计算,然后将结果拉回进行混算并返回

  • 支持两层Namespace:database.table,以提供虚拟数据库体验

  • 提供分布式服务模块Moonbox Grid提供高可用高并发能力

  • 对可全部下推逻辑(无混算)提供快速执行通道

2.5.2 Moonbox功能特性

  • 支持跨异构系统无缝混算
  • 支持统一SQL语法查询计算和写入
  • 支持三种调用方式:RESTful服务、JDBC连接、ODBC连接
  • 支持两种交互模式:Batch模式、Adhoc模式
  • 支持Cli Command工具和Zeppelin
  • 支持多租户用户权限体系
  • 支持表级权限、列级权限、读权限、写权限、UDF权限
  • 支持YARN调度器资源管理
  • 支持元数据服务
  • 支持定时任务
  • 支持安全策略

2.5.3 Moonbox技术架构

宜信实时数据平台介绍_第6张图片

2.5.4 Moonbox(Github链接)

更多Moonbox技术细节和用户界面,可以参看:

GitHub: github.com/edp963/moon…

2.6 可视应用平台Davinci

宜信实时数据平台介绍_第7张图片

2.6.1 Davinci设计思想

1)从外部角度看待设计思想

  • 负责各种数据可视化展示功能
  • 支持JDBC数据源
  • 提供平权用户体系,每个用户可以建立属于自己的Org、Team和Project
  • 支持SQL编写数据处理逻辑,支持拖拽式编辑可视化展示,提供多用户社交化分工协作环境
  • 提供多种不同的图表交互能力和定制化能力,以应对不同数据可视化需求
  • 提供嵌入整合进其他数据应用的能力

2)从内部角度看待设计思想

  • 围绕View和Widget展开。View是数据的逻辑视图;Widget是数据可视化视图
  • 通过用户自定义选择分类数据、有序数据和量化数据,按照合理的可视化逻辑自动展现视图

2.6.2 Davinci功能特性

1)数据源

支持JDBC数据源
支持CSV文件上传

2)数据视图

支持定义SQL模版
支持SQL高亮显示
支持SQL测试
支持回写操作

3)可视组件

支持预定义图表
支持控制器组件
支持自由样式

4)交互能力

支持可视组件全屏显示
支持可视组件本地控制器
支持可视组件间过滤联动
支持群控控制器可视组件
支持可视组件本地高级过滤器
支持大数据量展示分页和滑块

5)集成能力

支持可视组件CSV下载
支持可视组件公共分享
支持可视组件授权分享
支持仪表板公共分享
支持仪表板授权分享

6)安全权限

支持数据行列权限
支持LDAP登录集成

2.6.3 Davinci(Github链接)

更多Davinci技术细节和用户界面,可以参看:

GitHub:github.com/edp963/davi…

你可能感兴趣的:(大数据,学习)