WatchStor.com — 领先的中文存储网络媒体 | 51CTO旗下网站

新闻资讯 > 公有云 > 正文
精硕科技刘喆:上不上云,需求说了算
作者: ZL 2018-01-08 20:53 【51CTO】

由中国电子技术标准化研究院主办、51CTO承办的“第七届中国云计算标准和应用大会”于2018年1月4日至1月5日在北京成功召开。本次大会全面展示我国云计算国家标准研制工作的成果,解读国内云计算产业政策,报告云计算标准化工作的重要进展。同时,大会还重磅发布了国家开源领域的标准化产物,分享了云计算最新的技术趋势和应用创新成效,并颁发了云计算产品及解决方案第五批测评证书。此外,第二届中国优秀云计算开源案例评选结果也在大会现场公布。


在大会的云计算基础架构与实践分论坛上,精硕科技资深架构师刘喆带来了《云 Or not?》的主题演讲。他从自身的工作实践讲起,谈到了云的优点和未来的发展趋势,并跟大家分享了哪些具体的业务应该上云,哪些业务不能够上云。虽然刘老师的演讲时间比较靠后,但生动活泼的演讲仍然吸引了大批听众的认真聆听。

以下为演讲实录:

大家下午好!

我看到现在还有这么多听众愿意在这儿听我跟大家扯,感觉特别特别高兴,现在坐在这里的都是真爱。受到大会的邀请跟大家做演讲,如果我还讲一些技术、细节、实现、优化好像没有太大的必要,因为这些东西大家可以在网上看到,可以跟身边的人交流得到,我想了想准备做这样一个分享,就是云Or not。我叫刘喆,在场的有不认识我的吗?没有人举手,大家都认识我,我来自于精硕科技,我们公司每天处理的数据量太大,每天超过一百亿的数据增量,所以跟云和大数据相关。

不是所有的业务都适合上云

一切有云、有AI的地方必须涉及到大数据,这是腾讯的马化腾说的一句话。在深圳的高铁站有一个更大的照片,那个图片我找不到了,只找到这个,那句话马化腾是这样说的:“未来在云上用大数据来处理人工智能”。这句话说的特别到位,或者特别高大上而全。之所以把这个图片放在这里,写了个“云”,打一个问号,我们真的要把所有的东西都放在云上去吗?除了跟大家分享技术方面的东西,还想给每一个在座的做更多云以外的分享,怎么样能让大家升职加薪,相信这一点大家都会非常关注。大家都想升职加薪,怎么样才能做到呢?我们CEO经常跟我们说的一句话是要想升职,要想加薪就要让你的老板无事可做。我的老板经常问我,这个东西要上云吗?我要先替他想这个东西要上云吗?到时候你给他一个12345,老板就很高兴,你不升职加薪才怪。

云的优点有很多很多,相信各位已经听的不厌其烦了,简单列几个:第一个,按需付钱,节省成本。第二混合编排,充分利用资源。第三,占机器众多,使用不充分,放在云上比较合适。

“成本、资源、放在云上”,这几个词也是我们经常要考虑的点,云真的省成本吗?我们以前做过一个计算,当你的数据量在500台服务器上可以放下的时候,放在云上和放在云下其实成本是差不多的,大家可以记得这个数字,以后如果有人要做一个什么决策,可以参考一下这个数字。

放到云上真的能充分利用资源吗?但是其实不一定,后面跟大家分享两个案例来讲讲关于资源这个事情。所有搞大数据的同学都会知道,占的机器特别多,使用充分吗?不一定。之前给一个企业做内训的时候了解到他们的服务器超级的牛,相对我们来说已经牛了好几代,比如说一个硬盘8T,一个机器12台硬盘,内存最小的是256G。我说你们机器不会出问题吗?不出问题,怎么出问题?多少台机器,一千多吧,你说一千多台这样的机器放一起怎么可能出问题呢?我们经常碰到的问题是什么?老板,硬盘快写满了怎么办?赶紧加机器,我说你们不需要加吗?我们不需要加,我们硬盘使用率在15%左右,我就发现没法跟他对话了,使用不充分,放在云上正合适。是吗?

