CSDN:普元CTO焦烈焱:大数据时代的企业业务系统3.0


 2015-12-17 14:22:26       754

【CSDN现场报道】2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,以“数据安全、深度分析、行业应用”为主题的 2015中国大数据技术大会 (Big Data Technology Conference 2015,BDTC 2015)在北京新云南皇冠假日酒店盛大开幕。

2015中国大数据 技术大会首日全体会议中,普元信息技术股份有限公司CTO焦烈焱在《大数据时代的企业业务系统3.0》主题演讲中表示大数据上升为企业业务系统3.0 的核心要素,并提出了大数据发展促使下,企业的业务架构应做出怎样改变。为此,普元提出了Reactive架构风格的新一代架构。基于Reactive架构分布式的数据采集、基于Reactive架构分布式的数据处理、基于缺失数据的海量数据质量治理、动态脱敏与静态脱敏、大数据中的元数据技术是该架构的技术亮点。

普元信息技术股份有限公司CTO 焦烈焱

以下为演讲实录

焦烈焱:尊敬的各位来宾,大家下午好,非常高兴有这个机会能跟大家分享一下未来企业的业务架构,在大数据发展情况下到底有什么样的改变。首先我把我的公司简单介绍一下,我看到很多朋友会说这个公司是做大数据的吗,跟做大数据有什么关系,我们成立十多年来我们一直是面向企业的OLTP的应用,从2010年开始我们发现其实企业的应用发生了很大的改变,尤其是在物联网、大数据的情况下,其实已经很难说得清楚这样的应用到底是大数据的应用还是传统的OLTP应用,我希望通过我们的分享,希望跟大家交流,在这样的一些应用里面,它的基础架构会有什么样的改变,我们这样的实践怎么样一步一步走到今天,都做了哪些工作,我们比较擅长应该在数据的采集和处理,以及数据治理方面,我今天的分享主要集中在这方面。

大数据的发展,促使传统企业业务架构进行相应改变

在这个分享之前我想看看为什么讲以前OLTP的系统,他有这样的变化,这是我截的一张图,未来是数字化的时代,整个IT数字化的转型,什么是数字化,我们怎么理解数字化,是把事情、人、商业所有的东西商业化,我们理解人的数字化是什么,我们在IT系统里面有人名、电话等等这些东西,整个实际上变成了一个数字化的过程,物体的数字化其实比较容易理解,我们通过物联网的应用,刚才孙少陵讲工业大数据的应用,高文院士讲到监控设备等等数据,这些数据其实是把我们这样一些物体更多的数字化,今天就会讲一个案例,我们在智能电网的案例讲数字,它跟怎么处理。商业的数字化其实我们更好理解一些举个例子,现在做一些海关的跨境电商的要求,我也很奇怪,我本来不是做互联网的,为什么到了双十一也要值班,因为很多库里面存了很多双十一下单之后批量到海关,然后去过关,这其实就是商业的数字化,把这样数字化海关、支付公司、货运公司等等,整个串接到一起,我们整个IT通过数字化支撑我们已知的客户和未知的客户,支撑他们更好的体验,我们做了商品的推销,物体的数字化做了什么,我们如果做了跨境电商的商业数字化,我们是不是让海淘的周期更短,我们整个应用都发生了变化,我们发现以前做OLTP的人必须要做这样的数据应用。

这样的应用有下面两种情况,一种情况是我的系统其实就有很多大的数据,另外一种情况是我还像一个传统企业,或者说传统的数据仓库加上新一代的基于Hoddp的数据仓库,在这些数据之外有这样一些应用,不管哪种情况,其实都脱不开下面的处理模式,我举了一个例子,这里就是现在做的一些智能电网的例子,这个例子大家更容易理解,是有关传统应用如何改变的。

