写点什么

宜人贷 PaaS 数据服务平台简介(下篇)

  • 2020-02-13
  • 本文字数:3069 字

    阅读完需:约 10 分钟

宜人贷PaaS 数据服务平台简介(下篇)

导读:在上篇中,我们已经简单了解了宜人贷数据平台 Genie 的特点,并且掌握了数据平台发展历程的一些信息。本文作为下篇,首先我们会在其中重点讲解实时数据仓库的技术细节,之后介绍数据平台的功能。下面我们一起来了解一下这些知识吧~


三、实时数据仓库技术细节


离线数据仓库是 t+1 的数据,也就是说数据时效性是处理前一天的数据。一般来说离线方案同步数据的策略是每天定时同步一次数据,而且基本是同步一次全量数据,也就是说每天一个全量数据(业务库)的镜像。


除了时效性,还有一点就是镜像的数据状态只有一个,所以想知道某个值的历史变化过程,就需要走拉链表(非常耗时耗资源)。实时数据仓库的实现方式很多,但是大多都是殊途同归。实时数仓有两点特点:第一访问实时数据;第二结果能近似实时的返回。当然离线仓库如果优化的好,完成第二点也是可以实现的。思考两个问题,为什么要用实时数据?为什么要有实时数据仓库?


近几年数据工程师们在如何提高数据时效性上做了非常多的努力和尝试。推动这些实时数据同步、处理技术发展的当然还是场景与需求。中国的大互联网环境竞争非常激烈,如何提高用户转化率变得尤为关键。


用户画像、推荐系统、漏斗分析、智能营销等等数据相关的产品都离不开实时数据的处理与计算。


获取实时数据最直接的方式是直连业务库,优势明显,缺点也很明显,有些逻辑需要跨库多源查询关联的时候直接连业务库就行不通了。所以首先需要把多个源头的数据集中同步起来,这个同步过程就是一个非常具有挑战的地方,要考虑数据的时效性,对业务系统的侵入性,数据的安全性和数据的一致性等等诸多难题。


所以我们需要一个同步数据的工具,它需要有以下几个特点:


· 能够近似实时的同步生产库的数据和日志数据


· 和生产库还有应用服务器完全解耦


· 同步出来的数据可以分发到其他的存储


· 整个同步过程保证数据不丢失,或者说可以按照任意时间批量重新同步


宜信敏捷大数据团队开发的 DBus 和 Wormhole 能很好的满足以上 4 点。


DBus 利用数据库的 binlog 进行数据抽取,binlog 一般延迟是比较低的,这样既保证了实时的特性,也保证了对生产库的零侵入。


其实利用日志来构建一个健壮的数据系统是一个很常见的方案。Hbase 利用 wal 来保证可靠性,MySQL 主备同步使用 binlog,分布式一致性算法 Raft 利用日志保证一致性,还有 Apache Kafka 也是利用了日志来实现的。


DBus 很好的利用了数据库的 binlog 日志并且进行统一的 schema 转化,形成了自己日志标准,以便支持多种数据源。DBus 的定义是一个商业级别的数据总线系统。它可以实时的将数据从数据源抽取发送给 Kafka。


Wormhole 负责将数据同步写入其他的存储之中。Kafka 就成了一个真正意义上的数据总线,Wormhole 支持 sink 端按照任意时间开始消费 Kafka 中的数据,这样也就能很好的进行数据回溯。


1535436906161095307.png


Genie 的实时架构如下:


1535436920116014701.png


有了 DBus 和 Wormhole 我们可以很轻松的把数据从生产备库实时的同步到我们的 Cassandra 集群,然后再同步 Presto,为用户提供 SQL 语言计算。


通过这个简单的架构我们高效的完成了实时数据仓库的搭建,并且实现了公司的实时报表平台和一些实时营销类的数据产品。


对于为什么会使用 Presto 我可以给出以下的答案:


· Presto 拥有交互级别的数据计算查询体验


