摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战。Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活。当然,我们应对数据挑战的方式不止于此。

关键词:Tapdata,DaaS,实时数据同步,数据孤岛,CDC模式

(这部分放在文章的摘要和关键词那里)

 
随着信息化的日渐成熟,企业构建的相对孤立的数据系统也逐渐增多,从数十到数百,在大中型企业已经比比皆是。在这种情况下,想要使用企业的一些关键数据来做一些新业务,无论是可视化运营面板,还是建立一个新的CRM,都面临着企业数据难以获取的难题。
 
Tapdata 就致力于解决企业日趋严重的数据孤岛问题。我们的愿景是让这些企业可以像自来水(Tap Water)一样简单的使用数据。
 
那我们如何实现简单使用数据呢?

Tapdata DaaS 架构

类似与 IaaS,PaaS 或者 SaaS,Tapdata 给你提供一个 DaaS (Data as a Service),把你想要的数据作为一个服务提供出来。Tapdata 将企业各个业务系统的数据汇总到一个中央化平台,经过低代码方式治理以后,形成可复用的企业数据资产,通过无代码数据接口方式提供给业务使用方。

那 Tapdata 和其他数据平台的核心区别点和创新点是什么呢?Tapdata 做的是一个实时同步+实时处理+实时服务三位一体的全链路实时数据处理及服务平台。在Tapdata,我们坚信,实时的数据,才更有价值(查看Tapdata 产品理念)。

 
 

举个栗子:保险公司如何解决数据孤岛问题?

想象一下你在一家保险公司做研发。这家保险公司有若干套业务系统,寿险,财产险,特殊险等等。因历史原因系统是由不同业务部门分别建设的,所以各个业务系统都在各自管理自己业务的客户和保单数据。领导说为了提高客户体验,希望做一个微信小程序来让公司的客户可以通过小程序端来管理他们的所有保单,包括基本信息维护,保单一览表,保单付费管理等功能。基本的诉求就是要能够在一个地方看到不同保险业务系统的数据。为了做到这一点,你需要一个聚合表CombinedPolicyTable,需要将来自Life, Property 和 Specialty系统内的保单数据全部集中放到一个中央的表里,然后让小程序来访问。
 
 
 
如何将不同业务系统的数据抽取到合并的CombinedPolicyTable?
方法有不少。
 

脚本方式

数据库导出脚本,ETL工具,自己写个SQL脚本。
 
 
 
通常这种脚本或者ETL都是定期执行的,比如说每天晚上会去各个业务系统库里运行这条命令:
SELECT * FROM POLICY;
将每个业务库的全量结果取出来写到CombinedPolicyTable里。
 
上面主流的模式香不香?
不香。
为什么?
其一,如果源库数据量大的话,这个是非常消耗资源的。每天晚上要对全量数据读一遍(源库),写一遍(目标库),哪怕白天只有100个保单更新。
其二,数据不及时。想象下如果小明同学在寿险系统里交了保费,但是要到第二天他才能在小程序中看到更新的状态(已支付),这个体验不连贯。
 
有没有体验好一点,源库的数据可以更加及时一点的方式?有。
 

双写方案

找业务同学改下代码,来个双写方案呗!当用户在源业务系统提交一个更新,先写原业务系统的表,紧接着把数据写到聚合表。
 
 
 
这种方式无疑是可以做到第一时间就把业务库的数据更新写入到目标表,然后给小程序提供最及时最新的客户及保单数据。
但也让人头疼:你要找原来的业务团队更新原有业务代码,并且这种方案对源系统有很大的侵入性。对于老大关注的顶级项目,没问题可以调动资源。但是如果类似的需求多了,就会出现不可管理,风险极高的后果。
有什么更好的解决方案呢?
 
认识更好的方案:Tapdata Real Time DaaS
Tapdata 的 Real Time DaaS 架构可以比较理想的解决上述问题。
 

CDC模式

从本质上,Tapdata的第一步就是将批量、滞后的ETL换成了CDC方式。
 
 
 
 

CDC模式的优势

 
CDC模式的优势很明显:
  1. 对源库性能影响小。取决于实现方式,有可能在单独读取日志文件,对源库主进程无影响。
  2. 只需要读取、处理数据库的变更事件(增删改),所需要资源消耗远小于全量跑批需要的资源
  3. 最重要的是,从事务在源端提交开始到更新写入同步的目标库,延迟可以小于1秒。这种准实时数据复制可以解锁大量对实时性要求较高的业务场景。
 
CDC 同步是一个有技术壁垒的活:
  • 缺乏标准。大部分数据库都会提供标准的访问操作接口,如SQL。但是WAL日志属于各家内部实现,99.99%的程序员也不需要了解这个机制。
  • 分布式下处理复杂。新一点的数据库都是分布式,如何在集群存在多个写节点的情况下保证WAL日志的顺序一致性和事务性?
  • 日志的格式都会比较复杂,特别是涉及到事务提交及回滚的情况。
 

