摘要:近日,2016全球软件开发大会在北京国际会议中心举行,易观CTO郭炜发表了主题为《混合云大数据迁移实践》的演讲,主要给大家分析了大数据迁移的几个难点,郭炜先生还就易观智库如何做到混合云的数据迁移做了详细介绍
2016年混合云成为最热门的IT流行语之一。什么是混合云混合云能否保证云服务安全又有效
近日,2016全球软件开发大会在北京国际会议中心举行,易观CTO郭炜发表了主题为《混合云大数据迁移实践》的演讲,分享了他在易观使用混合云的经验和感受。
以下是演讲全文:
为什么使用混合云
非常高兴和各位分享混合云的大数据迁移,这里边提到两个事,一个是混合云,一个是大数据迁移。
为什么用混合云易观的数据量非常大,来自于手机端APP,嵌入易观的SDK,设备数覆盖了7.5亿,月活1.5个亿,日活基本上过千万了,这些数据实时上传到云端,有一部分要做实时计算,有一部分做批量计算,现在对我来讲挺大量的请求。
其实我们在国内各种公有云上面,迁移了一圈,最后没有办法,我们发现现在国内整个环境里面,在做大数据的高性能、高并发、高IO计算的时候,混合云是唯一一个比较好的出路,一方面用了底下大数据平台,另一方面跟公有云打通,既享受到公有云对我们的免维护,可以很快的延伸,加上相关的产品,这样有一些好处。所以我们把公有云做好了,用混合云的架构处理我们大数据。
大数据迁移几个难点
这个时候面临一个问题,我们怎么把这个数据迁下来的这里面其实有这样几个难点。
第一,大数据迁移和普通的数据库迁移不一样,历史的数据是PB级别的。因为过去数据库迁移,在一个机房里面表对表,或者旧系统对新系统,数据量几个T,现在大数据迁移不一样了,历史的数据是PB级别的,不能把这个数拿硬盘拷出来,这件事不太可能。
第二,这些数据不停运转,日处理已经超过10个T了,怎么保证这两个东西不要断线,不要影响整个生产环境的变迁
第三,平均每秒钟70到100万次连接请求,如果两个系统做并行,怎么办
并发量这么大,怎么让两个系统在做并行的时候,同时收到这些跨互联网的数据,而不是在一个机房里通过光纤连过去我是通过异地互联网同时接收到大量数据的需求,公有云和混合云同时并行,这件事儿挑战也非常大,因为它有非常大的请求量。
第四,数据流式计算,迁的时候不能断了,断了以后用户反馈非常差,就会有一些问题。所以你得把它想象成平滑过渡的过程,把我们这个数据迁移做好。
数据量这么大,怎么迁移
中间怎么迁呢刚才说了几个难点,怎么搞定的
第一,原始数据压缩同步。因为我是要跨互联网的,不能跑人家机房里拷,大家知道真正做大数据的时候分很多层同步,底层到中间的数据统一层,数据汇总层,数据的结果层,我们把原始的数据层,通过线下基层高性能的计算补这个数,往上追,这个时间通过互联网一点一点传,不论申请多大带宽都会非常大,互联网的带宽一会儿多一会儿少,这个东西传就会断掉,这个数据通过压缩传原始文件,重新做计算。
第二,数据验证。我们在不同层次里面设了一个指标,做了相关核心条数、DAU、MAU,设了100个指标核对每张表做的结果不一样,无论做大数据迁移还是小数据迁移,这件事儿都得这么干。难点来了,我怎么去把这个接口,这样大的并发,它是要做并行,我需要拷贝一份同样大量数据转发给原来的公有云上面,同时还要发给线下新的集群下面,把这两件事儿同时并行接收,原来一份数据拷出一份做两件事儿,我们那时候遇到巨大的考量,这么大量的数据并发,怎么把它复制出一份,给它分成两部分,同时两个系统并行的时候来接受,这是我们刚开始遇到挺大的难点。
为什么说NGINX不行
在这里面可以开发一个服务,用它自己的代码,为什么不行,其实它的性能非常高,完全能满足刚才的并发请求量。我们的数据其实是百万次的请求,真正的数据请求比这个量还要大,每次APP传给我们数据的时候,都会回一条信息叫response,这个时候把本地缓存数据清空,如果没有返回response信息的话,一直把数据缓存在他的SDK里面。我在什么地方,有一个像简单的response,传到云端,云端NGINX反馈给response,会清空缓存。回到这个问题来讲,NGINX什么时候返回response,如果在这一层返回NGINX,因为这并发量非常大,怎么确保同样的数据在这台NGINX和这台NGINX对大量并发请求,同时能拿到这样的数据呢
如果拿不到出现什么样的问题,我这部数据丢掉了,无论公有云端还是混合云端,这边的数据他这边给SDK说,这件事情我们收到了,那边数据回再传了,转发给这边的时候,由于量非常大,不是哪个需求都可以获得满足的,这个请求发现这个事儿不行,出现问题了,他把这个东西知道了,回不到这边了,这边反馈说已经做完了,这条数据丢掉了,同理这边也是,哪些数据保证我们原来混合云、公有云这两端数据一模一样呢所以这个数据怎么保证在并行期间,这两个事情能对上,所以NGINX,虽然说它的转发效率很高,并行度很高,对于这个环境来来讲,没法满足我们的要求。
为什么Kafka不靠谱
大家原来看到那个架构里边,我们把它升级变成Kafka,这边底下有Kafka,Kafka现在有一个工具叫mirror maker,首先说它这个工具,这个工具挺坑的,运行大量数据的时候根本不行,转不起来,它会到大概我们的并发量,大概十几分钟就报各种各样的错,每次都是如此。后来发现需要用Scala把头部和中部的原代码改一下,我的兄弟们对Scala又不太熟,干这件事儿看来不行,Kafka直接从这边把队列放上去,这件事儿是不灵的,这是原因之一。哪怕我们用了这个,把这个代码重新改一遍。
为什么还不行呢我们这些全都是小包两条线通过互联网传的,一个地方在青岛,一个地方在北京,大量传输的网络无法满足小包的转发请求。我们后来自己还真写了一个小的程序,利用Java多线程,你会发现大家同步的时候,要不这儿多,要不这儿多,而且这个积压情况,每百万次或者80万次的请求,不是说我只是满足了五六十万次,它是十倍的差距,因为网络带宽,这种大量的小包请求非常敏感。所以造成我们在这两边的时候,差距特别大,一边查,一边速度消费很快完了,一边积压三个小时的数据五个小时的数据还没有,每天的数据都增加,现在三个小时没有传过去,再过一天变成六个小时,怎么保证刚才说的流失计算和相关的同步,这件事儿也不靠谱。
当然也有人问,这个架构不好,干吗单独设一个第三方接这个数据呢现在换这个数据,这样的模式不好吗我现在就是直接通过接收端搞一个,最后我去做相关的Kafka的时候,从这边接收完了之后放下来,结果还是一样的,你会看到我的这个互联网传下来的时候,在里边积压了大量的数据,根本消费不完,一天过去以后,这儿数据都处理完了,这边积压了半天数据根本没刷下来,这么大量小包并发传的话一定有这个问题。
第三,自创工具KICKER AA。
我们自己写了工具,我们叫做KICKER AA。我后面讲一个非常稳定的架构。两边是两个Kafka的队列,这是我们在原来公有云端,这是我们线下混合云端,中间有几个部件,把里面消费原来相关的数据形成一些文件。因为我们现在发现通过小包的传输,特别大量百万次的请求传输,不靠谱,所以我们干脆先落成文件,小的请求先压缩,压成一个中量型的文件。
这时候有几个问题,怎么保证文件传输中间不丢。我们做同步的传输,特点就是数据特别大,怎么保持稳定所以我们采取的策略最简、最优,我们没有用大程序就可以转起来,各种各样并发的请求对Kafka的压力,对文件传输的压力,只要有一个点有问题,整个队列全部出现问题,所以分了好几块。
我们先说说Consumer,干一件事儿读Kafka的数据,把它写到文件里面,这里边主要对网络运营进行处理,所有通过互联网传输的大数据,最大的隐患就是不知道这网什么时候好、什么时候坏。
第二个,File transfer就是做相关的传输,主要追加时间戳,如果消费端有问题,我们更新到临时文件里面,中间其实做一些简单的设置,传输的时候不是光传文件,因为传文件的时候不知道什么时候传完,我们加一些文件这样线下知道这件事情做完了,把数据再传到我们线下Kafka里面去。在线下文件队列,把刚才说的接收变成相关的数据文件,为消费者提供这样的东西,处理多个消费者的请求,刚才我们说,因为这个消费的时候,肯定不能通过这么大数据的并发,我们想在十分钟到十五分钟,从原来的公有云在混合云传下来,进入消费状态,让整个数据流能转起来,这件事得通过多个消费者干,一起并行跑起来。其实一开始也遇到了一些问题,我们刚开始的时候发现消费者数量控制多少,这个事儿其实是挺重要的事,如果多的话,文件服务器受不了,最后调了比较合适的数据量,把多个消费者做相关的消费,把文件并发给搞定。
后面解决问题,就是把消费通过多个线程放到Kafka里面去,只要进了线下的Kafka了,我们认为这个事儿基本上没有太大问题了,包括文件的管理细节,其实我们都是在这里面来做,我们传输的时候单个文件传输,不是并行文件传输,我们强调带宽的问题、稳定性问题,但是每个文件传输速度非常快,只要下来以后两边的消费和生产,这两边全是并行,中间传输是文件传输,这样最终达到的效果,整个传输刚才说的数量10到15分钟,完全可以同步到,从公有云,从青岛一直到北京,把整个数据并行起来,转起来。
大数据迁移的“果实”——易观方舟
我们看看最终迁了什么东西下来因为易观过去都是在做分析报告检查,所以它把我们所有的移动客户端分析报告做了分析模型,做了易观方舟的东西,它的基本功能是免费的,是专门给开发者提供大数据分析的云服务。比如运营分析功能,会告诉你,你产品的月活、日活、用户画像怎么样。应用评级会告诉你,你的APP用户值不值钱,你的消费价值值多少,媒体价值值多少,这些都是易观背后给你背书的,当然还有一些社区论坛的东西。
运营分析、渠道分析、用户分析、提高品牌影响力,都可以用易观的东西。通过接入易观方舟,能够让你和VC进行对接,易观过去做分析报告,VC看我们分析的行业报告,现在易观通过一些程序化的方法,把它给你做起来。
我今天的分享这么多,技术问题大家可以随时和我们来做一些相关的讨论,现在易观的口号叫做会玩儿的大数据公司,我们有很多的大数据,如果想玩大数据可以加入易观,一起来玩易观的大数据,看我们玩出什么新花样。今天非常感谢各位。
本文为专栏文章,来自:数据猿,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/15587.html 。