第一个例子里您会发现,以前做这样系统的人,他都是做营销系统的人,但是现在这个系统变成智能电表,你需要15分钟一采,是因为现在还存不下这么多的数据,所以才定的这样的标准,如果想采的更密集,还是很容易的。在这样的系统下大家都知道以前抄表都是一个月一抄,现在用智能电表的方式,用这样的方式15分钟一采后发现整个数据量增加了,一个省增加几十G的数据,数据不是非常大,但是在数据下整个原来应用的架构就会发生非常大的改变,你发现这样的数据第一个麻烦要支持大概五千万的终端,把这些数据采上来,终端不是你想采就采上来的,这样的终端在刮风下雨情况下它的可能性是80%到90%的水平,这个时候你的数据质量怎么保证,第二在这样终端多的情况下,你用多少台机器采集下来。第三个你采集下来之后怎么样把数据存下来,第四这些数据存下来之后还要给下游的系统、合作伙伴应用,比如这些应用里面会做一些反窃电的应用,还有电网优化的应用,深圳有一个报道说,现在发现每个人都可以申请我们家里面装一个太阳能板也能上网,是智能电网发生变化以后他的大数据应用在他的系统里面产生的一个非常重要的作用,在这样一个作用下面我们必须有分布式架构的优化,有这样数字架构的优化,有数字价值的提升,我们需要考虑这样一些问题,这些问题会引起整个应用架构发生很大变化,今天我更多想说的,在应用架构变化的时候,我们用什么样的技术和模式来解决这些问题,我们在数据管道的处理大数据,无非最开始是数据的采集,然后数据质量的处理,数据整合,做一些挖掘分析机器学习等等这些能力,最后把数据开放出去,开放出去的数据可能给智能决策产生作用,在这个地方我相信大家的整个架构都会类似这样的过程,下面我们有一个数据治理贯穿整个数据处理的过程。

采用Reactive架构风格新一代架构

今天可能主要讲的是前面后面和下面,因为我对机器学习不太擅长,主要是关于并行处理架构怎样把这些数据采进来发出去,然后怎么样管好,在这样的架构里面我们是用Reactive的架构风格,我们为什么说是一个架构风格,不是说一个具体的架构怎么用,我们在团队设计的时候我们会按架构风格来看设计,是否满足四个方面的要求,我们设计的时候大家都会说有单点故障,不可以存在单点故障,这个架构风格也是这样,我们分成四个方面去看我们的系统是不是满足这几样的条件,第一个比较简单,最下面的几个,事件的驱动,是用一个消息的模式,你分析消息头,消息底,在消息上面有你处理的逻辑、状态等等,通过消息的驱动再往下走。如果说分布式可靠性,我觉得更麻烦的在于你是一个完全异步处理方式,你要去做一个调用,阻塞等待,如果有这样的模式,我们认为在系统设计的某个点是失败的,甚至你的业务都会按照异步处理的逻辑做,这样说起来比较简单一些,但是处理起来,设计起来跟我们普通的设计有一定的差别。我们要把这个观念或者脑子里这样的理念需要一个很大的转变,比如消息处理以后回来怎么办怎么样回到原来的处理点,初始怎么样等等这样的问题。

