携程网数据架构建设和平台服务化的实践

8月30日下午,由七牛公司主办的主题为“数据重构未来”的“七牛·数据时代峰会”在上海国际时尚中心继续举行。携程网的架构专家杨晓青分享了携程网数据架构建设和平台服务化的实践,以下为现场实录:

 
杨晓青:大家好,我是携程的数据架构专家我叫杨晓青。刚开始我先自我介绍一下,09-12年的时候,我是在腾讯,参与数据平台TDW的平台从无到有的建设,2014年是在阿里巴巴CDO数去平台部,负责从无论道路有窦建GOlaxy流计算平台。去年开始我加入到了携程,负责携程的基础架构的工作。
 
以前我在腾讯和阿里做的时候,从开始做的时候,也没有太多的历史的包袱,到了携程以后,我遇到了很多新的问题,比如是在去年的时候,携程的一个数据处理架构,是有一个架构的,从0开始做的话,可能难度还会小一点。以前是一个混合的数据处理体系。在大数据的架构下,快速跃升的时候,我们要换名字,这是对我们的挑战。以前在这个架构下培养的工程师,我们要进行一个基础架构,工程师要进行一个变更,大家要去学习新的东西,可能大家已经熟悉了一套老的东西,有200多个工程师做的是和数据相关的东西,这个是非常有挑战的事情。
 
还有在以前的系统下,大家平时做的时候,经常会出错,大家会去管理这些系统,然后查询数据的质量是不是OK,哪里错了,定位在哪里,这个是非常的麻烦的。还有我发现历史的数据有了问题,我怎么样去纠正对了,还有一些在计算方法上的问题,很多的计算平台发现越跑越慢,这是我们当时遇到的挑战,在这个挑战之下,我们开始考虑,怎么样在不影响前提的情况下,还可以把这个名字换掉。
 
我们刚开始的进行一个数据架构,主要是进行了三个产品,一个是数据采集和平台,这是一个基于数据调度的一站式的处理平台,下面是一个数据分析的平台。这个架构实际上没有太大的新意,前面也有很多的人来说,大家基本都是这么干的,没有什么特别的。
 
现在我们大概是分了一个基础的。比如是做Hadoop,还有一个团队是做的实时计算的东西,主要是Spark的一些事情,另外一个我们要基于分布式计算集群,变程一套解决方案,让工程师快速的解决这个事,减少大家的工作量。整个数据处理的流程就是这么一张图,在所有的网站系统,或者是电子商务系统,大家的数据基本是可以分成三类,第一个是交易相关的数据,这些数据基本是落数据库里面的,还有一个是用户的行为数据,这些数据的题量都比较大,还有一些是会在系统里面发一些消息,比如是系统检测的难点,会通过系统发出来。
 
然后我们在解决方案里面,业务日志和系统消息是走的消息队列,对于交易类的系统,可能和大多数的公司是不大类似的,Muise流处理,对我们现在的要实时的采集它,给我们带来了很大的挑战,完成关于交易数据增量采集的一个方法。
 
整个的计算的引擎,离线的部分基本就是机遇Spark的体系去做的,还有做产品验证的系统,还有数字的API,供推荐交易用,还有一些其他的很多的小系统。前面也提出到了数据同步,因为Server给我们带来了很多麻烦的事,这个是我们基于二次开发进行的一个包装,我们现在的MySQL和hive等携程主流数据库间任意同步,解决多种同步工具混用,效率难以保证,维护负责问题。在这个产品之上,我们数据采集的模式,之支持全量和增量数据同步模,通过可线性扩展,这是我们产品的一个页面,你的任何的数据要采集,打开我们的页面,在上面进行一些配置,那过一会,你的数据就会有了,后面就会启动同步配置,而且和我们的调度平台是可以无缝的结合的。我们来看一下关于增量计算和增量采集的问题。
 
