陈磊:非常高兴能够有机会在这跟InfoQ的朋友们进行对话,感谢大家的关注。
陈磊:刚才我在InfoQ的大会上分享的Qzone,它就在使用腾讯云,包括它内部的虚拟化技术,它使用的网络加速技术和存储服务。Qzone所使用的存储服务,跟我们给到我们的客户,腾讯云的客户的服务是完全一样的。
陈磊:是同样的技术栈,而且是同样的服务。比如说Qzone用的CDB,跟我们的客户用的CDB是一模一样的,只是不同的集群,包括软件的版本都是一模一样的,部署方案也都完全一样。
陈磊:除了Qzone以外,QQ、微信,我们的核心业务,都在使用这些服务。就是从整个的技术架构上,我们是一致的。
陈磊:首先说,是完全没有超售的,我们完全没有超卖的机制。的确就像显峰讲的,如果调度方案不合理的话有可能会产生空洞。我们是以资源热点为优先的算法,比如说在我的整个Site里面,当内存资源变成热点以后,那么我会优先去满足用户的内存需求。我会去看哪个资源在目前的使用情况下是最有价值的。因为从整个机房的角度来看,能够正好的把内存、CPU、硬盘资源全都售卖出去,这是不可能的。
陈磊:嗯,因为用户的需求全都加在一起,跟你的资源的容量,是不太可能完全正好的对应上的。所以你要首先去保证最紧缺的资源,保证它的使用的效率,这是最重要的。此外,在我们的整个分配算法里面,也很好的考虑了对空洞的填补和隔离性。因为我们的业务其实是有规律可循的,用户的选择也不可能是千奇百怪的。我们看到的用户的选择主要分为两大类,一类可能对CPU和内存的选择会比较高,就会选择高配置的虚拟机;另外一类可能对CPU和内存的要求不那么高,就会选择相对小的这些机器,会很长尾。那么我们就把长尾和要求高的机型去混布。我们看到的结果是,这些不同的业务所使用的资源本身就各有侧重,其实是一个互补的情况。在资源的售卖上,我们目前是不考虑超卖的。
陈磊:其实也不难判断。因为你有它历史购买和历史使用的情况。对于一个新客户,你大致知道它的行业。比方说游戏,游戏对资源的使用是有一定特征的。虽然每一个游戏开发商,都会有一些细微的差别,但是游戏,特别是现在我们这种网页游戏或者手机游戏,他对资源的要求是很标准的。而且内存对他们来说是一个非常重要的资源。如果是网站,那可能是另外一种资源的配置形式,所以你还是有很多的方法去做一定的预测,当然这个预测有没有可能错?也有可能错。
陈磊:目前我们不做这些迁移。但后面我们会去做。另外就是选用我们CEE的用户,那我们处理就灵活多了。我能够给它两个不同的instance,比如说在不同的设备上,他初始可能使用量比较小的时候,我就只给他两个不同的Container。在它的使用量上来的时候,我们会同步的去扩张这两台Container,当扩张到一定程度了以后,我会发现,原来这台机器空一点,那台机器满一点。那我会在空的那台机器上多给他一些资源,满的那台机器相对少给他一些资源。此外我们可以实施很快的热迁移,Container热迁移速度非常高。
陈磊:嗯。
InfoQ:这是一个比较新的技术,应该说在业界应该是比较领先的吧?
陈磊:嗯。
陈磊:仅仅说用户显式的去选择,可能还是不能够完美的满足用户的实际需求。用户要主动的去挑选,我要把我的设备部署在比方说上海和天津两个地方,往往是有目的性的。比如说,它可能选择布到上海,是为了针对南方的用户进行分布,或者说它可能布到天津去专门对北方的用户进行分布,我们也有这类开发者它是专门去挑选的。但是,这里面最复杂的技术其实是存储的同步。如果大家都是逻辑Server,或者说Web服务器,那简单的分布其实就够了,但最重要的问题是怎样把存储数据很好做异地同步。
陈磊:我们现在内部使用的同步中心,目前是通过灰度的方式开放给我们的合作伙伴去用的。我们未来的标准版的CDB是会支持多数据中心自动同步的,所以在数据同步的问题上,可以帮用户解决这些复杂的技术问题,解决后顾之忧。那么用户只要去挑选他合适的点,然后去部署它的逻辑和Web服务器,包括它的软件就好了。
陈磊:Container的隔离,我们是做了一些内核的修改。但是我们也没有做到百分之百的隔离。目前看最大的问题,是有部分系统参数的配置是全局性的。那么对这些系统参数的修改会影响到其他的Container。我们采取的方式是禁止用户修改。除此之外Container本身的技术就是一个可以Share的技术,当有些服务超出了它的资源使用范围的时候,它是提供了一些Share的机制的。会不会对其他的业务产生影响,Container本身的技术是说,如果资源不紧缺,你可以多吃多占一点。当资源紧缺的时候,Container会严格的限制你所使用的配额,所以关于这个技术我们觉得是问题不大的。
陈磊:其实我们提交的对内核的修改量,在整个中国来讲,可能就是华为比我们多。我们大概是排第二的,所以我们对内核其实已经提交了很多的patch了,包括Container的一些内容我们已经在提交了。当然还不是所有的我们的修改都有提交,有一些是我们想自己能够更好的验证,给自己更多的时间,以保证我们提交给社区的质量。
陈磊:我们的选择其实是参考了用户的意见,我们不是去替用户选,而是让用户来选。
陈磊:帮我们选,对。我们做了CE(customer engagement),发现其实我们的绝大多数用户,目前还是以SVN为主的,Git我们肯定会支持的。
InfoQ:只是时间的问题,是吗?
陈磊:对,只是时间的问题。
陈磊:这个问题特别简单,我们给不同的用户不同的instance,就是说我们不会让两个用户去Share同一个MySQL的数据库。从安全和各角度来讲,这样做都是最有效也是最简单的。这些数据库都是架设在云盘上的,它们共享了底层的资源。但是每一个用户自己看到的数据库,是仅属于它自己的,所以不会有逻辑上的互相渗透,或者安全性的问题。
陈磊:不需要。
InfoQ:还是很容易的一个方案?
陈磊:对。
陈磊:其实已经在灰度了,我们已经有一定量的用户在使用我们的云盘了。我们给客户推出一个产品的时候,是有一个比较长的灰度周期的,因为在推出新产品方面我们是比较谨慎的,不希望推出一个不太成熟的产品给用户带来麻烦。
陈磊:可以的,我们有一个非常具体的流程。首先是在内部业务使用,然后我们会去看故障率,以及发生的故障的种类。实际上就是一种对质量的QA的监控、把控。当我们在内部使用期间,不再能够发现比较有影响的Bug的时候,我们才考虑对外去开放。对外开放的过程是一个非常谨慎的灰度过程,我们会跟那些我们关系很好的,特别愿意原谅我们的客户,去说我们有一个不太成熟的产品。但是在Qzone里面已经用了,在QQ里面也已经用了,你看能不能你也用一下试试?在试用的灰度期间,我们会给非常深的优惠,有时候是完全免费的。在这期间我们会去看在用户的使用场景里面会不会有问题。我们有灰度的必需的周期,比如说所有的灰度都必须超过三个月。当到达三个月的关键节点的时候我们会Review在这段时间里发现的Bug,也会去Review用户使用的场景,去评估是不是有足够的代表性。如果不够有足够代表性的,我们可能再去增加一些用户,再进行更广泛的灰度。像云盘,我们已经灰度了快半年了。
陈磊:应该是会在近期,就会完全公开发布。
陈磊:镜像服务我们也正在灰度过程当中,之前也已经给一些游戏开发商去使用了。因为游戏开发商我们知道它对开服的需求非常高,特别是一些用Windows技术的游戏开发商,对镜像技术的需求会特别高。因为他的软件安装过程是需要人介入的,所以我们首先给他们提供了镜像的服务。现在也是在灰度过程当中,预期也应该是在近期就可以开放出来。
陈磊:一定会的,我们做了几件事情。首先我们会提供非常丰富的API,可以去操作我们的云产品。并且我们的API是跟亚马逊的API兼容的。
InfoQ:真的?有多兼容呢?
陈磊:我们还没有做到那么满意,但是应该最终会百分之百兼容。
InfoQ:百分之百兼容,是吧?
陈磊:我们的目标是。我们希望能够把亚马逊上跑的所有的工具都可以在腾讯云上直接跑。
陈磊:我们可能是以一些主要的服务为主,我们会比较聚焦在我们的一些点上,但是我们提供的服务的API都会跟亚马逊去兼容。
InfoQ:那太好了。听到这么多非常激动人心的消息,我非常看好腾讯云未来的发展,然后也非常感谢陈总今天到QCon现场接受我们采访。