第三个是处理隔离的问题,任何一个处理单元如果出现了故障以后不应该有一些影响,不应该影响到别人,你怎么样把你处理的逻辑单元隔离开,这是第三个条件。第四个就是,任何一个处理单元在一定的时间内一定给我应答,我可能做一个事情之后可能超时了,超时了就要给应答,不能说这个事情我没有做完,这是这四个条件,我们会看所有的设计里面,是不是在任何一个点都会满足这样一个条件。在满足这样条件下再看刚才举的例子,在这个采集里面到底怎么做,我们这么大量的采集,首先实际上我做一个分层的处理,其实是隔离的,不是从头做到尾,是一步一步的做下来,这样可以把计算的能力做分散,可以尽量保证尽可能多接进来的通讯连接,然后这些处理连接的资源不会在做后面的处理解析等等的工作,如果处理解析的工作比较慢或者比较耗资源,可以用分布式的方式增加这样的资源,增加处理能力,在这样的模式下你会发现我们还要用一些缓存的技术,用这样的技术更能减轻一些系统的压力,这是整个处理链条。在这样的处理链条下面,对资源的控制,对处理器的控制实际上是一个平衡,第一点先实现这个之后,我们就具备了一个非常容易进行调度处理的基础,然后在这样一个基础下,我们后面所有的事情怎么样去采集怎么处理,怎么样分发,都是基于这样一个架构来做的。如果这个架构做成编程模型的话,很简单,任何一个消息都有一个消息处理器,这个里面是多进程的处理,每一个处理器有一个队列,处理完了以后抛到下一个队列里去,这个做法我们比较传统一些,我们是基于Java模式的做,如果做的话可能是基于Spark可能更容易一些。所以有了这样一个结构不是说我们的逻辑变成简单了,再处理逻辑里变成了更复杂的模式,你在处理的时候,这么复杂的东西到底应该怎么管,代码怎么写,有一个客户每天晚上在处理这样的逻辑至少有几万个,二十万个调度作业,在这样的作业下都用这样的模式做,肯定是不行的,在这个里面处理模式是要把资源调度处理的模式和数据处理的模式做这样一个抽象。在这样的抽象下可能有批量的模式的处理,也可能有流式的模式处理,过去处理相对来说相对简单一些,不会让每个人写ETL的处理作业,把这些模式抽出来,在大数据时代一样有这样的模式抽出来,以前我们做的时候都有一个VIP通道,让数据处理最快的达到某一个地方去,现在怎么做的呢,不是一个简单的VIP通道,而是说我会根据源数据的定义看你最后处理的这样一个重点到底谁的优先级高,把整个结点回溯下来看到底这几万个作业里面哪个作业早,哪个作业应该分配更多的优先级,这个作业里面我们给作业处理模式,有的作业处理里就是做一个增量的导入,这样增量的导入逻辑实际上不需要每个人开发这个逻辑,是配一下,实际上逻辑基本上能够生成。有了这样一点可以让整个数据处理开发维护的工作量会降的非常低,但是我们解决了这个问题之后,我们又遇到了一个新的问题就是数据质量的问题,我们在做大数据的时候,我会发现数据质量是很头疼的问题,在数据质量处理的时候我们虽然用大数据做一些趋势性的预测,可能我们不需要特别准,特别高的数据质量,但是当我们把数据集中起来做一些应用的时候,数据质量又非常关键,拿我刚才说的例子来说,采集的时候刮风下雨采集率只有80%多,这个时候怎么办,一个做法是我每次采集的时候只要发现采集不准的时候,我都回调再要一次,能要几次,其实还是不准。另外一个麻烦是数据质量检查处理实际上没有办法限行增加,或者限性扩展,第一我们做了一个缺失数据的处理,说的简单一点这种数据质量的采样是一个批量的进行采样,而不是说进行一个全量的处理,我会根据一些机器学习的历史分析我知道什么样的情况下我的采样点长一些,什么样的时间下采样点短一些,如果我发现数据质量不好,可能我对这批的数据进行检查,来解决我在数据采集处理的时候根本没有办法进行所有数据质量的检查。我们做了另外一个事情也是举采集的例子比较好,一采基本上是两百多个指标,这些指标根本不需要所有的东西都能采过来,但是这些指标在下面的应用里面还会用到,我会根据一些历史数据做一些数据的补齐,根据以前行业的经验,或者这个系统的经验,如果这个数据真没有采上来,我其实给你做了一个模拟的补齐,我会告诉你这批数据质量不好,有些是我做补齐的,如果你做一些数据分析的时候,这个东西其实问题不大,你做一些反切点的分析,问题不大,这就需要指标,需要对你的数据标准有一些定义,某些指标联动性高,有些指标完全可以用这样的方式去补齐而不影响它未来的分析,我们在数据质量上要做的一番工作,做了数据质量之后我们又到了一些新的问题,我们发现我把数据已经准备好了,我要向第三方开放,我下游有几十个系统,有内部和外部的客户,自己内部的客户也会分同部门的非部门的,这个数据怎么给别人用,现在做了一些动态的脱敏方式,就是透过散发把数据进行改变,为什么要做动态的脱敏,我们一开始做的时候就是调度的并行处理的能力要强,所以我的动态脱敏是横向伸缩能够做到的,现在做一些什么事情,这个事情确实比较难,是不是能做一些对等的同态的加密,这个我们在研究不敢说这个地方一定能取得很大的成果,什么概念呢,你会发现我数据开放的时候有些人说我不想把算法给你,有的不想把数据给你,怎么办,我举一个简单的例子,如果我给你一批数据,这批数据你只想救平均值,我完全可以把这批数据打乱掉,但是所有的数据你拿过去没有用,这个是很难的事情,理论界也是十几年前有了这么一个提法,但是现在做的时候,我们想理论上做到完全不太可能,但是可以根据我不同的数据处理的要求,在业务上可能做到一些,至少我刚才说的例子是能够做一些工作,就是怎么样把数据更好的开放出去给别人用,这一块是我们现在做的一些工作。