日志数据有一个特点,永远不会改变,只要它产生了,没有人会去改它,但是数据库不大一样,数据库一直是有改动的。我们自己做的一些协议,比如是线上的线上的数据可以通过日志的方式同步到另外的数据库里面去,可以启动增量的模式,数据里面会加一些标签,可以每次采集一部分的数据,增量预算比如是今天结束以后,会启动一个末点运算,为什么要做增量的计算,第一个解决时时性的问题,以前是一天会做一次,比如是我要看到今天的销售怎么样,特别是做活动的时候,大家非常的关注今天的状态是怎么样,可以提高数据的实时性。
 
如果是大家每天都是第二天早上运算,那大家会遇到过同样的问题每天凌晨计算量非常的高,通过增量计算可以把这个阶段拉平了,还有一个好处,很多的数据会涉及到跨机房采集,对网络会造成比较大的冲击。 我们到八月的数据,每天会同步八千多张纸的表,要同步5T左右的数据量,同步的行数是在20亿条。
 
数据调度平台这是我今天要重点说的平台,这个调度平台,我们把它做成了一个产品化的东西,定位成数据开发一站式服务的结合的地方,数据的采集,计算,管理,运维,都在这个平台上可以完成。
 
这个系统是整个数据处理系统,大家也都了解,现在的数据处理太多了,而且任何一个公司,都不可能用单独的一个解决的方案,或者是某一种系统完成所有的问题,肯定是一个多平台的,多系统的一个组合达到不同的特性。这个调度系统,每天基本上是驱动了这些,把数据同步到计算的平台,还可以采集负载,采集日志是否到位这些信息,然后进行计算,还会带来一个好处,我可以看到整个系统的运行趋势是不是正常。比如是可以看到运行的任务是怎么样,可以自动的暴行,运行的速度是不是越来越慢。
 
比如是通过了整个任务的分布,我们可以给出任务一些建议,它在运行的时间应该进行一些调整,或者是携程有多个业务线,你可以发现这个业务线和那个业务线,你们的计算逻辑是一致的,是可以进行合并的,计算一份就可以了。
 
在没有这个技术之前,我们整个数据系统有很大的运维的成本,我要开发上线一个新的ETR的流程,我要在测试的环节调试是不是OK的,然后要去上线,走一条完整的上线的流程,然后观察是不是OK的,整个的流程,除了你自己写你的业务逻辑的时间,你完成这么一套流程上的时间,可能是几个小时也会有的。
 
还有一个是运维,我们现在有二万多的ETR的流程,最典型的例子,如果是你的一个数据质量有问题,特别是一张底层表出了问题,发现数据在报表的时候是错的,然后把错的地方恢复以后,依赖这个标的任务有几十甚至是一百,挨个的恢复它,可能一天也做不完。这是之前的一个状况。
 
我们基本是把开发上线的时间降到了十几分钟,运维都是一键的,甚至是系统可以有一些自己的规则,判定你的流程是不是属于一个正常的状态,如果是发现了错误,系统可以自动的帮你重置,或者是某一个系统有问题,检测到这个系统恢复了以后,可以自动的启动。
 
这个系统大概是有四个模块,一个是开发IDE,有一个图形化的界面,专门可以去开发,调试,甚至是把厂家的数据都可以去进行查询,比如是我突然忘记了这个表的字段是怎么样的,我可以同时察看关于任何表的元素的信息,包括这个表里面有一些什么数据,可以了解一下数据的内容。另外一个是工作,主要是管理任务的启动和停止。比如说我们配置的任务要早上三点行动,定时的启动,还有数据采集完成,会发生一连串的计算,整个是一个完整的数据流程,要去依赖。
 
还有是事件的出发,比如是人工的触发一个实践,还有人工的触发,有一个开放的接口,另外可以调调度系统的借口。另外一个是运维管理,发现了错误以后,可以以来了城堡,看一下任务的日志,如果是这个任务非常的失败以后,晚上可以自动的给我打电话,告诉我出了什么问题了。
 
