来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
实时数据平台(Real-time Data Platform,以下简称RTDP),由宜信技术学院研发的一个开源的实时数据平台(文章中有平台各组件的Github链接),旨在提供数据端到端实时处理能力(毫秒级/秒级/分钟级延迟),可以对接多数据源进行实时数据抽取,可以为多数据应用场景提供实时数据消费。作为现代数仓的一部分,RTDP可以支持实时化、虚拟化、平民化、协作化等能力,让实时数据应用开发门槛更低、迭代更快、质量更好、运行更稳、运维更简、能力更强。
概念模块架构,是实时数据处理Pipeline的概念层的分层架构和能力梳理,本身是具备通用性和可参考性的,更像是需求模块。下图给出了RTDP的整体概念模块架构,具体每个模块含义都可自解释,这里不再详述。
如下图所示,我们针对概念模块架构的四个层面进行了统一化抽象:
同时,也对存储层保持了开放的原则,意味着用户可以选择不同的存储层以满足具体项目的需要,而又不破坏整体架构设计,用户甚至可以在Pipeline中同时选择多个异构存储提供支持。
统一数据采集平台,既可以支持不同数据源的全量抽取,也可以支持增强抽取。其中对于业务数据库的增量抽取会选择读取数据库日志,以减少对业务库的读取压力。平台还可以对抽取的数据进行统一处理,然后以统一格式发布到数据总线上。这里我们选择一种自定义的标准化统一消息格式UMS(Unified Message Schema)做为统一数据采集平台和统一流式处理平台之间的数据层面协议。
UMS自带Namespace信息和Schema信息,这是一种自定位自解释消息协议格式,这样做的好处是:
平台也支持多租户体系,和配置化简单处理清洗能力。
统一流式处理平台,会消费来自数据总线上的消息,可以支持UMS协议消息,也可以支持普通JSON格式消息。同时,平台还支持以下能力:
统一计算服务平台,是一种数据虚拟化/数据联邦的实现。平台对内支持多异构数据源的下推计算和拉取混算,也支持对外的统一服务接口(JDBC/REST)和统一查询语言(SQL)。由于平台可以统一收口服务,因此可以基于平台打造统一元数据管理/数据质量管理/数据安全审计/数据安全策略等模块。平台也支持多租户体系。
统一数据可视化平台,加上多租户和完善的用户体系/权限体系,可以支持跨部门数据从业人员的分工协作能力,让用户在可视化环境下,通过紧密合作的方式,更能发挥各自所长来完成数据平台最后十公里的应用。
以上是基于整体模块架构之上,进行了统一抽象设计,并开放存储选项以提高灵活性和需求适配性。这样的RTDP平台设计,体现了现代数仓的实时化/虚拟化/平民化/协作化等能力,并且覆盖了端到端的OLPP数据流转链路。
数据源、客户端,列举了大多数数据应用项目的常用数据源类型。
数据总线平台DBus,作为统一数据采集平台,负责对接各种数据源。DBus将数据以增量或全量方式抽取出来,并进行一些常规数据处理,最后将处理后的消息发布在Kafka上。
分布式消息系统Kafka,以分布式、高可用、高吞吐、可发布-订阅等能力,连接消息的生产者和消费者。
流式处理平台Wormhole,作为统一流式处理平台,负责流上处理和对接各种数据目标存储。Wormhole从Kafka消费消息,支持流上配置SQL方式实现流上数据处理逻辑,并支持配置化方式将数据以最终一致性(幂等)效果落入不同数据目标存储(Sink)中。
在数据计算存储层,RTDP架构选择开放技术组件选型,用户可以根据实际数据特性、计算模式、访问模式、数据量等信息选择合适的存储,解决具体数据项目问题。RTDP还支持同时选择多个不同数据存储,从而更灵活的支持不同项目需求。
计算服务平台Moonbox,作为统一计算服务平台,对异构数据存储端负责整合、计算下推优化、异构数据存储混算等(数据虚拟化技术),对数据展示和交互端负责收口统一元数据查询、统一数据计算和下发、统一数据查询语言(SQL)、统一数据服务接口等。
可视应用平台Davinci,作为统一数据可视化平台,以配置化方式支持各种数据可视化和交互需求,并可以整合其他数据应用以提供数据可视化部分需求解决方案,另外还支持不同数据从业人员在平台上协作完成各项日常数据应用。其他数据终端消费系统如数据开发平台Zeppelin、数据算法平台Jupyter等在本文不做介绍。
切面话题如数据管理、数据安全、开发运维、驱动引擎,可以通过对接DBus、Wormhole、Moonbox、Davinci的服务接口进行整合和二次开发,以支持端到端管控和治理需求。
1)从外部角度看待设计思想
2)从内部角度看待设计思想
✔ 生成每条消息的唯一单调递增id,对应系统字段ums_id_
✔ 确认每条消息的事件时间戳(event timestamp),对应系统字段ums_ts_
✔ 确认每条消息的操作模式(增删改,或insert only),对应系统字段ums_op_
更多DBus技术细节和用户界面,可以参看:
GitHub: github.com/BriData
Kafka已经成为事实标准的大数据流式处理分布式消息系统,当然Kafka在不断的扩展和完善,现在也具备了一定的存储能力和流式处理能力。关于Kafka本身的功能和技术已经有很多文章信息可以查阅,本文不再详述Kafka的自身能力。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r9ba7C6f-1590318188187)(宜信实时数据平台介绍.assets/RTDP架构之Wormhole-1590132527372.png)]
1)从外部角度看待设计思想
2)从内部角度看待设计思想
✔ 统一DAG高阶分形抽象
✔ 统一通用流消息UMS协议抽象
✔ 统一数据逻辑表命名空间Namespace抽象
✔ SinkProcessor:扩展更多Sink支持
✔ SwiftsInterface:自定义流上处理逻辑支持
✔ UDF:更多流上处理UDF支持
支持可视化,配置化,SQL化开发实施流式项目
支持指令式动态流式处理的管理、运维、诊断和监控
支持统一结构化UMS消息和自定义半结构化JSON消息
支持处理增删改三态事件消息流
支持单个物理流同时并行处理多个逻辑业务流
支持流上Lookup Anywhere,Pushdown Anywhere
支持基于业务策略的事件时间戳流式处理
支持UDF的注册管理和动态加载
支持多目标数据系统的并发幂等入库
支持多级基于增量消息的数据质量管理
支持基于增量消息的流式处理和批量处理
支持Lambda架构和Kappa架构
支持与三方系统无缝集成,可作为三方系统的流控引擎
支持私有云部署,安全权限管控和多租户资源管理
更多Wormhole技术细节和用户界面,可以参看:
GitHub:github.com/edp963/worm…
RTDP架构对待数据计算存储选型的选择采取开放整合的态度。不同数据系统有各自的优势和适合的场景,但并没有一个数据系统可以适合各种各样的存储计算场景。因此当有合适的、成熟的、主流的数据系统出现,Wormhole和Moonbox会按照需要相应的扩展整合支持。
这里大致列举一些比较通用的选型:
✔ Kudu:Scan优化,适合OLAP分析计算场景
✔ HBase:随机读写,适合提供数据服务场景
✔ Cassandra:高性能写,适合海量数据高频写入场景
✔ ClickHouse:高性能计算,适合只有insert写入场景(后期将支持更新删除操作)
✔ HDFS/Parquet/Hive:append only,适合海量数据批量计算场景
✔ MongoDB:平衡能力,适合大数据量中等复杂计算
✔ ElasticSearch:索引能力,适合做模糊查询和OLAP分析场景
✔ Druid/Kylin:预计算能力,适合高性能OLAP分析场景
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4muwfAuj-1590318188191)(宜信实时数据平台介绍.assets/RTDP架构之Moonbox.png)]
1)从外部角度看待设计思想
2)从内部角度看待设计思想
对SQL进行解析,经过常规Catalyst处理解析流程,最终生成可下推数据系统的逻辑执行子树进行下推计算,然后将结果拉回进行混算并返回
支持两层Namespace:database.table,以提供虚拟数据库体验
提供分布式服务模块Moonbox Grid提供高可用高并发能力
对可全部下推逻辑(无混算)提供快速执行通道
更多Moonbox技术细节和用户界面,可以参看:
GitHub: github.com/edp963/moon…
1)从外部角度看待设计思想
2)从内部角度看待设计思想
1)数据源
支持JDBC数据源
支持CSV文件上传
2)数据视图
支持定义SQL模版
支持SQL高亮显示
支持SQL测试
支持回写操作
3)可视组件
支持预定义图表
支持控制器组件
支持自由样式
4)交互能力
支持可视组件全屏显示
支持可视组件本地控制器
支持可视组件间过滤联动
支持群控控制器可视组件
支持可视组件本地高级过滤器
支持大数据量展示分页和滑块
5)集成能力
支持可视组件CSV下载
支持可视组件公共分享
支持可视组件授权分享
支持仪表板公共分享
支持仪表板授权分享
6)安全权限
支持数据行列权限
支持LDAP登录集成
更多Davinci技术细节和用户界面,可以参看:
GitHub:github.com/edp963/davi…