《架构师》2019年11月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

稳定性

接下来,我跟大家分享稳定性。过去二十年,大家都在使用硬件冗余或者通过单点技术突破来解决这样的问题,直到今天,依旧有很多企业在沿用这样的方式。我们的小型机非常稳定,但是通过硬件冗余的方法来做的。那么,互联网公司怎么解决稳定性问题呢?

互联网公司也是普遍采用了一种架构的方式来解决可靠性问题,就是分布式和集群的方式。同时,我们也通过框架、限流、流量预测来解决各种因为分布式问题带来的缺陷。比如双11,我们通过压力测试模拟双11流量,通过架构优化让流量非常均衡。总结起来就是用大量的廉价服务器通过集群的方式解决单个节点不可靠的问题。阿里云上又不一样,因为我们不知道客户业务是什么样子的,客户认为云应该是可以保证数据稳定性和可靠性的,但这是需要购买相应服务才可以享受到的,但客户认为云就是需要具备这样的能力,所以我们今天更多采用的是软件和硬件结合的方式提高单点可靠性。

现在看来,这与过去二十年的目的是一样的,不过解决方法不一样。主要是云计算管理了海量服务器,基于历史数据,磁盘和主板故障时间是可以预测的。当出现故障或即将出现故障时,我们可以进行迁移,客户在这个过程中是没有感知的。就像我们做了支付业务,后面接了蚂蚁支付、微信支付和银联支付,如果其中一个支付出现问题可以切换到另外一个,用户是感觉不到的。云计算也是一样,单纯硬件损坏是没办法避免的,但是通过虚拟化,当一台硬件出现问题可以迅速切换到另一个,道理是一样的。其次,我们结合了互联网架构过去沉淀的一些经验和能力,比如压测的经验、微服务管理的经验、故障演练和诊断的能力,将这些能力进行商品化,企业不需要自己做复杂架构就可以拥有这些能力。

简单总结下来,早期,软件和硬件都提供了单点的稳定性。随着规模的扩张,互联网移动化的来临,越来越多的企业选择通过架构的方式提高稳定性。但是,并不是所有企业都具有这样的能力,云计算通过软硬件结合的方式解决单点稳定性,同时结合了互联网架构整体提高了可靠性和冗余性能力。

我们内部也有过探讨,容器用物理服务器承载是比较好的方式,用虚拟机就做了两层虚拟化。但是,采用物理服务器有些云计算核心的竞争力就没法获取了,一是弹性能力,二是云计算软硬件结合的高可靠性,硬件资源的快速迭代等。因此,阿里云也创新地提出了神龙这样一套架构,通过硬件MoC卡,把虚拟化卸载到MoC卡上面,性能得到显著提升。我认为,容器的最佳载体一定是类似于神龙这样架构的裸金属服务器。一方面可以获得容器的好处,另一方面也可以获得云计算方面的好处。