应对数据挑战不止于此

这听上去就是一个数据库实时同步的工作,那我是不是找一个同步工具就可以了呢?非也非也。
确实到目前为止,我们只是把需要的数据从源库里面无侵入,准实时的抽取了出来。这个也是Tapdata 数据平台的第一个核心部分:实时数据同步。 数据抽出来后,接下来的工作还包括:
  • 如果数据来自多个库,往往需要对这些数据进行合并;
  • 如果数据来自一个很老很复杂的关系型设计,往往需要对不太容易理解的表结构进行重构,组成新的模型;
  • 如果数据来自一个主表(比如Policy),但是我们希望借这个动作,把Policy里面的客户信息也补齐进去。
这就涉及到一些实时的数据处理技术。欢迎继续关注 Tapdata 实时数据平台的第二环节:实时流数据处理。下期见!

本文作者:TJ 唐建法

 
2010-2019年 TJ 先后任职联邦快递首席架构师和MongoDB大中华区首席架构师,2019年至今于深圳创立Tapdata 并获千万美元融资。TJ 是具有丰富海内外工作经验的大数据领域专家,获得了阿里云 MVP、 腾讯云 TVP、极客时间 MongoDB 高手课金牌讲师等荣誉,创建了全球最大的MongoDB 技术社区,并引领国内实时数据服务技术发展。
 
也许你还想了解:
 
-------------------------
招人小广告:我们现在迫切需要更多的工程师来加入我们一起,把 Tapdata 打造成一个世界级的实时数据处理平台,欢迎各位朋友一起过来撸代码,冲浪和定义平台未来。
 
我们亟需这些岗位的朋友加入我们:研发Leader,Java 中间件研发工程师,测试Leader,产品经理/总监,MongoDB数据库研发工程师,MongoDB 高级DBA,Oracle 高级DBA 查看详细岗位介绍
 
原文地址:http://tapdata.net/tapdata-real-time-daas-technical-details-1.html

Tapdata Real Time DaaS 技术详解 PART I :实时数据同步的更多相关文章

  1. 《Windows驱动开发技术详解》之IRP的同步

    应用程序对设备的同步异步操作: 大部分IRP都是由应用程序的Win32 API函数发起的.这些Win32 API本身就支持同步和异步操作.例如,ReadFile.WriteFile和DeviceIoC ...

  2. 《Windows驱动开发技术详解》之驱动程序的同步处理

    中断请求级 中断请求被分为软件中断和硬件中断两种,这些中断都映射成不同级别的中断请求级.每个中断请求都有各自的优先级别,正在运行的线程随时都可以被中断打断,进入到中断处理程序.优先级高的中断来临时,处 ...

  3. Oracle Job定时任务详解、跨数据库数据同步

    业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...

  4. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  5. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

  6. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  7. 《CDN技术详解》 - CDN知多少?

    开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...

  8. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  9. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

随机推荐

  1. 比 Navicat 还要好用、功能更强大的工具!

    DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议.可以通过官方网站或者 Github 进行下载. 由于 DBeaver 基于 Java 开发 ...

  2. 21天学通Python PDF完整版

    有需要的点击这里自取 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pyt ...

  3. 4.27-Postman和JMeter总结及实战描述

    一.数据格式 常用的请求方法有8种,但是最常用的有4-5种 1.GET 获取资源 2.POST 添加资源(对服务端已存在的资源也可以做修改和删除操作) 3.PUT 修改资源 4 .DELETE删除资源 ...

  4. 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4

    在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...

  5. 自己的~/.vimrc

    " 语法高亮syntax on " 搜索高亮set hlsearch " 显示行号set number" let mapleader="," ...

  6. 就是要让你搞懂Nginx,这篇就够了!

    开源Linux 长按二维码加关注~ 作者:渐暖° 出处:blog.csdn.net/yujing1314/article/details/107000737 来源:公众号51CTO技术栈 Nginx ...

  7. logging、openpyxl、第三方模块下载

    ### 日志模块的组成部分 ```pythonimport logging# 1.logger对象:产生日志logger = logging.getLogger('转账记录')# 2.filter对象 ...

  8. 【PyHacker编写指南】打造URL批量采集器

    这节课是巡安似海PyHacker编写指南的<打造URL批量采集器> 喜欢用Python写脚本的小伙伴可以跟着一起写一写呀. 编写环境:Python2.x 00x1: 需要用到的模块如下: ...

  9. Android 解析包时出现问题 的解决方案(应用检查更新)

    问题描述我们在进行Android开发的时候,一般都会在应用里检测有没有更新,并且从网上下载最新的版本包,覆盖本地的旧版本.在我的项目中,出现了一个问题,就是当安装包下载到本地的时候,产生了" ...

  10. python之loggin模块与第三方模块

    目录 logging模块详解 第三方模块 openpyxl模块 logging模块详解 主要组成部分 logger对象,用于产生日志 # 第一步,创建logger对象 logger = logging ...