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

文章目录

  • 宜信实时数据平台介绍(根据相关资料整理)
    • 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的整体概念模块架构,具体每个模块含义都可自解释,这里不再详述。

如下图所示,我们针对概念模块架构的四个层面进行了统一化抽象:

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

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


下面分别对四个抽象层进行解读:

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

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技术架构

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技术架构

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技术架构

2.5.4 Moonbox(Github链接)

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

GitHub: github.com/edp963/moon…

2.6 可视应用平台Davinci

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…

宜信实时数据平台介绍相关推荐

  1. 【JVM】运行时数据区介绍,程序计数器和虚拟机栈详解

    JVM越来越是Java面试中的重头戏,今天来总结一下JVM运行时数据区的相关内容. 文章目录 JVM运行时数据区 JVM运行时数据区内部结构 程序计数器(PC寄存器) 程序计数器的介绍 PC寄存器的实 ...

  2. GreenPlum 大数据平台--介绍

    一,GreenPlum 01,介绍: Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,主机.操作系统.内存.存储都是自我控制的,不存在共享. 官 ...

  3. Apache Kylin在4399大数据平台的应用

    来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie 作者介绍: 林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公 ...

  4. 我所经历的大数据平台发展史

    http://www.raincent.com/content-85-5840-1.html 非互联网时代 我是从2000年开始接触数据仓库,大约08年开始进入互联网行业,那时在互联网接触到数据平台与 ...

  5. 我所经历的大数据平台发展史(三):互联网时代 • 上篇

    编者按:本文是松子(李博源)的大数据平台发展史系列文章的第二篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统与非传统两个行业.是对数据平台发展的一个回忆,对非互联网.互联网,从 ...

  6. 建设大数据平台,从“治理”数据谈起

    一 随处可见的数据问题 大数据不是凭空而来,1981年第一个数据仓库诞生,到现在已经有了近40年的历史,而国内企业数据平台的建设大概从90年代末就开始了,从第一代架构出现到现在已经经历了近20年的时间 ...

  7. (转)我所经历的大数据平台发展史(三):互联网时代 • 上篇

    编者按:本文是松子(李博源)的大数据平台发展史系列文章的第二篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统与非传统两个行业.是对数据平台发展的一个回忆,对非互联网.互联网,从 ...

  8. 大数据和Hadoop平台介绍

    大数据和Hadoop平台介绍 定义 大数据是指其大小和复杂性无法通过现有常用的工具软件,以合理的成本,在可接受的时限内对其进行捕获.管理和处理的数据集.这些困难包括数据的收入.存储.搜索.共享.分析和 ...

  9. 大数据平台CDH的介绍和5.16/6.3版本的搭建

    以下记录和介绍为自己在测试环境中的实际操作,因为很详细,所以篇幅较长,作为自己的记录文档,同时也帮助初学大数据平台搭建的朋友. 目录 1. CDH介绍 Hadoop主流三大发行版本: 1.1 CDH体 ...

最新文章

  1. 送你9个快速使用Pytorch训练解决神经网络的技巧(附代码)
  2. Struts1.x系列教程(6):Bean标签库
  3. java中volatile的含义_java中volatile关键字的含义
  4. php session_start() 非常慢,php – session_start似乎很慢(但是有时候)
  5. java导入excel 实例_Java数据导入功能之读取Excel文件实例
  6. impala简介(大数据技术)
  7. 孩子从全班倒数第一到第二名,这位妈妈只做了这1件事!
  8. Springboot校园二手市场实战开发
  9. python中sqrt(4)*sqrt(9)_【单选题】Python表达式sqrt(4)*sqrt(9)的值为
  10. 达内java实训总结_Java核心技术点小结
  11. 单片机重要组成部分还有什么,引脚封装分布知识讲解(一)
  12. 国产CI520 13.56MHz非接触式读写器NFC读卡芯片替代CV520
  13. JavaSE(十一)加密与安全
  14. uni-app中文本过长-实现折叠与展开效果
  15. 64位 regsrv win10_64位WINDOWS 10系统下安装Eplan 2.8及注册过程
  16. 阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
  17. plc实验报告流程图_plc实验报告
  18. 翻译—使用Python分析离散心率信号–第2部分
  19. 石墨文档(协同开发)
  20. c语言字符图形的操作叙述,C语言课程设计--(图形编程_全).doc

热门文章

  1. 阿龙学堂-算法-逻辑回归
  2. 论文笔记与解读《DRAW: A Recurrent Neural Network for Image Generation》
  3. 在Xcode 中如何打包测试版 给测试工程师使用
  4. 基于java的宠物狗销售网站系统
  5. WPF 窗口最大化正确方法
  6. occt 几何图形库入门01
  7. y空间下载_阿里云网盘来啦!大咖手把手教你如何搭建免费quot;5G极速下载”私人网盘...
  8. python 文件名批量修改、重命名
  9. 终于!疫情之下,第一批企业没能熬住面临倒闭,员工被遣散,没能等来春暖花开!...
  10. android 百度地图线路规划问题