我们有一些业务是放在云上的,我就被我的客户问了这样一个问题,我想把阿里云的大数据框架处理AWS的文件,因为它的文件放在亚马逊上,但是它有一部分业务在阿里云上,他说阿里云的大数据平台比较好用,我想处理一下AWS,我们就灰头灰脸的,我没有办法,我说不行,那我的数据在AWS上怎么办呢?我还是不行。数据不好搞了,我自己搞,我又搞了一份上去。另外,由于各种原因,阿里云涨价了,老板说阿里云太贵了,我们想换个平台,我还是整不了。没办法,我只能用私有云,我不用他们折腾了,我自己搞,因为涨价归他管,我自己公司有私有云。但是我们是面向企业用户的,我的客户来说,我不能把我的数据放在你的云上,我可以放在阿里云上,又绕回去了,很烦。可能大家还没有遇到这样的问题,但是总有一天你们会遇到,我们遇到这么多,他怎么沟通,怎么互相通信呢?这始终是一个问题,如果你没想这个事情,等你老板来问你你就傻眼了,像我一样,怎么在阿里云上处理AWS,可能你一开始不建议他这么玩。 我们怎么玩?我们是玩私有云,因为外面的是不可控的,我们不想被任何一个平台绑架。

我刚才说过一个数字:500台。很多很多交流过的公司,特别是创业公司他们数据量很小,我们也在做大数据,我们有多少多少数据,我一听就“呵呵了……没有超过500台的不要跟我说大数据,我们有一天两三个G的数据,我们不考虑这个事情,因为你在阿里云上玩的很好,你就在那儿玩,如果你的数据量很小,你就扔在公有云,你就在哪儿玩,所有你需要的东西它都有,KV、存储、计算,大数据的计算,人工智能的计算,语音、视频什么东西都能搞。如果你的量很大,我把这些东西都扔到公有云上,迟早会玩死你的。

我们会有一个目标,叫资源优化。当然所有写程序的同学都不会想这个事情,上来想老板提了一个功能赶紧做完,但是如果你后面还不去想,你怎么升职加薪呢?优化的前提是度量,度量,度量,重要的事情说三遍。我们是一家做度量的公司,所有的东西先度量了之后才说其它。当然,这个东西在其他公司可能有另外一种表述,叫“用数据说话”。大家可以记得这一句话,“用数据说话”,有人讲我有多少多少台东西扔到云上,然后就怎么样。你先给我一个数据看一下,如果没有数据不要在这儿说优化也一样。我们用私有云优化了什么什么东西,数据在哪里?如果没有相关的数据支撑,你可以测试。我不知道这样好不好,我可以测一下,测出来的数据告诉我,这样可能是好的,也可能是不好的,有了度量你太可能做后面所谓的优化。

非集群类的需求不上云

我们最终的结论是非集群类的需求不上云。比如说一个前端机,有人访问你的页面扔上去,没问题,比如说你有一个Mysql数据库,如果在公有云上不需要考虑安全不安全,就扔上去,所有集群类的需求我给他们做决策都是不要放在云去。比如说hadoop,你说我扔到云上吧,可以,但是不建议。为什么?所有集成类的应用,在设计之初就是想着我自己怎么样容错,我自己怎么样扩展。所有集成类的都是上一些假设,东西都是坏的,哪一天我要扩展,这个东西跟云设计之初的想法是一样的。昨天一个同学问我一个事情特别有意思,我在阿里云上做了一个Hadoop,我能不能把它副本同一个变成三个,一个副本也没有问题,它不会丢弃。但是问题来了,Hadoop设计之初根本没有考虑过你在底层做三备份,在我看来只有一个,我不知道你做了三备份,所有针对三备份的优化你都用不了,在他看来就是一备份,他知道这个在哪个机架上,所以所有集成类的我们都不建议他扔到云上去。

另一个,度量,有了数据支撑才能好的决策,否则就是瞎猜。,现在可以说我现在就是瞎猜,我欢迎所有人说我现在就是瞎猜,因为我没有这个数据。我们就是靠做度量起家的,度量什么呢?广告,我们给广告主度量,这个广告做在这里是不是有效的,你做完了我给你评价,今天放在这里没有人看你的广告,你在优酷做了一个广告,今天看你广告的有两百万人,放在搜狐变成五百万人,我两个数据放在这里,哪个有效呢?我不用告诉你。程序的优化靠时间分析,Profiler。

资源的优化,找出浪费的大头,比如说看见这个程序大部分时间CPU忙的要死,把它拆开跑,内存占用太大,跑着跑着爆掉了,自己看哪里的问题。

什么样的非集群的需求上到云上?前端,开发机,相信每一个公司里面都会有一些开发机,应用人员要写应用,要是,开发机测试统统扔到云上去没有任何问题,因为它负载也不高,挂了也没关系,安全性也没有那么高的要求,挂就挂了。

数据库,如果一些不重要的数据库,你就扔上去就好了,他使用率也不高。尤其现在有一种东西特别建议扔在云上去,就是前端,我们的前端都是用容器扔到云上面去的,曾经有一次我们试图把它拿出来,然后就发现各种坑,因为JS这个东西依赖的东西太多了,一会儿依赖这个,一会儿依赖那个,如果你没有,这个机器挂了,重新部署一遍。