· Presto 支持水平扩展,presto on yarn (slider)


· 支持标准 SQL,并且方便扩展


· facebook, uber, netflix 生产使用


· 开源语言 java 符合我们团队技术栈, 自定义函数


· 支持多数据源关联 join 逻辑下推,Presto 可以接 Cassandra, Hdfs 等等


· pipelined executions - 减少了不必要的 I/O 开销


1535436936981036321.png


Presto 是 m/s 架构,整体细节不多说了。Presto 有个数据存储抽象层,可以支持不同的数据存储上执行 SQL 计算。Presto 提供了 meta data api,data location api, data stream api,支持自开发可插拔的 connector。


1535436953819067280.png


在我们的方案中是 Presto on Cassandra 的,因为 Cassandra 相对于 Hbase 来说可用性更好一些,比较适合 adhoc 查询场景。Hbase CAP 中偏向 c,Cassandra CAP 中偏向 a。Cassandra 是一个非常优秀的数据库,方便易用,底层使用 Log-Structured Merge-Tree 做存储索引的核心数据结构。


综上我大概的介绍了宜人贷的实时数据处理架构,下面我们看一下整体的数据处理架构。


1535436970116052100.png


整体 Lambda 架构 speed 层利用 DBus 和 Wormhole 组装成了一套实时数据总线,speedlayer 可以直接支撑实时数据产品。DataLake 是一个抽象的概念实现方式,我们主要是利用 Hdfs + Cassandra 存储数据,计算引擎主要以 Hive 和 Presto 为主,再通过平台统一的 metadata 对元数据整合提供,这样就实现了一个完整的 DataLake。DataLake 主要的应用场景是高级灵活的分析,查询场景如 ml 。


DataLake 和数据仓库的区别是,DataLake 更加敏捷灵活,侧重数据的获取,数据仓库则侧重于标准、管理、安全和快速索引。


参考文献:


https://www.confluent.io/blog/using-logs-to-build-a-solid-data-infrastructure-or-why-dual-writes-are-a-bad-idea/


http://thesecretlivesofdata.com/raft/


https://engineering.linkedin.com/data-replication/open-sourcing-databus-linkedins-low-latency-change-data-capture-system


https://yq.aliyun.com/articles/195388


https://www.cnblogs.com/tgzhu/p/6033373.html

四、数据平台 Genie 之功能简介

整个 Genie 数据服务平台由 7 个大的子平台模块组成:


· 数据查询


· 数据知识


· 实时报表


· 数据开发


· 作业调度


· 权限管理


· 集群监控管理


下面我们来介绍一下其中的几个模块。


>>>>数据查询模块


· 用户可以查询数据仓库、数据集市、实时数据仓库的数据


· 通过对 SQL 的解析来实现细粒度的权限管理


· 提供多种查询引擎


· 数据导出


1535437035602041956.png


>>>>数据知识模块


· 元数据监控管理


· 对全公司的元数据提供管理查询功能


· 可以监控元数据变更并预警邮件


· 血缘分析查询引擎


· SQL 分析引擎


· 对仓库所有的作业/表/字段进行分析


· 提供血缘分析/影响分析


1535437060623059218.png


1535437076968077229.png


1535437101664064989.png


>>>>数据报表模块


· 实时数据仓库


· Presto on Cassandra 直连 Presto


· 数百张表,实时同步(DBus+WHurl)


· 达芬奇报表平台 (达芬奇 url)


· 近千张报表全公司已使用


1535437130083083149.png


>>>>数据开发模块


· 数据程序设计 Genie-ide


· 提供 Genie-ide 进行数据程序的开发


· 提供网盘进行脚本保存管理


· 可以实时测试/上线


· 数据管道


✔ 一键离线入仓


✔ 一键实时入仓


1535437151859010957.png


>>>>作业调度 Triangle 模块


· 微服务架构设计每个模块均为一个服务


· 提供 restful 接口可以方便二次开发与其它平台融合


