2024年Python最全手把手教你打造一个企业级实时数据中台【万字图文】(1)

  1. 上述两个问题形成大量的数据孤岛,所带来的的对应的问题主要有(数据孤岛带来的影响严重阻碍了新业务对已有数据的重复利用):

①需要大量时间对接和同步;

②用户体验下降,数据不完整不实时;

③重复建设,复用率低等。

第二部分——各种解决方案的分析

=============================================================================

在这里插入图片描述

为了解决数据孤岛的问题, 目前的解决方案:

有应用层面 ESB 企业总线、MQ等;从存储角度来说,有数仓Teradata,Greenplum,以及数据湖。这些方案都可以在一定层面上解决问题,但是存在局限性:

首先,这些方案都是面向分析场景,对于数据抽取不及时,多数是 T+1 方式,也就是说业务获取的数据,是系统昨天生产出来的。这些数据在数仓及数据湖中处理形成了大量报表及结果数据,通过下载、导出等方式进行交付,形式粗放。所有目前市面上的大数据平台,大部分的场景是偏重于分析,主要用于做BI,做报表、Dashboard,来对企业的运营和客户有所洞察。

在这里插入图片描述

而对于企业运营来说,关键的、核心的能力不是后端的分析,而是在前端与客户交互,与业务交互,与流程交互。

基于上述情况,数据中台应运而生。

第三部分——优胜劣汰留下唯一解决方案->数据中台

======================================================================================

以打通部门或数据孤岛的统一数据平台为基础,构建统一数据资产体系,并以API服务方式为全渠道业务(分析 + 应用)提供即时交付能力的企业级数据架构。

在这里插入图片描述

  • 首先,统一数据平台。

数据中台也是一个数据统一的平台,它不会取代原来的系统,而是把原来组织中分散在各系统中的数据实时地汇聚到统一平台之中。

  • 其次,数据资产体系建立。

与数仓及其它大数据平台不同的是,汇聚统一之后,做数据资产体系规划。对数据打标签,组织目录和结构,便于发现和使用。

  • 最后,提供数据服务。

以API的标准接口方式向前端的业务场景,或分析场景提供服务。而不是通过传统的SQL,或者是dump的方式来导出数据。我们称之为DaaS(Data as a Service),数据即服务。

构建企业数据中台,所支撑的场景不仅仅是分析(如可视化分析,数据发现,数据报表等等),也包括满足各种前端业务应用对数据的需求,如CRM、BPM、SCM、MES等。所以这里提供的数据服务是全渠道业务,而不是传统数仓做的BI类似的工作。更多前端业务应用如掌上商城、手机银行、保单管理、客户360、统一订单、销售大屏等。汇聚在中台的数据可以直接推到手机、App等各类前端,并且是实时的,交互的数据。

这些都是传统数仓这样的平台所无法比拟的。

以下是金融企业的数据中台架构参考(银行业):

  • 最低下蓝色是EDW、Hadoop、DB2、Oracle等是已有的各类系统的数据源。

  • 通过CDC、批量导入、API集成等方式把数据汇聚到中台。

  • 在中台里面进行资料的建模和分类,比如按照客户、账户、交易等纬度。

  • 然后以API方式交付到他们的各个业务中心。

  • 最后做成各种业务开发,如金融商城,手机App,社交系统等。

在这里插入图片描述

在没有数据中台的时候。实现这些前端场景需要各个业务中心找每一个需要用到的数据中心去协商,前端业务直接连到后台的核心系统。因此而产生两个问题:

  1. 当数据量上来时,如做促销活动,核心系统DB2,Oracle等跟不上。

  2. 当有业务中心有新的需求产生,对数据模型要改变的时候,核心系统很难支撑。

当企业有了可以灵活组织新的业务模型的数据中台,才可能真正快速地响应前端的业务需要。

在上图的右上角,可以看到数据中台依旧可以支持一些分析的场景。

当然,这样的数据中台必须具备数据的治理能力,如质量,编目,建模等等。

所以数据中台的主要价值在于,数据的协同效率、复用效率和交付速度。原各个系统中的数据不再各自为政,而协同到一起效率提高很多。同样,一份数据可以给多个业务场景使用,而不再需要 ETL 到不同的系统,还要去维护它们的一致性,去掉重复,或防止遗失。最大的价值更在于,加快数据的交付速度。

(1)技术需求:


我们讲完了这个中台的一个架构和它的逻辑模型,如果我们要来考虑实施数据中台有哪些技术模块要考量。还回到刚才那张图,首先中台必须是基于一个数据统一平台的,那数据统一的时候,其实刚才没有讲到的,还需要把数据同步和汇聚过来。所以有一部分的工作你是少不了的,如果你没有做过这种中台甚至统一平台的话,你必须有一个ETL平台来把你的来自各个来源的数据抽取过来,抽到你的数据统一平台上。

数据统一平台你用什么样的解决方案?那是另外一个问题,回头我们会讨论。那进到里面了以后,我们在上面才构建我们的资产体系,这个是需要用到中台相应的一些比如数据治理的模块能力来做这个事情。那最上面层就是一套服务化能力,要把它做成API server 的方式,把这个数据快速的可以交付出去。

基于上述对于数据中台的理解和定义,我们列出了数据中台所应该具备的技术需求。主要是分为:数据存储系统、数据同步汇聚工具、数据治理和开发、数据交换和发布、数据管理能力五大模块。

如下表:

在这里插入图片描述

在这里插入图片描述

  • 我按照各每个系统大概列了一些数据中台比较核心需要的能力,当大家在采用某一种系统的时候,某一种方案的时候,可以对照一下。也不是每一个你们都会关注,但是这是从我们经验中经常用得到的。比如作为数据平台存储系统的话,你第一个肯定是要横向扩展。为什么?你做的是一个企业级的数据平台,你要把所有的原系统有可能真的做到其极致的话,可能全部把他拿过来,所以你必须得有一个横向扩展能力。不能想今天我的数据这个数据在MySQL可以放得下了,或者是一个Oracle可以放得下了,但你要考虑到明年、后年,甚至是三年、五年以后,因为这个架构放上去以后是一时半会不会动的,那灵活的数据模型,这些也是我们的经验,我们要这个是做一个数据汇聚。往往你的一套同一个客户系统,同一个客户模型会来自于多个不同的系统。这个时候,你有一种灵活的模型和相对的一种比较死板模型的话,你会发现这种灵活模型会比较容易的把数据整合进来,能够接受不同的一些字段的变化,也可以方便的把它合并到一个模式里面。

  • 高并发低延迟就是我们这个中台最终不仅仅是支撑分析,还要支撑前面的业务,所以必须得有这种潜在的直接穿透到前端,例如我们的移动端用户,或者会有大量的这种高并发。作为这个核心数据,高可用、备份、安全都是不用说的了。这是关于存储系统数据平台的一些最基本的一些要素,所以大家考虑的时候,可以从这方面来想这个问题。

  • 其他还有涉及到就是同步工具。批量导入能否实时同步?批量导入一般都有,但是能够实时同步,比如说因为我们要做的事情真的是比如说我们在一家银行做的需要这边刷卡,刷完卡,这个数据在三秒之内直接要进到我们的中台里面,因为上面有一些业务场景会给予中台来做一些推送。所以这个时候实时同步的能力是非常关键的,然后还有一些断点续传或者是所有的数据源的支持,这个就是比较常见的这种同步工具的一些需求了。

  • 治理开发就是我们刚才讲的很多就是说怎么样之间数据体系,你必须得有一系列的能力。数据目录、原数据管理、建模、开发、质量管理等等,匹配去重都是,需要在考察的时候,看他们中台有没有这个能力来做这些事情。

  • 数据交换的发布就是我们的data API。我们说这是一个数据开发平台,我们面对的使用者,比如大数据团队也好,或者数据管理团队也好或者DBA也好,往往不会是开发人员来做这事情。这更像是一个比较中央化的数据平台团队,所以他们关注的可能是一些管理能力,无代码能力就不用让他们写很多代码,所以这个API能否很方便、很快速地按照需求来接通到为前端做服务,这是很关键的。当然,接口的多样性也是非常关键。SQL方式,大数据、流数据,这些接口都按照我们的需求考虑是否需要。

  • 最后一点就是系统管理能力,就是常见的就是这种可视化。因为这里面做很多的事情要有一些相应的任务管理、任务设计、监控、告警啊等等,权限管理,一般的系统都会有这种需求。

(2)技术选型:


常见搭建数据中台的技术产品!

数据中台包括:统一数据平台,数据同步,数据治理,数据服务四大部分。

下表列出了这四大部分中相应的技术产品,有同步汇聚工具、有数据治理、还有数据服务。