集群类的需求,不上云怎么办呢?我们用Yarn管理所有统一的大数据应用,像Hive/MR/Storm/Spark/Flink,给大家讲一个案例,ES,原来这个东西是布在docker上面,他们问我这个东西经常跑着跑着挂,怎么优化一下。没有度量就没有优化,我们就去看这个东西为什么老是挂呢?到底哪里占的比较高?去分析,发现没有任何东西,没有明显的显示CPU很高,内存很高,但是它就是挂。发现在docker上面跑的,把它拿出来,一看别人跑的是OpenJdk,不知道大家知不知道这个埂?在docker早期的时候关于Jdk,全部是openJdk,我们发现有一个问题,某些情况下你拿openJdk可以跑这些JAVA的大数据的应用,但是某些情况下就是会出问题。跑着跑着就挂了,我们没有深究为什么,我们统一把这些东西搞出来,放在JDK上就Ok了。我们现在尝试在测试集群上把H扔进去,我们的老板不关心技术,你部署一次环境浪费时间那么多天,200台机器什么时候好?我说两天,太慢了,扔在docker瞬间搞定了,然后发现这个程序跑的很慢,虽然没有慢那么多,中间加了一层总是会慢的,大家会觉得没慢多少,总是会慢的。在这种情况下,“差之毫厘,谬之千里”,慢了0.01秒,你一天做那么多的计算,那你可以想象。

大数据放在云上并不是都能省资源

问题就来了,大数据放在云上不是也可以省资源吗?其实云一开始想解决的问题就是你一会儿一个波峰,一会儿一个波谷,我把这个东西消掉,你需要的时候给你,不需要给你减了,一开始解决这个问题,如果一开始解决了,他天天忙的要死,上哪儿节省资源去?下一个问题大数据计算中大家觉得成本最高的是什么,谷歌每年会会一个大会,那个大会的内容一般不归关注,但是名字很有意思,叫IO大会。

其实大数据里面最慢的就是IO,网络也好,硬盘也好。虚拟化技术里面如果你想提高性能,最简单的事情是所有的东西都本地化,你永远不要去访问网络,永远不要去访问问盘,永远不要访问别人的CPU和别人的硬盘。

比如说我要读一个数据,在你的云上可能觉得我是读的本地的呀,但是其实是不是呢?不一定,如果你读的真是物理机本地的,它是会快的,如果你读的东西要跨网络,肯定受限于网络。昨天一个同事找我说,我要从集群上拿一个东西拿不下来,怎么回事,你去看一看我们的监控你就会发现所有跑集群计算的交换机都是满的,网络都是满的,最大的瓶颈就是你要读别人的数据把你卡住,你是在没有办法,如果你只读本地的,取决于你的硬盘,最快的是CPU读case最快,case读硬盘最快。

谷歌的大会叫IO大会,IO和Shuffle,是几乎所有大数据计算框架最关心性能问题,你要优化,其实优化就是本地化,尽量读自己的。方案就是locallzing把东西拷到自己这里来。比如说Mem page配置预读,内存比配置快一千倍,你可以预先读。最早的时候MR出来之所以先于现在大数据计算这一波过来,他自己设定的时候就是我假定如果你有资源怎么办?谁离我近我在哪儿跑,不要让我读网络,读网络很慢。程序设计里面其实更多,我们知道逻辑判断有个东西叫短路。大数据放到云上会有那些问题呢?大数据平台都是基于物理机设计的,我们现在跑的Hadup,什么Spark,没有哪个平台说我是基于云设计的。现在云平台上他们自己提供这种能力,自己有EMR,可能是根据自己的云又设计的一套大数据的计算框架,可能是。但是如果你用的是原生的,我还要用到云上这样用,他不是为你的云设计的。

硬盘是不靠谱的,因为它考虑到扩容,考虑到容灾,要做副本,但是其实云上面他已经给你做了副本,就是刚才讲的那个例子,这两个副本怎么处理呢?要么就是浪费,要么就是低效。下面这两个已经讲过了,读写网络是比较慢的。为防止数据一下子坏掉,要放在不同的地方,大数据框架一般都会想的一个点,数据会坏,坏了怎么办?不要把鸡蛋放在一个篮子里,要放在不同的地方,现在把这个东西扔到云上,问题来了,我怎么知道我所谓的不同地方是不是在一起?应用 框架说我放在不同的地方你放心吧,结果在云上这俩就是在一起,结果这个机器挂了,他说我没有放在一起,下面说你就是放在一起了。这个过程很可怕。

我希望大家只记住一句话,替你老板想你才能升职加薪,因为上面这些问题都是我老板天天问我的。谢谢!


标签:公有云 

LecVideo