00:02
数据接入平台系列直播的第一期。啊。然后的话现,嗯。本次主题是数据接入平台的功能介绍和那个架构析对,那我们先接下来就开始本次的分享,时间已经差不多了。嗯,首先。本期本本本期是系列直播的第一期,然后主要是对DP的应用场景,功能以及技术架构进行一些分析,然后介绍,然后从整体上给大家说明一下数据接入平台它是什么,能做什么,然后底层是怎么实现的,然后的话接下来我们就正式开始开始本次的分享。嗯,首先来看一下本次的分享大纲,它主要分为四个部分,一部分是一个产品简介,它主要介绍一下这产品的。
01:07
就做这个产品的背景,然后它的一些场景,它的优势,然后的话,首先第二个是我们介绍一下它的应用场景,比如说它是在哪些场景下可以用到,它有哪些那种那种是那比如说数据上报啊,那种场景可用到,然后第三步是一个技术,技术架构,我们会简单讲一下它底层的技术实现,然后最后个我们附会,附带一些客户案例,对,主要是分为这个四个四个部分。然后的话,首先我们来看一下一个非常经典的一个数据电路的一个架构图。可以来先看这张图,然后从左可以从左到右看,然后从左到右依次,它其实是一个数据源。然后数据接入层,然后数据缓冲层,然后数据一个分发的层,然后是最后一个是数据目标,然后其中你们可以来看这张图,它会变得你们看这张图,它会是其实是一个很复杂的一个图,它左边它这个数据源,它经过一些脚本或者程序,它把数据接入到中间,中间的这个盘冲层,缓冲层,它其实其它就是一个卡不卡,然后其中在数据数据链路的那个数据缓冲层当中,一般它其实都是消息队列,然后从社区的角度和架构角度来看这个问题的话,它其实卡卡作为一个事实上的一个数据的接入标准,然后也会也会也是作为事实的数据链,事实当中的一个数据链路的一个核心的一个中间环节,然后这时候的话,你会发现很多的数据电路,基本核心都是卡夫卡,然后其实在卡夫卡上下游生态当中,它会围绕着它的上下游会有很多的一个数据接入,数据流出的一个开源的生态,比如说logchlink Spark卡、connect等等,那这时候你会发现我们要搭建一套完整的数据。
02:48
链路的时候,我们需要,首先我们要知道我们的数据源是什么,然后再再搭建我们数据接入层的一些服务,然后再再搭建我们一个卡夫卡,然后再再接下来我们会可能会如果需要清洗的话,我们可能就需要。
03:03
可能可能就需要搭建一个数据清洗的层,那比如说我们可以用开源社区的组件,比如说或者说自己写的代码,比如Li,或者说或者说定一些Python码等,接下来他可能需要一个就是。看这些数据目标会到哪里,比如说下游的,比比如下游一些大大数据,分些组件,或者一些持久存储HDS,然后消或者下游一些消息队列等等,那这时候他会你会看这张图很复杂,所以它就出现一个问题,就是它的它的数据源和数字目标会非常多样,也会有非常多的那众多的一个开源组件的一个学习成本,然后整个数据链路搭建,搭建过程当中会很繁琐,另外一个重要问题就是在运维过程当中会特别复杂,如果需要维护整个链路的稳定性的话,它其实做需要做很多工作,它其实在企业不断上云的这个过程当中,它企业它需要是一个聚焦业务,降本增效,然后其实如果其实在整个客户诉求当中,它整个数据链路,它是需要比如说SS化,低代码化啊,简单应用,能稳定可靠,高高性能,按量按量付费等等,会简单,简单一句话总结就是说用户需要说这条链路更加可用,更加有高可用性,然后更加操作更加简单,不要投。
04:18
太多,人力成本怎么样?好的研发成本啊,最后最终达到一个降本增效效的一个一个效果吧,我们看一下,我们看一下这效果,这就是我们整个数据接入平台要做的事情,我们会希望把整条链路的中间层全部给。抹平掉变为更SAS的话,用户只要在控制台可以就可以操作,可以看监控,可以实时操作各种接入流出处理等等,这时候用户用户其屏蔽了底层的所有细节。对,这也是后面就相当于整个后面pass pass化,Pass化的一个一个趋势吧。那这时候我们会,我们这时候我们来给我们的数据接入平台DP下一个定义。数据接入平台它是腾讯云上一款saaras化的数据接入和处理的平台,它希望提供的是一个一件事的那个数据的接入和处理,还有分发的一些功能,它主要的主要几个功能,一个是提供会基于TCP和HTP协议的一个SDK,会协助用户去完成一些简单的数据上报,然后会基于HTTC的一个机制去订阅和查询,或者多款数据库的那种变更信息,也也会提供一些简单的数据清洗能力和一些下游的分发渠道,但它的核心能力在于数据的接入,它会把混把就公云、内空、合云、跨云的各个数据源,各种丰富的数据源,包括文件的存储,数据库等等的数据源全部接入到我们的中间缓冲层销对接当中,过来你们也可以可以看下右边这张图,它其实就是各个业务的数据,我们可以接到这里拿,再做分发,分发的意思就是说你可以拿这些数据去查。
05:56
存储也可以去计算,对,然后其实我们的核心核心诉求就是我们要希望可以协助客户去低成本的去搭建整条数据链路,然后去构建你数据源和数据处理当中的一些桥梁,对,然后简简单来讲就屏蔽整个链路的细节,对。
06:15
然后我们来看一下,就是首先我们讲div是什么,我们来看一下它和卡卡是什么关系,首先D它是由那个腾讯云上卡卡孵化出,孵化出的一个数据接入一个产品,它底层的话,它是基于卡夫卡connect和一个自研的接入分发层,然后的话。你可以理解为相当于卡卡。就是孵化出来一个上下游的一个产品,然后它俩的区别是什么?首先卡夫卡它是一个相应队列,它属于一个pass的存储产品,你可以理解卡就来存数据了,然后DP的话,数据接入平台,它是它会定位为一个存储层,比如MQ的上下游的数据连接,把数据接进来,然后把数据发出去,对,这就是它的一个,你可以理解为它是个计算产品,对它的主要竞品是的那个connect,对就是的,那connect在它在那个混合云跨里面,或者说与内连接或各个产品连接做的非常好,它也是一个它的一个核心的产品竞争力。然后的话,DP它只在去围绕这个MQ上面做连接,它本身不做存储,对,然后。
07:22
就让就希望能够更加SAS化去提供一件事的数据接入的一个数据链搭建的一个方案,然后他就我刚刚讲,我们希望得到一个达到一个效果,就是能够让用户低代码运维,然后再按量付费,然后无需关注扩扩缩容,对然后后续的话,在中间缓冲层我们会也会提供很多种很多种相队列协议的一个接入,对这个是TP和卡法的一个关系。然后其实我们来看一下它的优势,其实我们会总,就是我们会总结一下几个优势,就我刚刚提一直在强调就是我们希望希望希望提供是一个易用性,用户可以去很简单使用它,没有什么人力成本就能用,然后其实在易用性的成在用性之外,我们希望提供的是比如说弹性伸缩,用户不需要去关注底层数据的流量是否大小或怎么样,我们希望弹伸缩的基础上,我们提供按量计费,对给按需使用,不需要不需要为比如说波峰波谷准备太多资源,那当然在这两个基础功能基础之上,我们可能会提供一些高可用,安全性或实性的一些。
08:29
性一些特点吧,那最后一个就是说我们希望我们上下游的连接能够非常的完善,比如说我们已经现已经实现一个数据库文件MQ主动上报日志等一些大的五大类的种数据接入,然后的话就是也也和比如是很多个云云上产品进行打通,然后会已经实现了一个一站式的那个数据接入,对一个的优势,然后接下来呢,我们我希望我们来看一下,就是我们什么时候能够用到这款产品,对就什么时候能够用到它,它一般在什么地方可以用到,对。
09:06
嗯,首先来看第一个场景吧,首先我们来看数据上报,其实在作为一个研发,或者作为一个我们当我们有一个产品,做了一个一个新的产品出来以后,我们会我们会发现我们我们有个很很通用的功能,比如数据上报。就是说比如说我们的监控数据啊,用户的行为数据,然后APP操作操作数据等等需要在我们可能就需要将我们的数据统一上报到,统一上报到服务端,然后供业务进行查询,处理,分析,然后的话,这时候我们正常做法可以来看一下,就是我们会开发一个,我们这时候可能需要跟我们的研服务端的研发,说我们开发一个的一个端的一个接口,然后搭建我们这时候我们可能会买一个存储层。可能数据量比较大,我们会买个其队列,就数据量比较小,我可买个买直接把数据插进去,或买个ES直接转转DP就好了,然后这个客户端可能会就客户端需要按照S端的协议进行上报,那S端就可能就需要考虑编码性能,稳定性,扩缩容等一系列工作,那这时候你会发现我只是需要一个简单的数据上报功能,但是我要做这么多的工作,这这时候。
10:13
当我们的数据流量变得更大的时候,这些功能会直接线性放大,就可能你你当你这个业务非常重要,你又想做数据上报,那这时候数据上报是你的核心功能,你要拿这些数据去分析、推荐、计算等等。这时候你如果这块。接入层有问题,这时候就是会出现影响,影响到业务,对这时候这时候我们我们希望这时候我们如果当我们使用了那个数据接入平台以后,我们其实只要做两步,一个就是我们动创建一个。这时候第二步我们会创建一个topic。然后这时候我们就客户端就可以直接去写入数据,写入数据相当于相当于在客户看来,他只要在创建在服务端创建一个接入点,然后客户端就直接拿到SDK,把数据上报上来,看的数据自然而然就已经在卡卡topic里面可以拿到,这时候你再配一个数据的转出任务,这时候你你的数据可能就只会只会直接会进入到。
11:13
就直接直接进到H,直接直接进入到HDFS或直接直接进到等等,这就很非常方便,那这时候的话,我们提供了是有提供两种协议的SDK,一个比如说HTP的协议,一个是TP的协议,然后也支持把数据上报到各种各样交队列,然后我们也会屏HTP协议,它本身就会屏蔽各种复杂的这种相的复杂的SDK的使用,对,然后就相当于你现在做数据上报测事情就非常简单,非常省力。没有什么成本,你只要报直接存直接直接直接往下游走,直接查询对非常方便。这时候这时候我们来看第二个就是像数据库的变更信,变更信息订阅,那dip它是基于CDC的那个机制去订阅多款数据库的变更数据,比如说我们会定阅my circle的b mon DB全全券数据,S的行集的数据变更啊,Serve server的行集数据变更等等很多数据库基本我们覆盖了现在主流的所有数据库,比如说我刚刚讲my circle啊,PG circle啊,Mono啊,S server啊Oracle等这些都有。然后这时候我们一个场景是我们比如说在实际业务过程,使用过程当中,业务经常会需要订阅这些。
12:26
以my circle举例,它就会需要订阅到my circle b日志,获取到my my circlel的那个变变更信息,比如说insert。举个例子,就比如说什么时候这条数据插入了,什么时候这条数据被修改了,什么时候就要被删除了等等这些信息啊,并针对这些数据的操作进行一个业务逻辑的处理,比如查询啊,故障恢复啊,分析等等。其实在默认情况下,客户可能会需要说搭建一些CDC的定位组件,比如说。弗CC等来完成一些数据库的订阅,而在搭建的运维这些订阅组件的过程当中,他其实人力人力投入成本就非常高了,他首先他需要把它整条链路搭起来,搭起来以后呢,他需要去配搭建配套的金控体系,然后然后保证订阅的订阅组件稳定运行,然后这时候后期比如说要扩容。
13:13
然比如说机器替换,裁测等等,这些都是需要去去做的事情,那基于这种情况,DP呢,我们会提供一个SaaS化的一个数据库的变更订阅,通过界面化的配置完成整个数据订阅处理和转的整个过程,你们可以看一张图,它链路其就是我们会,我们会有个MY后,这个用户我们使用DP,我们底层会会通过我们CC阅机制把数据直接定阅到卡卡,他其实用户在用户的操作上来,他只需要建一条任务就可以了,他建完任务数据就进来了,这时候你就可以看监控,查数据等等,非常方便,到时候有兴趣的同学可以去体验一下。第然后第三个我们就数据的数据的清洗和分发,这里的关键词是清洗,还有分发。分清洗就简单的一贴了,就是说我们可能有的数据是A,有数据是A,然我们希望把它变成B,这种叫数据清洗。分发的话,可能就是说我们在消息队列有一份数据,有一份数据我希望既把它分发到ES,也也希望把它分发到cos,对,这时候我也希望我们的计算平台去计算,这叫分发。这时候简单数据处理,在我们在简单的数据群理,在之前自建的场景当中,就我们刚刚讲的,它就会比如说用户经常用,就用log logtoch对原始的日志进行格式化,分格式化,比如说分割,重新组,重新组合,类型转换等等这些操作,然后清洗完一个干念数据再存到下一游里面去,或第二种情况就是说客户可能会比如说用function啊,然后或者说自定义的自自定义的一些Python代码,或者说他们会去写一些flink代码去把这些数据。
14:51
拿到清洗往下去存。这时候其实。以log,以log为例就好。它需要去。
15:00
他需要去买三台,买台机器,买完机器以后,他需要把服务器起来,然后去跑,这时候他起来就需要他这时候就遇到一些比如说处理效率低。然后这个需要的成本较高啊,一些需要一些大量配置才能处理一些比较大量的数据呢,然后也经常遇到一些性能啊参数等等配置问题,导致它一些上下游的数据的堆积,对就这个问题,这时候我们希望我们在我们DP里面,我们希望提供的是一个产品化的一个界面配置,能够去低代码的实现数据的简单清洗和过滤,然后用户也不需要去关注过收容,然省去开源组件的一个学习成本,然后这时候也也也希望也可以屏蔽掉所有的一个运维成本。然也也有一些高警啊,监控能力在平台里面,然然后也我们后面后面后期也会咨询函数去清洗,对,所以希望就是我们整个留下来,我们我们希望给传达给客户的一个信息,就是我们希望是SAS化。低代码,然后无需的无需编码,然后界面界面完成一键化的配置,让用户的整个成本更低。
16:04
然后最后我们看还有一个场景是数据链路的搭建,其实在整个业务,整个业务处理的过程当中,业我们的用户经常需要很,就我们刚刚讲很很需要刚将刚很多种数据源的数据汇总到下一队列当中,比如说客户的客户端数据,然后这些数据它可能来源于不同的,比如说是腾讯的公务员。然后比如自建IDC,跨云和混合云等等的一些不同数据源,比如数据库,日志,应用系统等等的数据集,整个相息队列,然后这时候然然后这时候在再进行处理的分发,然后在实际业务的过程当中,整个业务它其实需要是首先它有,首先它是有数据的,它是有数据,它也要上报存储完,它其实是一样的一个效果,它是查询,那首先这流程就是分为数据源上报,然后。处理查询,然后再下游去处理分发,下游再查询或者怎么样,所以这是一条数据链路,你会发现这条链路就我们刚刚讲的非常长,然后按我们刚刚的那些流程,其实在整个DP里面,它可以很方便的去搭建。
17:10
在整个链路搭建过程当中,它其实的成本是什么?成本就是搭建,就创建两条任务。对的,就创建两条任务,后面的话,整个任务的运行状态,它其实是其实是完全透明的,比如说是全年度监控,比如说是数据审计等等,我们会提供这批的功能,保证整个数据在数据链路当中不丢,对,然后整,所以我们你会发现在这在这张图当中,整条链路的搭建成本,其实你可以理解为就是零,在客户层面看来就是零,在这零的基础上,你们又可以享受到一些服务,然后其实在在方便基础上,我们后面实我们提供是一个service的底层的一个机制,就是说我们会自动按量付费,对用户也不需要关注底层,这时候他如果这时候在用户看来如人工成本又省了,然后。这时候整个实际的投入,比如金钱的成本也省了,他其实整个链路搭建对客户其实是非非常有那种。
18:06
吸引力的,对,其实这是我们这是我们刚刚讲的四种场景,四种应用的场景,然后接下来我们来看一下我们整体的一个技术架构,对整个技术架构来看的话,它其实整个DP的数据架构,它其实分为两层,一个一层是数据面,一层是管控面,然后数据面的话,管控面首先呢,先看一下管控面,管控面它其实就是说完成一些比如资源管理,然后监控调度,然后自动库存,然后迁移等等一系列的一些管控的操作,对比如说监控采集,我要把整个各个任务,各个各个环节监控采集,然后去做第二个,比如说采集到监控,我们要去做告警,然后我们去创建任务等等这些控制面的一些事情,那其实我们整个DP的核心,它其实在数据层。在在数据面,整个数据面它其实他负责的,你会发现我们刚做很多事情,所以要负责数据,数据的接入,那数据怎么接入呢?他可能需要我们主动的去订阅这一种,另外一种我们可能要被动的去接收上接收上报,第三种我们可能需要去自建IDC,去混合云或者或者快云。
19:11
或者说公云内多种云的场景下去获取到数据,比如这时候涉及到网络管理,对,所以整个数据面它底层其实多个引擎在并同时运行的,然后它的实现功能你可以看从左到右来看一下,首先数据源。他们有各种各样的数据源,比如说这这可能你可以理解为一个MY,比如DBMQ,然这客户端可能就是一些主动的客户端,比如很理解我们安卓客户端,微信小程序等等等等数据上报,这时候它有两种,它目前目前来看主要两种接入层,接入层它是一个一个一个HTHTP的一个接入层,一个接入引擎,它是一个process,你可以理解它会会它会解析HTTP协议的一些内容和报文,然后把它数据往下游去传。另外一个就以collect source。
20:01
这种做的任务他会去,他可能他就会去订阅各种数据源的数据,把它往缓缓冲层里面去拉,然后缓存层的话,目前的话主要是一个卡卡,然后面的话也会有很多比如说像萨等等一些MQ的缓冲层,对,然后其实当我们有数据到这里的时候。我们可能这数据可能是很原始的数据,比如说客户端的一个HT叫HT那个那个HT信息啊,这信息就较复杂,你可能需要裁剪,然后转换,这我们这时就需要一个简单的处理,其实如果没有处处处理成,你直接把数据分到下游也可以,但是可能就会有一个一些成本的上升,比如说我上报的时候,或者十个数据有十行数据,我其实我只要留一行,这时候就可能你到下游可能可能如果直接往下游投,它的成本就比较高,如果是处理完再往下投,它成本就比较低,对所以这也是有一个简单理数据处理层的个一个一个原因,然后处理层它会提供了,比如说我们会数据转换,然后一些一些数据的卷,然后JA,然。
21:11
这些数据转换的一些操作,对,那这时候当我们数据处理完,它的数据分发,其实在你可以理解在每一层都是有一个组件或一个引擎的存在,接入层有接入层引擎,缓冲层有缓存存储层的一个一个引擎,然后数据处理也有一个转换的引擎,然后分发也有,它会负责分发到各各对层,对这时候它数据就会到目标。数据到目标里面去存,对,你会发现,这时候你们就会发现,我们会依托中间的缓冲层来做接入,做流出,对。这是我们整个的一个系统的一个架构图。嗯,首接下来我们来看一下我们底层的两个两两个引擎,对,首先我们来就是我们底层的一个核心的引擎,就是我们是基于整个卡夫卡的一个生态去做的这个数据的接入,它其实在卡夫卡原生社区里面,它具有connect的这个概念。
22:04
呢,他想做事情从广义上来讲,他就比较简单,他就是把数据各个数,各种不同数据源数据导进来,然后他提供是一种插件化的开发,开发方式就是说它会定义一套interface,一套一套接口,这时候这些接口呢,它这时候你你不同的插件,比如JDVC然MTTDB等等,这些他就会提供,他就会实现它的整个插件的协议,那这时候他就会负责去把数据从从原拉进来,你可以理解卡法卡它本身本身的部署,它其实是一个分布式的部署,你可以就是虽来说,你可以理解怎么简单理解为它是一个分布式任务管理器,一个简单的依托于卡夫卡的一个分布式的任务管理器,这时候你需要的是这时候不同的一些插件。比如说JJDBC的插件,它是以它是以它是以那种线程的方式运行在整个分布式任务引擎里面,比如说你当你创建任务的时候,你创建这个任务的时候,你会把它指定,比如三个密集度,这时候它会创创建三个线程,这三个线程它任务就会自动调度,调到集群,每每每个点里面去,每个每每台机上去,这时候这些机器呢,然后这然后这些机器呢就运行,对这时候think也实际上它基于刚刚那套机制,它就会可能支持很多这种插件,比如d FS base s3。
23:25
然后ES等等这些插件,所以这些插件它就会它运行在集群里面,然后也会自动调度,然后它会它会本身会注册很多T一些监控指标,那这个指标呢。它就会,这时候我们可能我们的我们的监控平台就会采集这个指标,那指标去,这时候这我们就会依托这个指标去告警,做监控,保证整个集群稳定,比如说呢,负载是不是到达了一个阈值,当前的资源是不是否需要扩容,对,然后当前是不是不是有任务,任务运行异常,对的,所以这是我们整个就是我们主要是完成数据订阅和接入和处理的一个引擎,这时候呢,你会发现它其实本质上就是一个分布式的一个任务管理器,它把一些任务的信你他它本身是把一些任务的任务的云数据信息存在一卡卡里面去,比如说像其他一些分布式的任务管理器,那可能就存在另外引擎或etcd ZK等等,它本身它因为它卡夫卡,它是一个卡卡区孵化出来一个一个一个一个连接引擎,对,所以它是设计,它是。
24:25
围绕卡卡在走的,对的,这是这是一个,这是我们主要的一个引擎,对。那第二个就是我们数据流的接入层,数据数据流接入数,数据流引擎接入层,从我们刚刚的图上来讲,我其实我们我们提供的是一个双引擎的概念,就是我们会提供一个,这是我们提供了一个一个数据的一个connect接入层,另外一个其实我们最主要就是我们HTP的接层。首先我们就会。整个接入层它是以基于它也它支持HTPS和HTPS的一个协议的接入,对它我们也提供了各个语言,各个语言丰富SDK,基本上你们所熟悉的语言都能都能够所熟悉人都有SDK去提供,这时候你们当客当客当我们的客户拿到这个SDK以后,他就会直接通过C比简单来讲你就一个对象send一下就好了,这时候包就会到服务端,服务端这里它主要是有几层,一个一个首先接收收接收层,但TP会把整个会会起很多接很我们其实它是一个分布式的,分布式部署,可以水平过容的,这后数据首先会到一个point,就整个接入层里面,这时候每个每个接入层,每个每台节点上都会去维护很多和底层的一个卡斯卡缓冲层的一个连接,连接池,在这个连接池里面,这时候它会它就会再再接收到以后我们会把整个数据会直接转发存储到我们的消息,消息缓冲层里面,你可以看这个这时候数据。
25:53
它是这么留的,对的,这时候在这种情况下,很多这种情况,其实我们从流程上来讲,它比较简单,但是它其实需要考虑的是很多事情的,比如说是不是有负载倾斜。
26:05
是不是有一些有一些请求,它是需要有一批独占的节点去维护的,这时候你就可能需要节点,它其实有角色的,相当于举个简单例子,可能我们的节点,可能我们三个节点,有两个节点是给专门的一个人用的,一个节点是给公共的一群流量比较小的用的,这以名相互影响,是不是不是分布式的接入等等这些,这这里面其实很多细节,环节特别多,这时候你是每个节点是不是维护所有的和底层的一些集群的一个联系,比如说客户端对的,那如果不是,那那这他怎么样保证谁的请求就只到某一台broke,对,其实这里面还有好多细节可以可以去聊,对。所以它本质来讲,它我们在这HTP接入层里面,我们做就是把数据接进来,做一个process,把数据导到导到消息队列里面去,然后中间我们可能会做很多这种高可用,然后自动恢复,自动扩收容的事情,来保证整个接入层的稳定性,对。
27:03
然后的话,然后的话整个CDC,这时候我们来看一下,就是我们刚刚会提到两个概念,一个就是CDC,一个是圈,就是我们的转换以擎,我们刚刚其实我们在上面我们把把数据数据的接入就是HTP,还有那个CONNECT2层给清楚了,那接下来其实有两个小细节,我们其实想跟大家一起讲一下的,就是一个就是CC,什么是c CDC change data capture,它的意思就是说,就是一个变更数据的一个阅,什么叫变更数据,其实这个CC的概念,它主要就是就是在那个,就是在那个数据库里面才有这个这个概念,大部分都在数据库里面,可以这么说,数据库就是比如买circle啊,P circle啊,啊,然后orac啊,S数据它有个概念,就是我们首先我们这些这些数据库,它是有一个in cid的insert insert update这些语义的,这时候当你有insert update时,就一定会触发一个事件。
28:04
这时候很多数据库的一个操作就是首先我有一个,比如说我有一个云色的操作,这时候我我首先先把数据云色的进去,然后之后我再下一条B,这时候如果像MYSQL它有主备这种概念的时候,他其实怎么做主备同步了,就是这时候客户他的备就会就会来来服务端把这条给拉回去,拿去这条那个日志给拉回去,然后去那个,然后去那个。执行这条数据吧,执执行这条circlel,所以这就这就是一个数据数,数据变更的一个定义,对,这时候在如果说我们不是MYSL被,而是我们是一个下游的服务,这时候我们希望能够实时的去拿到我们整个数据库的变更信息。举个简单例子,我们有个快递的客户。他他们做的消息是这样子,他们首先他们的客就是比如快递员下单的时候,他们是把数据结查到MYSQL了,这没错,但是这时候因为因为查询性能的查询性能的关系,因为他们的就是写入可能比较少,但查询非常非常大,这时候的话,他们他们做法是他们希望是希望是把白一些变更信息直接订阅到ES里面去。
29:14
所有的MYSQL变更信息,这时候他们某个业务系统就会去ES里面去查数据,这种他其实就需要说他把MYSQL里面所有变更信息很实时的去订阅到下游,这是CDC的概念,这时候呢,这时候在社区里面就刚刚讲了,就是我们会基于基于比如说。就是说比如说C机制来那卡提其实也提供类似的种C机制,所以说他们实现就是在买在原原数据库,它会生成1P的日志,一个的日志,这时候我们在开发整个引擎里面,它会去不断的它会去适配这个日拉取日志的一个协议,或者一个一个官方提供一个库,这时候就会拉上这些数据,然后把它拉拉存到存到存到我们存到我们的那个。
30:04
卡集群里面去,这时候再有一个分,比如说ES connect connect,然后比如说还有一些JP connect,它就把数据转换到ES或者下游的一些分析分。列列列存储引擎或者表格分存储引擎里面去,这时候其实这是CT,那另外一个就是一个就是说。我们刚才提到就是说我们有些很多数据转换的一个引擎,数据转换数据数据转换的引擎的话,它其实怎么说呢,它其实就是。他把一个原数据很简,就一个原数据A,把它转换为原数据B,这时候它一个转换,那转换其实我们刚才也讲了,它其实就是很多,比如写代码也好啊,福联卡都可以做,然其卡夫卡原生,因为卡卡原生也集成这部分功能,它它是提供了非常简单的一个语义,就是说它提供了很多小插件,你可以比如说你可以比如说我基于这个插件实现某个小类,这这个类就可以实现数据转换,比如说int int转train。
31:03
新的卷,然后时间转换,然后比如说比如说什么。比如比如说其实还有很多很多那种,比如map map转券都一样的这种类型的转换,还有比如字段裁剪啊,JA啊等很多很多操作都是的,所以说在卡也它,但是它这里卡不卡的,这个转换引擎和其他引擎的区别在于什么呢?区别在于它是一个非常轻量的,那轻量带来一个问题就是它的整个功能,它其实比不上那么丰富,也没有link那么灵活。对的,它的缺点就在这里,所以我们把它定义对,在我们数据处理里面,我们把它定义呢,其实就是一个简单的数据处理引擎,而不是一个丰富的全量的一个数据,数据处理的一个组件,我们希望满足了比如说基于基于我们的二八原则,然后我们其实想满足是那个八那个场景,其余的二我们我们希望能够交给flink或Spark这些来处理,而不是全部移在我们平台,因为卡法在官方里面,它提供了一个卡法的一个,你可以也理解为一个流了流流计量库,那这个库呢,它本身其实做的比较尴尬,它的问题在于。
32:18
他如果要做的跟flink Spark那么强大的话,他其实整个社区生态并不是那么成熟,那所以他他退而求机是做了一个非常简单的一个流计算的一个引擎,它其实可也你可以简单理解它就实现了弗Li那那个那个八。或者是那个七对,在这种情况下,他其实整个是,但是在这种情况下,其实很多客户,很多开发者他会觉得。Flink更强大,我可能就用flink了,会导致它其实整个社区的声音并不大,所以说我们对于这个的那个定义,它其实就是一个简单的数据处理转换,并不会提供非常复杂的,但是在我们实际的客户客户客客户使用过程当中,它其实就是一个。
33:01
蛮好用的一个东西,对怎么说呢,就是其很多客户并不需要那么多,那么多复杂东西,很其很多的业务场景其实偏简,偏比较简单的,简单的时候你其实我我只需要一个简单的功能,我要我要满足我的业务,我要我的时间直间可以更快,可以更有出,这时候他,这时候他选用选择引擎就是对的,对的,这是我们的初衷。然后其实讲完了整个整个技术原理以后,我们会发现,其实我们整个流程它其实就分为。你可以有四步吧,一个数据接入,数据处理,数据流出啊,所以应该是三步对,七步应该四步应中间还有一个数据卡不卡的一个缓冲层,对应该是四。数据接入,然后数据缓,数据缓冲,数据处理,数据分发四层,然后其实其实这里还有想给大家普及概念是什么?就是一个数据集成,什么叫数据集成?其实其实我们本身做的事情跟数据集成说像又像,说不像又不像,其实本身没有冲突了,数据集成的概念就是它会把上游的数据打到下游里面去,比要从A到B。
34:13
它中间没有缓冲层。怎么没有缓冲层是什么意义?念就是说我们现在是从A到卡卡再到B,然后他们做从A到B,那其实它满足了这这两种场景,满这两种满足是完全不同的场景,就在不同的客户,他就不不需要有不同的东西。举个例子,在数据集成里面,它更多有点有点像think这个这这部分的这个环节。很多数很多用户,他其实需要把ABC3个数据的数据源同时汇聚在一起再分发,这时候他就应该用我们的链路从数据源接入,先找个地方存一下,再往下要分发,这时候如果他是数据集成,他问他要的只是从A到B,举个简单的场景就是比如说举个例子,我们会去做健康码。我们健康码,这时候我们比如说我们有市级省级的健康码和去国国家级的健康码,这时候其实你会发现,其实我之前有个体验,就是我们我们我比如说在AA省做的健康码,在B省是查不到了,非常非常正常,到时候现在其实你会发现能查到了,他其实做的一个事情就是我们他会定时把A省的数据上报到。
35:18
国家里面去定时,所以这时候你可以理解就是数据集成,就是说它会定时的把数据从从A就从A拉到B,它中间不缓冲,就这个意思,所以说这你数据集成和我们DP所做整个数据接入和分发,它其实完全不同的东西,它满足的是各种不同用户场景,因为整现在整个it的生态,整个互联网生态业务它是非常复杂的,所以说它它并没有一个东西能够满足所有的这种场景。对的,就是没有,所以我们其实我们在做过,我们希望是做一个更丰富的,能够满足更多用户需求的一个东西,而不是说。做一个做一个,做一做一个,比如说做一个功能,比如数据集成,然后把它全部包进去就不对了,所以我们,所以我想表达就是说,其实这是两个概念,对数据接入跟数据集成它是两个完全不同的概念。
36:08
OK。其实这时候我们来看一下我们的客户案例,整个dip数据平台,它其实本身从上线到现在已经有接近有半有大概半年多的时间了,然后它其实也很很多这种我们的那种标杆客户,对我们来看一下,就是他们是怎么用这个东西了,从从技术上去看一下,他用这个能得到什么好处,能够避免什么问题,对首先我们来看一下,就数据上报,就我们的某个教育客户,他是直接将某客教育的客户,他需要将比如直播,直播课的一些上课的用户的一些其到信息,然后行为浏览信息等直接行为信息上报到后台进行分析,然后处理检索。这时候他其实并想报,报的不是这种12341次两次344次这种,他这不对,因为这种有很多人开源来这种那种什么一些data服务都可以,可以可以做大,就一些什么。
37:00
UV和PV的分析不是这种,他要的是他内容数据,比如说A用户,A用户里面内有一串内容,再有一串内容,一个大字串往上报,对这种是这种这种这种行为这种,这时候他后台主要有两种业务逻辑,一种是自定义代码,拿到用户的综合上报数据,然后对业务进行度这些进行逻辑处理,比如说举个例子,就推荐,对就推荐行为推荐。对,那第二种就是把这些数据拿到一些原始数据进到E进行检索分析,对。然后这时候他遇到问题是什么?就就是我们刚刚讲,在今年整个上报过程当中,它其实需要几个步骤,比如说我们搭建搭建存储,购买存储引擎啊,用来存储上报数据,因为怎么说就我们加入客户相比较大的客户,所以说他需要把这数数据肯定要缓冲,他不可能直接往下游的引擎去打,其对这就是整队列的作用,所以我可能这时候就要开发部署怎么接收,接收S端。然后整个整个搜端以后,然后要定义API运行服务,然后这时候这个客户端就要根据。根据协议去完成编码和数据上报,这时候你会发现因为客户的客户的开发人员人人力也比较有限,也希望能够一种方便的一个数据接入服务,然后也简单快速完成数据的上报存储等等,相当于怎么说用户就想说我这么一个功能,我希望能够中间入,能够把我的人力省下来。
38:18
不要让我们人力去做更有意义的事情,对,所以这所以所以说在第四步整个搜上的工作量是最大的,这都是需要考虑到在码路机的开发S本身扩容稳定性啊,本身的一些扩容稳定性,还有些存储的扩存稳定性等等,对所以说这时候这候我们就会当当他用这个的时候,就会他们架构,就是说他们的个安卓phone,还有那个客户端,就会直接我们SDK把数据上通过到里面去P,目前他们他目前的话中,它有两种,他既支持我们整个卡卡,既既怎么说他就可以去买一个卡卡的topic卡集群,然后选自己的topic他就要,这时候他就不需要为这个存储付费,这时候他如果他的量比较小,这种他不需要买整个集群,那就可以,只要买我们单个topic,我们就按量付费,对这种针对是是量比较小这种客户,对然后这时候再把数据分发一个性,他会把它我们再建一个性,然后把它存到ES,然后或者说他这时候第二部第二部分它就会自定义。
39:19
代码去把一些卡卡协议去把消费拉下来,对。所以你会发现整个我们这个客户弄完以后,他其实整个研发的成成本就省下来了,对没有什么工作量。当是这,嗯嗯,这是我们来看一下,第二个就是我们有我们有一个二手店某个诶这写错了,之前这个他就我们有某个资讯平台,它的服务是部署在T里面的,可以就是是通过T的那种采集器把就投递到云上的一个卡法里面去,然后那这些数据主要有三个用途,一部分就数据就要进,进入到ES来,进到house去,一部分去检索,一部分去分析,那也不有不用要需要消费,所以它数据到到里面来后,他最开始的方法是他要他就他就写他link代码,专门维护一套图ES to CS这种代码,然后在两个两套代码里面,他其实还要做清洗,做分发,这时候这时候你他会发现就是不Li整个维护就是他在学习成本和维护成本会较高,然后他希望能够省省掉这份成本,因他其实整个嗯。
40:26
他整个来看就是说他还他其实最早的最早没用fli,他用的是noch对他所以你会发现整个整整个数据分发处理的生态也非常多,这时候也会客户有遇到选型的问题。选型维护的问题等等,在最开始用的时候,他其实就是遇到学习就维护成本比较高,然后运维过程当中就到遇到很多性能稳定性扩的问题,这时候这时候在第二步他用弗Li的时候,他是聚在自定义编码代码的时候,投入人力很多,去年有需要其耗精力,Flink它本身是一个分布式的,他可能虽然说现在云上也有服务,但是很多分布式的服务他就去维护等等就很。
41:05
其实整个来讲,研发人很大,对这时候他如果用了,他用了我们这个数分发的功能,他其实直接把数简单处理,接分E,那其余就一部分只能用他们就就省了很多简单的事情,简单来聚。然后的话。嗯,OK,这是一个,然后其实接下来是一个讯销的公司,讯销公司其实就是我们刚刚讲那种场景,就是说我们某我们有一个销讯销客户,他其实内部有很多套系统在并行的运行,然后然后他那有一套模套,他有一其中一套有好多应该是也就几套,他其实就是存储引擎是那它其实需要将PPS的那个变更数据,然变更变更的数据存量加增量导入到ES去进行查询,但这不是很简单,这不是很不是非常简,这不是最最普通的那种查这种叫什么数据流转的一个需求,他其实很多很多独立的需求,举个例子,它数据上写到ES的时候,他需要去按时间分索引,第二个当因为某些数据量大的候,他希望能够在时间,因为它数量比较大,为了保证下游的存储成本较低,因为因为下游存储也是有成本的,而且还这时候他希望每一条数据它只保持最终碳成本的最终态绝。
42:27
推为一条数据,最开始A等于只有一个列,叫A等一,这是我希望它一直更新A等于二,A等于三,这时候我希望在下游只保存A等于三这条数据,对,就像在唯一标识去更新最新数据啊贝,这时候你就先条数据,就是保持保持保保保存最后一条对的,那这个时候这时候需要根据不同表数据分发到不同所里面去,你会发现这时候你会发现他这他们在最最最原始,他们在自建的时候,链路其实就是一个P加的那个P,再加一个卡卡加卡卡,你会发现整个电路其非常了。
43:04
之后你当发现用的时候,你会发现就是。它就是从它整个就是整个中间那个红色这块全部被替代了,这时候它其实要维护的是两个任务。对的,这时候我们后面也会推出一个数据编排任务,对,所以这从技术的角度上来讲,本身。你如果从研发层面来讲,我们要去维护。比如说这么多个组件要去学习这么多东西,它其实整个成本非常高的,对的。啊,最后一在我们再看一个就是我们那个就是我们我我们我我们有一个我们其实我们要做一个功能,其实我们在我们接层里面,它其实有额外的一个定义,额外的一个特特点吧,就可能附带的一个东西,就是说我们可我们整个接入层,它是可以支持通过HTPTP协议接入各种MQ了,就是我们有一个保险客户团队,某个保险客户,那整个整个中台中台要签约上云,那他们使用很多种MQ,很多种很很多很多种MQ,这时候他跟MQTP协议来接入了,然你你你大概大概也懂,就是如果是那种MQ的SDK的话,他其实就。
44:12
每个MQ各自SDK有各自成本,又很复杂,然后很这时候他们就希望能够上后能够通过一个统一的一个协议去接入,去屏蔽底层的一些MQ的那种屏蔽底层具体的引擎的细节对他们有三个要求,一个就是简化端使用,最好能够选P协议。那底层MQ切换的时候,对上层不感知啊,就要有现成的支持HTPSDK刚好其实我们这些都满足了之后,你会发现,如果我们当用户使用这个以后,它其实底层的引擎它都是直接去可以直用的。啊,最后我们当最后我们来看一个就是就是我们最近接的一个客户,他就是一个内部内部视频客户,他的他的就是说他一个事情就是数据,就现在整个数据的整个概念,整个概念,整个概念它其实非常就近,如火如荼啊,整个社区它也非常多,很多也发展非常好,整个数据库的概念,对所以说你们文内部客,它其实主主要两部分数据,一部分是那个,它大部分存在蒙里面,蒙里面那有部分有部分客户行为数据,它需要经过上后进行分析。
45:21
那用户希望希望是。希望将这些数据能够统一到数据库里面进行分析,就是能做到实时的数据入库,实时的数据入从其实从数据库概念,它有两个概念,一个叫离线,一个离线的数据入库和一个实时的数据入库,离线的话它是什么概念?就是说我们可能会上报一批数据,那可能会存到某个。文件里面去,然后这时候我们的再去把这个文件漏了出来,比如说他文件存在一个HDFS。谷歌,谷歌的GFS等等,或者说是我们自腾讯云上的cos等等,这个它是离线的,实这时候。
46:00
我们来看这个,我们来看整条链路,它其实整个它这时候它需需要就是蒙果的数据订阅,数据变更,插入这些数据要及时订阅,那这时候APP上报数据,这你会发现它的整个一,我们现在整个的一数据库的数据的一键入方案,它其实整个用到了是整个DP的所有的功能。包括接入层缓冲、数据处理分发。只后到到cos到数数据的实施的D分析,对,所以他其实他其实遇到问题我们刚刚讲的非常多,其实就是链路太长啊,设计非常多啊,大多数间可以分布式部署啊,或者说是复杂等等,那整个链路稳定性,透明性,透明监控,需要花花费很大精力,对使用DP以后,它整个需要简单配置SS化,整个链路的稳定性或总一托平台处理等等,这些事情是可以已经搞定的,所以其实我们跟数据提供了一个联合解决方案,就是一键的数据入户对了。所以基本上到这里到这里我们已经我们已经把本本次本次分享内容讲完了,那他其实。
47:01
这是因为这是本次直播的第一期,对本次直播第一期的话,他。我们想给大家传达,就是说我们想想去跟大家说明说我们的数据结构平台它是做什么的,它能够打造什么,在什么场景下能用,之后它底层的架构是什么样子的,他有他他是怎么做这些事情。对,然后接下来在这第一期基础上,我们后面会详细去讲解底层各个组件的原理,还有社区的生态觉姐那里,它其实现在很多在整个社区里面有很多的这种数据集成的开源开源的软件。对吧,比如说我们最近腾讯腾腾,腾讯开阿帕奇农对吧,那还有弗link弗Li弗link connect萨connect那个法可能可等等,它非常多,这时候我们其实我们遇到是一个选型的问题,其实其实这时候我们可能接下来我们会对比各种引擎的。同异同点和优势和劣势,然后再来再来看一下我们底,再来跟大家分享一下我们底层的实现,让大家可以透明的话去了解这款产品,了解它底层的实现等等这些东西,到时候我们可以在我们后期后下面几期那种直播里面去跟大家去分享一下这块内容,对好了,今天那我感觉今天的就差不多,那要不可能看应该有没有什么问题,如果没什么问题的话,我们可能就先这样子。
48:36
OK,那我们今天就先这样子,嗯,那那如果有感兴趣的同学可以关注一下我们。腾讯中间的公众号,然后我们后也有,我们也有内部的一些群,一些交流群,可以拉大家一起分享,可以大家一起关注交流,交流一些比如说卡或M或入社。
49:02
那我们今天就先到这里,嗯,谢谢大家。
我来说两句