· 提供健康监控作业管理后台


· 提供公共作业和私有作业


· 作业流之间逻辑隔离


· 并发控制,失败策略管理


1535437182208046715.png


以上是对数据平台 Genie 模块功能的简介,那 Genie 平台具体可以做哪些事情呢?


首先,它可以实现离线入仓,实时入仓 1 分钟内配置完成(数据仓库,数据集市);


其次,实时入仓后可直接配置实时报表展示推送(BI 分析);


第三,实时数据支持多种含有权限安全的同构对接方式:api ,kafka, jdbc(业务数据产品);


第四,一站式数据开发支持 hive,spark-sql,presto on cassandra,python(数据开发);


第五,服务化的调度系统支持外部系统接入(基础技术组件)。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/167


2020-02-13 21:50748

评论

发布
暂无评论
发现更多内容

我们是如何逐渐变普通的?

架构精进之路

个人成长 认知提升

如何有效提高技能?我推荐《刻意练习》

老胡爱分享

个人成长 练习

MECE分析法

陈磊@Criss

测者陈磊

架构到底是什么?

架构精进之路

架构

最受 IT 公司欢迎的 30 款开源软件

程序员生活志

开源

技术分享丨数据仓库的建模与ETL实践技巧

华为云开发者联盟

数据仓库 数据分析 数据模型 GaussDB ETL算法

一、GraphQL,你准备好了么?

星期35

SICP,我的函数式编程启蒙书

Kurtis Moxley

读书 函数式编程

了解JS压缩图片,这一篇就够了

华为云开发者联盟

Java html5 vue.js 大前端 npm

年轻的樵夫哟,你掉的是这个免费 8 核 4G 公网服务器,还是这个随时可用的 Docker 实验平台?

newbe36524

Docker 微服务 .net core ASP.NET Core

Docker 禁止美国“实体清单”主体使用,Docker 开源项目应不受影响

程序员生活志

Docker 互联网热点

初识WebRTC

soolaugust

WebRTC

面试官问:运行时的内存布局

Java小咖秀

Java JVM

5步教你完成小熊派开发板贴片

华为云开发者联盟

后端 开发工具 华为云 小熊派 开发板

高并发,你真的了解吗?

华为云开发者联盟

负载均衡 软件 高并发 操作系统 服务器集群

面经手册 · 第5篇《看图说话,讲解2-3平衡树「红黑树的前身」》

小傅哥

Java 数据结构 小傅哥 红黑树 2-3树

python操作word文件

wjchenge

Python word

对于一款软件而言,完备的功能固然重要,但交互体验也不该被忽视

Philips

Java 敏捷开发 UI .net core 交互设计

HTTP方式文件分片断点下载

xcbeyond

Java 断点续传 下载 Range

C++ 互斥锁和条件变量的性能比较

小林coding

c c++ 编程 并发编程

推荐一款可视化+NoteBook工具

数据社

大数据 可视化 Zeppelin notebook

C++ 借来的资源,如何还的潇洒?

小林coding

c c++ 编程 编程习惯 内存管理

KPI考核存在的问题

石云升

读书笔记 考核 KPI 数字化管理

AI+云,数字金融掘金客户微细分

人称T客

昨梦记

波波夫

【得物技术】乘风破浪—优雅代码四部曲

得物技术

Java 代码规范

PHPStrom安装Xdebug及使用

书旅

php Xdebug PHPStrom

学过 C++ 的你,你不得不知的这 10 条细节

小林coding

c c++ 编程 编程之路

实战分享丨MySQL 与Django版本匹配相关经验

华为云开发者联盟

MySQL 数据库 django 华为云

全面剖析PHP-FPM+Nginx通信原理

书旅

nginx 正向代理与反向代理 PHP-FPM

二叉树-四种遍历方式的 Java 实现

多选参数

二叉树 遍历

宜人贷PaaS 数据服务平台简介(下篇)_行业深度_孙立喆_InfoQ精选文章