个人简介 陈磊,腾讯云平台总负责人,腾讯开放平台副总经理。负责腾讯公司开放平台,云平台和社交广告相关的技术工作。在加入腾讯之前,陈磊曾经在美国的谷歌,微软等公司任职,从事存储系统,Web会议系统等的研发。曾获得清华大学计算机系学士学位和德州大学奥斯汀分校计算机系硕士学位。
QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。
1. 这里是QCon上海2013采访间,我们现在非常高兴的请到了腾讯云的负责人陈磊先生。
陈磊:非常高兴能够有机会在这跟InfoQ的朋友们进行对话,感谢大家的关注。
2. 最近腾讯云做了一个非常大的上线活动,然后大家都很关注。那么很多人都问一个非常关键的问题,就是腾讯云,腾讯自己到底是怎么用的?腾讯到底有哪些业务跑在了腾讯云上?这些业务运行的情况到底是个什么样的状况?我们是不是可以参考腾讯的业务模式来把自己相似的业务迁移到腾讯云上?
陈磊:刚才我在InfoQ的大会上分享的Qzone,它就在使用腾讯云,包括它内部的虚拟化技术,它使用的网络加速技术和存储服务。Qzone所使用的存储服务,跟我们给到我们的客户,腾讯云的客户的服务是完全一样的。
3. 是同样的技术栈是吗?
陈磊:是同样的技术栈,而且是同样的服务。比如说Qzone用的CDB,跟我们的客户用的CDB是一模一样的,只是不同的集群,包括软件的版本都是一模一样的,部署方案也都完全一样。
4. 那除了Qzone之外呢?
陈磊:除了Qzone以外,QQ、微信,我们的核心业务,都在使用这些服务。就是从整个的技术架构上,我们是一致的。
5. 所以说大家还是可以放心的跟QQ绑在一起。我们看到腾讯云在选择计算资源的时候,不像其它云,只有几种固定选项。腾讯云是可以自由选择配置的,相信如果可以自由配置的话,那会产生特别多的组合,在云的管理上会是很大的一个麻烦。我想知道,腾讯云在管理这么多样的虚拟机型的时候,做了什么样的事情,这些虚拟机又是怎么分配的?有没有对一些资源进行超售?如果发生了资源抢占的情形的话,最后是怎么来调度的?
陈磊:首先说,是完全没有超售的,我们完全没有超卖的机制。的确就像显峰讲的,如果调度方案不合理的话有可能会产生空洞。我们是以资源热点为优先的算法,比如说在我的整个Site里面,当内存资源变成热点以后,那么我会优先去满足用户的内存需求。我会去看哪个资源在目前的使用情况下是最有价值的。因为从整个机房的角度来看,能够正好的把内存、CPU、硬盘资源全都售卖出去,这是不可能的。
6. 这是很难的,对吧。
陈磊:嗯,因为用户的需求全都加在一起,跟你的资源的容量,是不太可能完全正好的对应上的。所以你要首先去保证最紧缺的资源,保证它的使用的效率,这是最重要的。此外,在我们的整个分配算法里面,也很好的考虑了对空洞的填补和隔离性。因为我们的业务其实是有规律可循的,用户的选择也不可能是千奇百怪的。我们看到的用户的选择主要分为两大类,一类可能对CPU和内存的选择会比较高,就会选择高配置的虚拟机;另外一类可能对CPU和内存的要求不那么高,就会选择相对小的这些机器,会很长尾。那么我们就把长尾和要求高的机型去混布。我们看到的结果是,这些不同的业务所使用的资源本身就各有侧重,其实是一个互补的情况。在资源的售卖上,我们目前是不考虑超卖的。
7. 那我有一个问题,就说某个用户在其虚拟机还没起来的时候,是很难判定它到底是什么密集型的,比如计算密集型的还是内存密集型的业务,那你是如何判断这个业务要放哪。因为他要买一个资源,你给他一个资源,然后才能看它到底是什么类型的嘛,是吧?
陈磊:其实也不难判断。因为你有它历史购买和历史使用的情况。对于一个新客户,你大致知道它的行业。比方说游戏,游戏对资源的使用是有一定特征的。虽然每一个游戏开发商,都会有一些细微的差别,但是游戏,特别是现在我们这种网页游戏或者手机游戏,他对资源的要求是很标准的。而且内存对他们来说是一个非常重要的资源。如果是网站,那可能是另外一种资源的配置形式,所以你还是有很多的方法去做一定的预测,当然这个预测有没有可能错?也有可能错。
8. 错了有修正吗,就是还会给它热迁移,或者什么其他的一些区别?
陈磊:目前我们不做这些迁移。但后面我们会去做。另外就是选用我们CEE的用户,那我们处理就灵活多了。我能够给它两个不同的instance,比如说在不同的设备上,他初始可能使用量比较小的时候,我就只给他两个不同的Container。在它的使用量上来的时候,我们会同步的去扩张这两台Container,当扩张到一定程度了以后,我会发现,原来这台机器空一点,那台机器满一点。那我会在空的那台机器上多给他一些资源,满的那台机器相对少给他一些资源。此外我们可以实施很快的热迁移,Container热迁移速度非常高。
9. 你们已经实现了Container热迁移了吗?
陈磊:嗯。
InfoQ:这是一个比较新的技术,应该说在业界应该是比较领先的吧?
陈磊:嗯。
10. 我还有一个问题就是说,腾讯云在数据中心的灾备方面,有没有什么特别好的技术来保证?因为很多人,包括在使用一些国外的云的用户,实际都是要自己来关心数据中心是否宕掉,也因此我需要把我的东西部署在全球几个数据中心上,显式的让用户来去做这个事情。那腾讯云在这方面是有什么样的技术来保证的?
陈磊:仅仅说用户显式的去选择,可能还是不能够完美的满足用户的实际需求。用户要主动的去挑选,我要把我的设备部署在比方说上海和天津两个地方,往往是有目的性的。比如说,它可能选择布到上海,是为了针对南方的用户进行分布,或者说它可能布到天津去专门对北方的用户进行分布,我们也有这类开发者它是专门去挑选的。但是,这里面最复杂的技术其实是存储的同步。如果大家都是逻辑Server,或者说Web服务器,那简单的分布其实就够了,但最重要的问题是怎样把存储数据很好做异地同步。
11. 就是跨数据中心的这种?
陈磊:我们现在内部使用的同步中心,目前是通过灰度的方式开放给我们的合作伙伴去用的。我们未来的标准版的CDB是会支持多数据中心自动同步的,所以在数据同步的问题上,可以帮用户解决这些复杂的技术问题,解决后顾之忧。那么用户只要去挑选他合适的点,然后去部署它的逻辑和Web服务器,包括它的软件就好了。
12. 那刚才提到的Container,我们说大家现在都比较关心的一个问题,就是Container的安全性、隔离性到底好不好?包括国外有报道,标准Container是有已知的漏洞的,可能会出现逃逸,如果有人做这个事情的话,会不会影响到其他的用户呢?
陈磊:Container的隔离,我们是做了一些内核的修改。但是我们也没有做到百分之百的隔离。目前看最大的问题,是有部分系统参数的配置是全局性的。那么对这些系统参数的修改会影响到其他的Container。我们采取的方式是禁止用户修改。除此之外Container本身的技术就是一个可以Share的技术,当有些服务超出了它的资源使用范围的时候,它是提供了一些Share的机制的。会不会对其他的业务产生影响,Container本身的技术是说,如果资源不紧缺,你可以多吃多占一点。当资源紧缺的时候,Container会严格的限制你所使用的配额,所以关于这个技术我们觉得是问题不大的。
13. 那腾讯会把对Container相关的安全机制、隔离机制的修改贡献到社区吗?因为我看到最近在内核修改方面,有很多人都对Container提交了很多的patch,腾讯有这样的想法吗?
陈磊:其实我们提交的对内核的修改量,在整个中国来讲,可能就是华为比我们多。我们大概是排第二的,所以我们对内核其实已经提交了很多的patch了,包括Container的一些内容我们已经在提交了。当然还不是所有的我们的修改都有提交,有一些是我们想自己能够更好的验证,给自己更多的时间,以保证我们提交给社区的质量。
14. 我看到腾讯云提供用SVN来部署,为什么不用提供Git的方式?因为可能我是一个Git爱好者,经常宣扬。因为在这个属于2013年这个时代,好像大家新部署的程序大部分的默认选择还都是这个,当时你们这个做技术选型的时候是怎么考虑的?
陈磊:我们的选择其实是参考了用户的意见,我们不是去替用户选,而是让用户来选。
15. 用户投了票是吧?
陈磊:帮我们选,对。我们做了CE(customer engagement),发现其实我们的绝大多数用户,目前还是以SVN为主的,Git我们肯定会支持的。
InfoQ:只是时间的问题,是吗?
陈磊:对,只是时间的问题。
16. 还有一个问题就是在使用云的时候,大家都会用到云数据库,不会自己在搭建一个。那么腾讯在提供云数据库的时候,是怎么保证用户之间的隔离的?在具体的实现上,你们是对数据库进行了一个比较大的修改?还是做了一些其他的事情,基于其他的以及现有的软件,那么性能和安全性又是怎么来保证的?
陈磊:这个问题特别简单,我们给不同的用户不同的instance,就是说我们不会让两个用户去Share同一个MySQL的数据库。从安全和各角度来讲,这样做都是最有效也是最简单的。这些数据库都是架设在云盘上的,它们共享了底层的资源。但是每一个用户自己看到的数据库,是仅属于它自己的,所以不会有逻辑上的互相渗透,或者安全性的问题。
17. 这个还是挺有意思的。因为你如果这么设计的话,那你们也不需要维护自己的一套关于数据库的代码,对吗?
陈磊:不需要。
InfoQ:还是很容易的一个方案?
陈磊:对。
18. 我在网站上,看腾讯云的整个架构,好像目前为止并没有提供块存储的模式,我不知道这个是一个什么样的考虑,是不是有这样的计划?
陈磊:其实已经在灰度了,我们已经有一定量的用户在使用我们的云盘了。我们给客户推出一个产品的时候,是有一个比较长的灰度周期的,因为在推出新产品方面我们是比较谨慎的,不希望推出一个不太成熟的产品给用户带来麻烦。
19. 你们有没有一个什么标准,到了什么样子就可以提供给用户呢?可以具体谈一下这个标准吗?
陈磊:可以的,我们有一个非常具体的流程。首先是在内部业务使用,然后我们会去看故障率,以及发生的故障的种类。实际上就是一种对质量的QA的监控、把控。当我们在内部使用期间,不再能够发现比较有影响的Bug的时候,我们才考虑对外去开放。对外开放的过程是一个非常谨慎的灰度过程,我们会跟那些我们关系很好的,特别愿意原谅我们的客户,去说我们有一个不太成熟的产品。但是在Qzone里面已经用了,在QQ里面也已经用了,你看能不能你也用一下试试? 在试用的灰度期间,我们会给非常深的优惠,有时候是完全免费的。在这期间我们会去看在用户的使用场景里面会不会有问题。我们有灰度的必需的周期,比如说所有的灰度都必须超过三个月。当到达三个月的关键节点的时候我们会Review在这段时间里发现的Bug,也会去Review用户使用的场景,去评估是不是有足够的代表性。如果不够有足够代表性的,我们可能再去增加一些用户,再进行更广泛的灰度。像云盘,我们已经灰度了快半年了。
20. 那还是可以预见到多长时间会有一个这个预期?
陈磊:应该是会在近期,就会完全公开发布。
21. 毕竟是一个非常重要的功能。我们讲到块存储了,跟块存储非常相关就是有一个镜像服务,Image服务。很多人可能都比较关心,国外已经有一些成熟的模式,就是我在云系统上发布我自己的镜像,然后大家可以进行买卖。那么腾讯会不会有镜像服务或者镜像市场的考虑呢?
陈磊:镜像服务我们也正在灰度过程当中,之前也已经给一些游戏开发商去使用了。因为游戏开发商我们知道它对开服的需求非常高,特别是一些用Windows技术的游戏开发商,对镜像技术的需求会特别高。因为他的软件安装过程是需要人介入的,所以我们首先给他们提供了镜像的服务。现在也是在灰度过程当中,预期也应该是在近期就可以开放出来。
22. 我们还知道一个完整的云,不光是有云提供商,还围绕着云提供商有一些周边的生态系统,有好多人在云上做增值服务,很可能是一些比如发邮件,或者是短信服务,这种小的服务。那么腾讯有没有这样的想法,可以让第三方的服务接入进来,并给他们一个很好的成长的空间呢?
陈磊:一定会的,我们做了几件事情。首先我们会提供非常丰富的API,可以去操作我们的云产品。并且我们的API是跟亚马逊的API兼容的。
InfoQ:真的?有多兼容呢?
陈磊:我们还没有做到那么满意,但是应该最终会百分之百兼容。
InfoQ:百分之百兼容,是吧?
陈磊:我们的目标是。我们希望能够把亚马逊上跑的所有的工具都可以在腾讯云上直接跑。
23. 亚马逊是一个特别巨大的体系,你们也要做同样的事情吗?
陈磊:我们可能是以一些主要的服务为主,我们会比较聚焦在我们的一些点上,但是我们提供的服务的API都会跟亚马逊去兼容。
InfoQ:那太好了。听到这么多非常激动人心的消息,我非常看好腾讯云未来的发展,然后也非常感谢陈总今天到QCon现场接受我们采访。