还有每天的业务报告,比如是很多的人会关心,我想看一下整体状况的优势是怎么样的,错误的失败率有多高,都可以看到,另外一个是智能的管理,现在携程有300多台电脑,有很多的开发的单子,这时候的资源肯定是不够的,这时候该要根据优先级来判断,哪一些任务先跑,哪一些任务后跑。如果我们发现集群比较慢的时候,我们就会禁止提交集群。
 
另外一个是分组,在不同的环境下,可以根据不同的特性根据分组。这个是任务的触发方式。这个是整个系统怎么样运作的,比如是数据平台,会出发很多的工具,驱动整个的数据流程!是从生产慢慢的流动到通讯系统,最终是流动到报告和推荐系统里面去。这是我们和普通的系统不大一样的地方,我们做了一个资源分组的功能,这个系统,大概是去年的10月份上线的,因为我们有很多的业务要去做,这个周期的迭代系统大概是二周就要上线,我们上线的时候,因为上面有很多的任务了,比如是上线以后有问题的话,我们会有很大的压力,通过分组,我们可以先放到测试组里面,如果是OK的话,客观恢复上线,还有一些任务的话,可能需要一些相关的环境,我们可以切换为独立的集群,在R集群强化管理。
 
这个就是刚才说到的优先级,没有优先级的话,比如是大家都有钱打水,那都接受不了,都会非常的愤怒。一些不重要的信息,大家也不是这么的在意了,还OK的。
 
现在我们每天集群的规模有33万的样子,这是我们做的功能的演示,可以看出计算的结果,这里应该是我的左边,这里有一个原数字的管理系统,你输入任何的标,会弹出含义,包括预览的数据是什么。右边这里是整个的任务数,大家可以看到很多的业务是发邮件的。我可以看多自己的业务类型,但是如果是你不想让别人看到的话,可以是加秘的。也有一些自动存款的策略给大家配置。这个是每天写的日志,大家都可以在页面上进行探讨。
 
这个是大家只能看到自己的任务,这是每天的一些趋势,比如是多少的成功,多少的失败。这是我们的管理系统,每一个机器上有一些什么内务都可以砍掉。整个集群的负债都比较高的时候,我们会负责到等一下,免得把机器拖死了,这是整个Maart的志,现在我们的数据进行管理预算,最通用的是有一些是简单的出一张报表,简单的看一下运营数据就可以了,如果是用的详细时候,比如是我想象一下业务线是多少比如是左边的交易额是多少,右边这里定单是自动化的,甚至是很明细的一个指标。
 
在相当于展示和报表的平台之上,我们主要是有二个产品,一个是展品宝宝,一个是多个分娩引擎。简单报表引擎,因为它非常的简单,而且非常的好用,支持多种数据库,支持发送邮件,支持附加Fdfipang,你只要任何的一搜索,就可以出来各种的线索和饼图,你可以让你看到的东西,可调这么一些图形。而且是可以定时的,比是是每天早上通过这个系统。以确认整个系统的人员是不是成功的。
 
这个产品是我们批评成功的产品,有700多个UV操作参加,这是我们的一个操作台,你只要是把人添到这个框里面去,根据时间会有一个特殊的标签,你达到了这个标签,时间就会多,你只要点了,就会出来这么多,你没有什么不需要看到的,只要是数据分析人,把你的数据输进去,就可以出来更多的了。
 
这个是相对来说专业的要求稍微的高一点,这是一个多维分析引擎,我们对它进行二次开发。这个产品主要是大数据量的分析,另外一个小数据量的刻划,可以通过搜搜网,你在做报表和模型的时候,不需要关心是在什么网站上,后面会自动的发到你的电脑里做支持。这个是分的更细的,这个是支持多种图影,比如是各种组合,这个是我们分析的火车票定单的状况。
 
我要说的就这么多,我们整体做的时候,我们分了三个层次,数据采集一个系统,整个一站式的数据管理系统,同时一个数据的展出,如果你是一个数据分析师,你进来了以后,都是在页面上,你只要经过了一些技能,其他的东西都是数据点击就可以了,就说这么多,谢谢大家。