在这里插入图片描述

  • 数据平台最常见的是以 Hadoop 大数据为基础的。在最近十年,有很多家公司投入很多来做这个事情,把数据已经收集到中央化的一个 datalake 里面,那这个就是个很好的起点。其他的还有用数仓来做的,用 Teradata 或者是 Oracle, Gleenplum,MySQL Cluster,MongoDB,国内的话,有星环或者一些大数据公司。有一些特殊的场景,有人会用一些其它产品,比如说 ElasticSearch 会用来做一些全文搜索,但往往那个只是配合,他不会整体的放在这上面。

  • 同步工具就很多,有开源的,有商用的。开源的话,比如有 Kafka、Kettle, Spark ETL 、Talend,商用的的话要有 Informatica、Golden Gate,包括我们 Tapdata 也提供这种类似的数据同步工具。

  • 治理方面比较做的比较好的可能是开源的话,有 Apache Atlas,那如果是开源商用的话 Informatica 应该是最老牌的,Erwin 这些都是比较经典的这种数据治理的公司,可以配合这些产品来把中台里面数据进行编目和治理管理,Oracle 也有相应的产品。

  • 数据服务就是涉及到API。我们见的最多的可能还是大家用 spring 来搭建一个 API 框架,或者有一些比较现成的 API 机,像 Kong 比较流行。Kafka 是提供一种流式数据的服务,可以做 streaming,Loopback也是可以用 nodejs 的方式来提供 API。Mulesoft 和 CA 都是一个非常成熟的 API 产品,当然他们的价格也不便宜。

  • 他们的优势是他会给你一套整体的 API。不仅仅是服务方案,还有管理方案,他的监控、安全、认证、鉴权,然后把你所有的不管是 data API也好,你的业务API也好,都有个统一的管理界面和一个 gateway的方式来帮他做好。

  • 这里面大家可以看到有非常非常多的选择。如果咱们已经有的话,基本上是用已有的工具,如果没有的话就可能要好好的来看一下看看哪些厂商,或者是一些共享的方案。下边我们也会分享一个方案,可以参考一下来一个快速的选型。

(3)数据平台产品分类:


对数据平台比较关注的来看一下数据平台产品分类。

  1. 数据平台的这种产品从90年代开始,从关系型数据库到21世纪的数仓MPP,到后来的大数据,到现在的很多的NoSQL,NewSQL,有非常多的种类。他们都有什么样的特色呢?是否合适来做数据中台的一个存储呢?

在这里插入图片描述

  1. 数据统一平台的特点对比:

在这里插入图片描述

  1. 数据统一平台选项参考:

这里简单来看一下,如果是做数据统一平台选型参考的话,从它的海量数据能力,响应时间和并发能力和他支持多结构数据的能力上,我的个人见解。比如说我们说的现在的NewSQL的吧,他就是对多结构数据支持不是特别的理想。包括RDBMS、MPP也都是这样,那这个时候大家可以考虑一下用哪种方式。这取决于你的场景,MongoDB确实他有他自己的一些弱点,比如做多表关联的时候其实并不是他的优势,我们会建议尽可能避免这种多表关联的场景。但是如果你真的是避免不了的话,那他可能就不是一个很好的选择。

在这里插入图片描述

  1. 选型建议:

在这里插入图片描述

这里是我的一些小小的选型建议,从我个人的出发点,按照我的自己的跟客户的一些交流的经验看了他们的一些情况,然后也是经过一些项目的实施,就是提供的一些情况,然后也是经过一些项目的构实施提供的一些建议。

  • 如果你已经有Hadoop或者数仓的统一平台,我们很多的头部企业,大型企业都是已经有的,这个时候你是不希望从头开始构建一套新的什么所谓的中台架构。你基本上可以基于这个基础之上,配合他的数据治理,把它打造成一个数据资产体系,然后加上他的Data API。对于这种情况,我们刚才看到的很多的已有的数据中台的解决商,他都是基于这种大数据的方案来做的,所以他们的一些能力。往往是已经跟你Hadoop Hive之类的或者数仓呀做比较好的结合,那些同步工具,ETL工具都是有比较不错的结合了,你就可以在这个基础上只是用它的理念来构建。

  • 如果你还没有数据统一平台,没有数仓,没有这个Hadoop之类的话,这个时候我们觉得可以考虑一下,就是我们推荐的这种MongoDB的方案,会非常理想,因为我们相对来说是比较简单一些。起步会快,假设真的不行,你也可以很快就见效,我们叫做非常 fail fast,错就错的快一点,不要花很长的时间才发现不行,那如果你还没开始构建的话,一步到位就可以拿到。因为我们刚才讲的MongoDB在数据平台上是有很大的优势的。如果是Hadoop的话,最近几家合作的海外的那几家都三家只剩下了一家Cloudera,其他两家都已经被收掉了或者被合并了,这也是因为它的本身有很大的局限性,很复杂很难用,投入很大,收效比较小。

  • 如果你的中台主要目的想支撑前端交互式应用。那MongoDB是最理想的,因为我们的特点就是高并发、低延迟、横向扩展。然后非常面向开发,非常面向JSON API,这是非常理想的。那Hadoop的话,他一开始大数据都是以分析为主的,不是为前端为主的。

  • 反过来,如果你的中台数据目前你看不到有什么前端的业务场景会来使用。最主要的还是解决这个数据统一。而且你觉得有很多复杂的表。要做很复杂关联,这个时候一下子把它合并到一个JSON里面是几个JSON里面是比较麻烦的,那可能是MongoDB的适用度就一般了。那反而是那些基于传统的数仓的,那个会比较做的会比较好一点,相对来说是功能上比较完善一点。

  • 如果你是比较喜欢有些比较快速,能够比较轻一点的,比较简单一点的。下载下来就可以安装可就可以跑起来,那我们Tapdata这种方案会比较轻便一点。

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值