设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

如何基于日志,同步实现数据的一致性和实时抽取?

发布时间:2021-01-07 06:43 所属栏目:53 来源:网络整理
导读:《如何基于日志,同步实现数据的一致性和实时抽取?》要点: 本文介绍了如何基于日志,同步实现数据的一致性和实时抽取?,希望对您有用。如果有疑问,可以联系我们。 作者:王东 宜信技术研发中心架构师 目前就职于宜信技术研发中心,任架构师,负责流式计算和

《如何基于日志,同步实现数据的一致性和实时抽取?》要点:
本文介绍了如何基于日志,同步实现数据的一致性和实时抽取?,希望对您有用。如果有疑问,可以联系我们。

作者:王东

宜信技术研发中心架构师

  • 目前就职于宜信技术研发中心,任架构师,负责流式计算和大数据业务产品解决方案.
  • 曾任职于Naver china(韩国最大搜索引擎公司)中国研发中心资深工程师,多年从事CUBRID分布式数据库集群开发和CUBRID数据库引擎开发

    http://www.cubrid.org/blog/news/cubrid-cluster-introduction/

主题简介:

  1. DWS的背景介绍
  2. dbus+wormhole总体架构和技术实现方案
  3. DWS的实际运用案例

前言

大家好,我是王东,来自宜信技术研发中心,这是我来社群的第一次分享,如果有什么不足,请大家多多指正、包涵.

本次分享的主题是《基于日志的DWS平台实现和应用》,主要是分享一下目前我们在宜信做的一些事情.这个主题里面包含到2个团队很多兄弟姐妹的努力的结果(我们团队和山巍团队的成果).这次就由我代为执笔,尽我努力给大家介绍一下.

其实整个实现从原理上来说是比较简单的,当然也涉及到不少技术.我会尝试用尽量简单的方式来表达,让大家了解这个事情的原理和意义.在过程中,大家有问题可以随时提出,我会尽力去解答.

DWS是一个简称,是由3个子项目组成,我稍后做解释.

一、背景

事情是从公司前段时间的需求说起,大家知道宜信是一个互联网金融企业,我们的很多数据与标准互联网企业不同,大致来说就是:

玩数据的人都知道数据是非常有价值的,然后这些数据是保存在各个系统的数据库中,如何让需要数据的使用方得到一致性、实时的数据呢?

过去的通用做法有几种是:

  1. DBA开放各个系统的备库,在业务低峰期(比如夜间),使用方各自抽取所需数据.由于抽取时间不同,各个数据使用方数据不一致,数据发生冲突,而且重复抽取,相信不少DBA很头疼这个事情.
  2. 公司统一的大数据平台,通过Sqoop 在业务低峰期到各个系统统一抽取数据,并保存到Hive表中,然后为其他数据使用方提供数据服务.这种做法解决了一致性问题,但时效性差,基本是T+1的时效.
  3. 基于trigger的方式获取增量变更,主要问题是业务方侵入性大,而且trigger也带来性能损失.

这些方案都不算完美.我们在了解和考虑了不同实现方式后,最后借鉴了?linkedin的思想,认为要想同时解决数据一致性和实时性,比较合理的方法应该是来自于log.

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

把增量的Log作为一切系统的基础.后续的数据使用方,通过订阅kafka来消费log.

比如:

  • 大数据的使用方可以将数据保存到Hive表或者Parquet文件给Hive或Spark查询;
  • 提供搜索服务的使用方可以保存到Elasticsearch或HBase 中;
  • 提供缓存服务的使用方可以将日志缓存到Redis或alluxio中;
  • 数据同步的使用方可以将数据保存到自己的数据库中;
  • 由于kafka的日志是可以重复消费的,并且缓存一段时间,各个使用方可以通过消费kafka的日志来达到既能保持与数据库的一致性,也能保证实时性;

为什么使用log和kafka作为基础,而不使用Sqoop进行抽取呢? 因为:

为什么不使用dual write(双写)呢?,请参考https://www.confluent.io/blog/using-logs-to-build-a-solid-data-infrastructure-or-why-dual-writes-are-a-bad-idea/

我这里就不多做解释了.

二、总体架构

于是我们提出了构建一个基于log的公司级的平台的想法.

下面解释一下DWS平台,DWS平台是有3个子项目组成:

  1. Dbus(数据总线):负责实时将数据从源端实时抽出,并转换为约定的自带schema的json格式数据(UMS?数据),放入kafka中;
  2. Wormhole(数据交换平台):负责从kafka读出数据 将数据写入到目标中;
  3. Swifts(实时计算平台):负责从kafka中读出数据,实时计算,并将数据写回kafka中.

图中:

  • Log extractor和dbus共同完成数据抽取和数据转换,抽取包括全量和增量抽取.
  • Wormhole可以将所有日志数据保存到HDFS中; 还可以将数据落地到所有支持jdbc的数据库,落地到HBash,Elasticsearch,Cassandra等;
  • Swifts支持以配置和SQL的方式实现对进行流式计算,包括支持流式join,look up,filter,window aggregation等功能;
  • Dbus web是dbus的配置管理端,rider除了配置管理以外,还包括对Wormhole和Swifts运行时管理,数据质量校验等.

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读