我做了之后我还发现了一个问题,其实数据的处理里面链路特别长,从最开始的采集到最后的挖掘分析,有了大数据比以前还复杂,你可以有一个数据分析这样的管理,但是现在到了大数据时代这个事比以前还麻烦,在混合处理的时候,很多时候你发现来自于原来的OLTP的系统这些应用非常影响你的数据质量,影响你整个处理的过程,所以在这个地方我们其实用了这样一个源数据的技术来做,这个源数据用MOFM0的模型进行存储,为什么用这种方式进行存储,这里面的内容会特别多,比如你有数据库的表,你可能有接口的模型和服务,这些东西不可能在存储的时候一样再加一张表,我要抽象成一个实体和联线的关系,我的库里面是按照这样的模型存储的。在这样的结构下我其实要通过数据的关系,能够形成整个数据地图,这是我们形成的数据地图,在这个数据地图下你能看到是,我这个数据到底从哪里来的,数据的影响度是什么样,数据的血缘怎么样,数据运维在报表里面看到一个错误,你根据这个数据地图可以找到源头在哪里,我出问题的数据在哪里,在很多客户里面都用这些东西,这些工具和手段来提高数据质量。但是这个手段我相信跟以前我们做法不太一样,以前我们往往建一个源数据系统放在那里,这个源数据系统只有几个人在用,我们现在的做法不一样,拳数据提供了对外的接口是服务化的接口,这个服务其实包括后台的服务,也包括前台UR的服务,对他的数据质量的提升会有非常大的帮助。这样的一些数据其实是通过自动采集的方式过来的,但是我认为其实不仅仅是要通过自动采集,坦率讲自动采集绝对不会100%的东西把东西采过来,我们会知道整个资产会是什么样子,在现在做的事情上面我们发现第一原数据会变成整个IT的起点,所有的东西其实要有原数据系统为准的,这就是整个IT资产到底怎么样,工商银行全行的数据标准有17万个,这个就是起点,OLTP的开发做任何应用的开发都是这样的,要把原数据提高到整个所有的全行或者整个IT里面来做这个事情,所以在这样的模式下你会看到原数据其实会把系统服务、数据接口等等都管理起来,他变成一个软件资产,所有的东西都是一个源数据,源数据下面,你的业务是用源数据驱动方式做的,整个资产是用源数据的模式,能够体现出来的,在这样的情况下我们才可能对IT做更好的管理。现在国家开发银行的时候,他就是这样,整个数据标准在所有的业务线再开发应用的时候都应该用数据标准做这样的管理,我知道某个接口和某个数据关联起来,到了大数据这一块我到什么地方去,进行一个实时处理以后,他出来哪个报表,其实是把原数据的手段能够清晰的把这个脉络管理起来,这个地方其实我最后会讲到。

总结一下今天我可能会说,我们以前一直是做OLTP出身的,从2010年开始我们一直做大数据的应用,为什么做这样的应用,因为现在的系统已经不那么单纯了,没有大数据的处理你已经不可能了,怎么把大数据的处理做好,第一个要有这样的可靠的分布式的数据采集,要遵循Reactive模式,才能把采集处理做的更好。第二个我想讲的是这个地方,在这样一个数据质量的处理监控里面,其实你有这样的手段,我们在数据质量处理的时候,其实是很麻烦的事情,怎么既能把数据质量提高,又能让你的效率足够高,第三个就是在高效数据处理的时候,你怎么样分层分块的模式处理,怎么样把调度做好。第四个就是共享发布应该怎么做,包括脱敏的方式。最后我们认为这个源数据的管理是非常重要,源数据是能够把整个企业的资产,整个管理起来,能让我们IT更高效的进行处理,我今天的内容就这么多,谢谢大家。


摘自CSDN云计算频道 作者陈秋歌  原文链接:http://www.csdn.net/article/2015-12-10/2826445

相关阅读: