2016年7月初,ITRS (International TechnologyRoadmap for Semiconductors)发布了也许是最后一份关于半导体工艺的报告。基于硅的半导体工业在历经五十余年的辉煌后,逐步走向尽头,基于硅的晶体管尺寸(Physical Gate Length)将可能在五年后在10nm处终结[1]。我们继续从理论上探讨晶体管能否到达5nm愈显苍白,芯片在大规模量产时使用5nm日趋渺茫。
在实验室早已取得成功的7nm技术,前景没有想象中乐观。基于性价比的考虑,没有足够商业利益驱动的7nm技术,面临着无法大规模产品化的现实。南美蝴蝶翅膀几次微不足道的扇落,足以使得继续在刀尖上行走的5nm与7nm技术,跌下神坛,粉身碎骨。
摩尔定律已正式结束,但永存于世间。
图1‑1摩尔定律的终结[2]
在世界范围内,对硅半导体的材料科学,制作工艺,有能力也有意愿继续的厂商可能只留下了Intel,Samsung,TSMC与Global Foundries。在近期或者在不久的将来,或许中国为了完成世界工厂的巨大转型,将接过半导体生产制造的旗帜,使其更加廉价,使其因为更加缺乏必要的盈利以支撑整个产业链的持续发展,维系也在终结这个行业。我继续悲观地维持在几年前的判断[3],基于硅的半导体工业不可或缺,也不再重要。
1.1 谈计算
缘起于上世纪四十年代的冯诺依曼体系等待着最后一根稻草。至今处理器的设计者再也无法按照自身的理念决定自己的设计方向,当这些处理器的设计者不知道该做什么合适,而转身去专注于Cache、内存与I/O通路时,基于冯诺依曼体系的传统处理器事实上已经结束。掌握用户场景与应用的厂商目前是处理器真正的设计主导者。定制化时代不再是多年之前的预判[4],而是已然来临。
半导体与传统处理器的停滞不前,不会结束人类对于硅的依赖,在短期内尚无任何材料能够完全替代硅。应用对于硅的需求依然明确。在一分钟内,Youtube将至少接收长达100个小时的视频文件[5];在Facebook上,每天有40亿次视频点击播放[6]。这些应用需求将通过网络,到达各类服务器,并从存储器中获取或者写入数据。在计算、网络与存储这些基础架构中,硅半导体依然占据主导地位。
神奇的半导体硅改变了人类历史的发展轨迹,也几乎走到了尽头。近半个世纪以来,硅一直有互补品,如砷化镓GaAs与氮化镓GaN,这些在大功率与高频领域已有着重大应用的半导体材料无法取代硅,基于二硫化钼MoS2和碳纳米管CNT(CarbonNanotube)的晶体管可以将Gate Length做到1nm[7],其产品依然处于实验室阶段,用其替代硅依然停留在论文的纸面上。硅工业的上限制约了整个IT基础设施行业前进的脚步。
在计算领域,被软银收购的ARM已经难以对x86处理器带来持续的压力。在手机处理器上取得了长足进步的苹果、高通、三星与华为,依然难以在近期在服务器市场上对Intel带来实质性的挑战。许多ARM服务器在SPECInt的测试中宣称已逐渐接近了x86处理器,却在有意无意的忽略着一个显而易见的事实,这一代的服务器,甚至是手机处理器,都不应该继续关注SPECInt与SPECfp这类单纯比拼计算性能的基准测试。
目前处理器的设计中心已经转向I/O与Memory Hierarchy通路的建设。在Intel的Broadwell-E处理器的Die Map[8]中,10个处理器微架构(Core)合在一起所占的比例已经不算太大,Memory Hierarchy与I/O占据了大多数的Die资源。
图1‑2 Intel的Broadwell-E处理器的Die Map[8]
在一个处理器微架构中,运算单元所占的比例几乎可以忽略不计,在处理器微架构中,依然是种类繁多,各类数据缓冲占据着主导位置。事实上,除了模拟器件以及与模拟器件强相关的芯片外,在多数芯片Die Map中,缓冲都占据着关键位置。至今计算领域的多数应用对处理器的使用都是访存密集型。
处理器的设计初衷是为计算服务,但是在今天的许多应用场景中,处理器所承担更多的任务是通过各类I/O设备获取数据;这些数据在穿越MemoryHierarchy后抵达CPU的核心部件;CPU核心部件在精确计算着心跳的过程中,尽可能地快速处理这些数据,而后将其再次转发至远方。和密集计算相关的任务,已经通过各类硬件加速引擎,GPU或者专用ASIC实现。
我们无法直面一个简单而令人沮丧的事实,在处理器运行着的各类协议栈的代码组成中,用于实现快速路径的代码可能不超过1%;99%以上的异常复杂的代码可以在99%以上的时间段内安然入睡,其存在只为等待着可能的异常出现。
不是因为这些多如牛毛的异常需要处理,也许我们这个世界已经不再需要通用处理器了。从纯计算的角度上分析,各类硬件加速引擎,GPU、FPGA或者专用ASIC,远胜今日的处理器,但是这些加速引擎在面对成千上万种异常时无能为力。在移动互联网厂商的数据中心中,处理器存在的最主要目的是对各类数据流进行分析、组装、打包后发往下一站。
在这些应用场景中,处理器存在的首要原因依然不是其高效的报文转发能力,而是能够应对在报文处理过程中出现的各类异常。在数据中心中,处理器存在的主要作用是能够相对高效地处理数据报文,并能对各类异常进行查漏补缺的复合体。不仅在计算领域,在IT基础设施的网络与存储领域,通用处理器的使用方式依然如此。
能够对通用处理器带来挑战的GPU,前景没有想象中乐观。从设计策略上看,GPU与通用处理器的最大区别在于对异常的处理。GPU专注极致计算,尽最大的可能提升TLP(Thread-Level Parallelism),而忽略异常处理;通用处理器需要考虑异常状态的处理,以追求更大的适用性。
在不同设计策略的引导下,GPU走出了一条与通用处理器迥异的道路。Nvdia的Pascal GP100由最多可达6个的一组GPC(GraphicsProcessing Clusters)构建;这些GPC共享同一个4096 KB的L2 Cache;通过8个512位的MemoryController对外交换数据;使用高速的NVLink接口与其他GP100互联;最后通过PCIe 3.0总线与通用处理器进行连接[9]。
图1‑3 Nvidia Pascal GP100 GPU组成结构[9]
在每一个GPC中,最多可以容纳5个TPC(Texture Processing Clusters);每个TPC中集成两个SM(Streaming Multiprocessors);每一个SM包含64个CUDA和4个TU(Texture Unit)。其中最基本的CUDA核心和TU数目分别可达3840与个240个。GPU的Die Size可达610mm2,所能容纳的晶体管数目可达153亿个[9]。
GPU与通用处理器,是设计者在面对有限的Die Size,做出的不同选择,以适用于不同的应用场景。由数目繁多的运算单元所组成的GPU,其组成结构不比通用处理器复杂,反而更为简单。但是这个理论无法解释,Intel可以做出更为复杂的通用处理器,却在高端GPU领域上反复折戟沉沙;也无法解释,服务器级处理器的设计难度超过手机处理器,Intel依然屡战屡败。
通用处理器需要处理各类已知与未知的异常,在进行计算的同时,不断地处理各类分支跳转语句;随时准备应对各类中断事件;与此同时需要具备大规模的数据吞吐能力;也因此通用处理器需要一个规模庞大的通用操作系统。至今,计算已是通用处理器中的一个微小组成模块,通用处理器中最大的模块,是各类Cache和与其紧密联系在一起的MemoryHierarchy。
GPU聚焦的计算世界相对单纯;所处理的数据规整;数据间几乎没有太多的依赖;不需要管理外部设备,不需要处理各类中断与异常,也不需要一个操作系统。从GPU的发展历史上,可以发现,GPU所处理的图像数据并不具备非常强的Locality特性。在GPU中,Cache存在的主要作用并不是为了保存需要反复使用的数据,而是为了弥补GPU内部运算部件与外部DRAM之间的访问延迟。
在GPU中,存在与通用处理器类似的流水线,Nvidia的GP100中的基本组成模块SM,本身就是也是一个流水线,这个流水线也被称为GraphicsPipeline,在不考虑光栅化处理的场景下,Graphics Pipeline也被称为Rendering Pipeline。
图1‑4 Pascal GP100中SM的组成结构[9]
在Graphics Pipeline中,依然包含与指令流水线中类似的概念,如指令Cache、Dispatch Unit、Scheduler、Register File。也与指令流水线有很多不同之处,Graphics Pipeline不包含通用处理器用于数据相关性检查与乱序处理的ReservationStation与ROB(Reorder Buffer)。在Graphics Pipeline中的ALU充斥着大量的CUDA Core,并设置了专门的TMU(TextureMapping Unit),以便于对图像数据做进一步处理,如旋转、缩放、扭曲等改变尺寸的操作。
这些表面差异并非GPU的Graphics Pipeline与通用处理器指令流水线的最大区别。GPU与通用处理器的差异依然是设计策略上的区别,在于异常与中断的处理策略上。从处理的数据源上看,GPU与通用处理器的最大区别在于所处理的数据是两维或者多维;从解决具体问题的层面上看,通用处理器侧重于对问题的精确求解,而GPU侧重于获得一个相对模糊的答案。从计算的顶层结构向下俯视,GPU与通用处理器依然遵循冯诺依曼的设计哲学。
存储器瓶颈制约着通用处理器的发展,也同样制约着GPU的进一步发展。主要用于计算的GPU,继续提高TLP(Thread-Level Parallelism)不是提高GPU整体效率的有效方法。与许多人的预估并非一致,GPU继续提升TLP,非但不能因为其高并发隐藏了存储器延迟,而且对存储器系统带来了更大的压力[10]。GPU没有脱离冯诺伊曼体系,只是一种不同的处理器实现方式。
以冯诺依曼体系的提出作为一个重要的分水岭,计算大致分为三个阶段。第一个阶段,科学家们用当时较为复杂,目前看来简单的电路逻辑,搭建各类定点与浮点算法,尝试精确获得某类问题的答案;冯诺依曼体系提出至今这个阶段,所解决的问题是从模糊到逐步精确,直到今天的举步维艰;在今天,我们将基于一维的定点与浮点算法推向前人无法企及的高度之后,开始漫长的等待,从逐步精确到模糊而不可知。
人类的努力可歌可泣,他们在不知道如何选择是正确的时候,做出从精确再次重归模糊的选择,重拾在上个世纪末被暂时搁置的人工智能,引入了一个新的词汇深度学习,开始了从一维空间的接近精确到多维空间模糊决策的探索之旅。目前深度学习的理论基础还显薄弱,这一代的计算平台,无论是通用处理器或者GPU还可能都不是一个合理的计算平台。
这些事实并没有阻挡,深度学习领域对GPU的严重依赖。如果仅从今天人类掌握的技术中做选择,GPU比通用处理器更加适合模糊计算这个领域。GPU从诞生之日起,就没有追求精准的计算结果,设计目标是其处理结果能够满足人眼模糊的分辨率。Alpha Go战胜李世石,在弈城网与野狐网上横扫天下,没有保证每一步棋都是绝对最优,只需保证每一步棋比人类能构想的最优稍胜一筹。至今利用深度学习的所有已知成果,甚至无法帮助我们精确地确定,某一个指纹或是某一个面孔一定归属于某一个人。
似乎在深度学习领域,我们很难得到一个精确结果。这些没有实现,且有机会实现的目标,为人类的发展提供了新的希望。在很多情况下,人类所追逐的是希望,而不是最终的结果。在内心深处,我并不情愿这一次的探索之旅成功。因为每当出现一个领域,其模糊决策能够比人类更加接近精确时,在这个领域,机器都将战胜人类。
1.2 谈网络
计算与通信与人类文明形影不离。不同的时代赋予了计算不同的内涵;也赋予了通信不同的内涵。在每一个时代,计算与通信却总是密不可分,相辅相承。计算离不开网络,反之亦然。在如今的时代,计算领域无法突破冯诺伊曼体系,通信领域面临着香农极限。几乎在同一个时间点起步的IT基础设施的两大领域,计算与通信,也几乎在同一个时间点止步不前。
在上世纪的四十年代末期,近代IT历史上,出现了两个对电子与电信行业的未来产生深远影响的事件,香农发现了以自己名字命名的三大定律。香农的三大定律奠定了信息论与编码理论的基础,也给人类带来了一个新的词汇比特(Bit)。与此同时肖克利发明了晶体管,晶体管的出现极大促进了计算与通信的发展。
晶体管很快应用在电话系统中,也出现在计算领域。集成电路的出现进一步加快了现代的计算与通信系统的演进。在Intel的第一个处理器4004正式推出之后,以太网如影随形。计算与网络两大领域,在硅工业的持续进步过程中,在自身与自身的剧烈碰撞与近亲繁殖中,持续扩展着各自应用边界,之至今日的云基础设施。
1973年,施乐的BobMetcalfe发明以太网,之后DEC与Intel的加入极大促进了以太网的发展,以太网的第一个版本DIX(DEC IntelXerox)V1于1980年正式发布[11]。以太网在陆续战胜FDDI(FiberDistributed Data Interface)、ATM(AsynchronousTransfer Mode)等一系列竞争者之后,一路绝尘,在局域网领域,建立了不可匹敌的以太帝国。
上世纪末出现的IB(InfiniBand)试图对以太网发起挑战,却在近期无法看到动摇以太帝国的丝毫可能。IB的V1.0版本出现在2000年,设计野心是替代处理器系统的局部总线PCI,互联网中大规模应用的以太网,与SAN(Storage Area Networks)中的FC(Fibre Channel)。IB本分的应用依然在大规模处理器集群应用中。
IB从诞生起的十年中备受磨难,Intel不会坐视IB与PCI Express总线竞争;比IB诞生更早的FC在SAN领域已根深蒂固;无所不能而且无处不在的以太网最后还是将IB挤压至其本分的应用领域,集群服务器。TOP500处理器一直是IB不能失守的最后阵营。IB是学术界的宠儿,在对高性能计算有所追求的领域,IB在许多应用场景中凭借着出色的性能与较低的延时胜出,而在HPC (HighPerformance Computing)和高性能云计算领域得到的广泛应用[12]。
IB架构唯美,干净,一秋若水。这个一秋若水缘于在其漫长的发展过程中,一直被忽略也乐于被忽略,没有经受过多的干扰,二十几年前,我第一次去喀纳斯湖,除了震撼外,体会的是寂静而后的肃杀。偶尔为之,别样风景。人的存在会打破自然的静谧,也带来勃勃生机,缺少万物之灵的景色,难抵极境。我喜欢现在这样的,有三两好友陪伴着的喀纳斯。因为人的存在,风景格外精彩。
以太网精彩世界源自于诸人参与的熙熙攘攘。InfiniBand很少有机会去介入而分享这份精彩。纵观IT史册,能取得流行而大获成功的技术不会唯美,多数是傻大黑粗,成本低廉。Unix的设计哲学KISS (Keep It Simple and Stupid)在今天无限接近真理。有瑕疵的丑战胜无缺的美发生在此时此刻,而且在不断的演绎进化与升级。
以太网从诞生之日起至今,从不完美,与优雅ATM (AsynchronousTransfer Mode)相比,始终是下里巴人,直到把阳春白雪的ATM彻底赶出历史舞台。如果IB的所有优点,都能通过以太网进行应用场景微调,或者上层协议补充,IB依然还叫IB,无法更近一步。以太帝国是有日出不穷的缺陷,但是以太帝国还是以太帝国。
私有数据中心的兴起,使得以太网与其身后的Ecosystem愈显臃肿。在一个数据中心所使用的传统交换机与路由器中,大多数软件协议栈并没有太多的用武之地,其中许多协议是为了解决广域网存在的各类问题。在广域网技术持续发展,取得显著进步的同时,也不可避免的积累了一系列问题,在解决这些问题的过程中,更多的新协议在持续产生的同时,必须要兼容旧协议。不同厂商因为各自的利益,所提供的网络设备在互联互通上并没有想象中完美。
以太网的使用过于广泛,这个广泛在带给以太网无限空间的同时,也带给设计者不小的麻烦。以太网所面对的问题绝不是TCP/IP协议栈的低效,存储转发模式带来的延迟,不是吞吐量不足,不是流控机制,也不是延时。这些问题在理论上全部可以解决。
以太网所面临的主要问题在于自身的使用过于广泛,参与者众多,Ecosystem过于强大。这使得以太帝国在长期以来只能有变化而无真正变革。治大国如烹小鲜,基于以太网的网络基础架构设计者,对任何一个微小调整都会陷入“什么是权衡,什么是掣肘,什么是不得已,什么是怎样做都是错的”这样深重的哲学思考中。
Internet网络组成的复杂程度已经不能用任何词汇去描述。从最末梢的移动设备,引申到2G、3G、LTE (Long Term Evaluation)、IP RUN到核心网;从最末端的PC机,引申到Wi-Fi、交换机,各级路由器到骨干网。即便我们不去讨论这些*的网络基础设施这样的深重话题,一个大型跨国公司的网络拓扑结构也足以复杂到令人无法直视。
网络设备价格始终居高不下,但是对于许多应用场景而言,这些昂贵的网络设备所提供的多如牛毛的Feature,除了必不可少的硬件通路部分,只有部分功能真正有用。在交换机与各类路由器中,硬件成本所占比例很低,其售价的多数是为了补贴软件上的投入。这些盈篇满籍的软件投入,所体现更多的是商业利益,而非技术驱动所带来的需求。
移动互联网的兴起重置了网络基础设施的发展轨迹。在承载着数以亿计用户互联网应用的背后,是庞大的数据中心。在互联网数据中心的野蛮成长过程中,触发了云计算与云存储技术的诞生与发展,云时代的到来对网络基础设施提出了新的挑战。来自这个领域的精英,首先面对的挑战是理解已有的网络基础设施。摆在这些人面前的第一道难关不是温习基础的网络经典著作,而是去理解在他们眼中,毫无道理,不知所云,只能死记硬背的几千种RFC与ITU制定的协议。
RFC与ITU标准已多如牛毛,从TCP/IP到OSPF、BGP、IGMP、STP多达几千种。这些协议无法消除不同提供商的网络设备,在数据交换层面上的统一;在控制与管理层面每家厂商的做法更加不会相同。最为重要的是,传统的交换机与路由器并不能满足一些新增的业务需求。
一个新增协议,从制定、讨论、发布到实际部署的周期之长,使得最有耐心之人亦无法忍受。这些协议,在很多场景下并无至深的理论基础,所遵循的只是质朴的丛林法则。
人类文明得以持续向前的动力,在某种程度上,是因为总有一些不安现状的精英们,敢于持续地挑战现有的丛林法则,并创建新的秩序。这些精英通常是近乎强迫症的完美主义者。他们的病态只有两种解药可救,一是融入旧的*用时间与精力换取空间,或者另辟蹊径。待到直面成千上万,不知所云的网络协议时,他们最终选择另辟蹊径。
基础网络设施在经历了最初爆发期之后,步履蹒跚。网络运营商与设备制造商,在各种商业利益,甚至是在国与国的利益间周旋,腾挪空间有限,这种空间有限所带来的直接后果是各种类型的低效,这一低效使得在这个行业的精英进一步流失,使这个行业事实上止步不前;也进一步使得这个行业持续发生着各类并购重组,使得从事这个行业的公司总量在逐步缩小。
一个曾在华为数通的朋友与我讲,我们打败甚至打死了一个又一个对手,却也每况愈下。我的回答是你们熬死了一个又一个对手,对手是自己打败了自己,他们的精英不是英雄迟暮,就是转行做了其他事情,只有你们坚持了下来。这种坚持对这个产业是一种维持,也使得依靠自身驱动带给这个产业的创新乏善可陈。
这些问题使得SDN(Software Define Network)的出现顺理成章。我们很难将SDN定义为一种新技术。从上世纪七八十年代至今,IT基础设施始终处于高速螺旋的上升阶段,我们在并不算长的四十年间,在同一片领域完成了多次迭代,以至于在信息科学领域,几乎很难再次出现诸如Shannon的“A Mathematical Theory of Communication”这类革命性文章。SDN并不例外。
2007年,MartinCasado在他的博士毕业论文《ArchitectureSupport for Security Management in Enterprise Network》中,提出目前的企业网规模较大,运行着各类网络应用与协议栈,对网络安全配置管理带来了一系列问题。在这些企业内,网络安全策略由复杂的路由、桥接策略以及ACL表、包过滤等机制组成,导致整个网络管理的复杂性,并带来的一些网络安全问题。
为此Martin Casado提出了一种理想化的网络架构,称作SANE解决这些问题。在SANE中,控制器通过其分发能力对请求转发的流进行授权,SANE交换机仅仅负责包的转发。SANE介绍了一种全新的网络分层,并且该设计可以很容易扩展到几十甚至几百个网络节点[15]。
我不认为当时的Martin Casado能够真正理解这个世界的基础网络设施可以复杂到何等程度,强大如Stanford这样的世界级院校,搭建一个诸如Intel这样跨国企业的网络环境也很困难,更不用说运行其上承载的各类应用。也许当时的Martin Casado只是认识到了这些网络的复杂性,见识到了多如牛毛的网络协议栈与诸多术语后,决定不再去理解,而另辟蹊径。
在此后的第二年,Nick McKeown et al. 在ACM SIGCOMM上发布了一篇题为《OpenFlow: enablinginnovation in campus networks》[16]的论文,正式提出了OpenFlow的概念。这两篇论文宣告了SDN的诞生。
SDN诞生后,这一新型的网络设计框架首先得到了互联网厂商的热捧。2011年,Google、FaceBook、Microsoft与Yahoo等厂商成立了ONF(OpenNetworking Foundation),聚焦于OpenFlow技术标准[17]。2012年,Linux内核集成了OVS(Open vSwtich)[18]。2013年4月,以思科为首的网络厂商如梦初醒,成立ODL(OpenDayLight),致力于开源的SDN控制器框架的实现,这个框架的名称也被称为OpenDayLight[19]。
思科类传统网络设备提供商的参与,在某种程度上极大促进也极大制约了SDN的进一步发展。网络设备提供商的参与,使得SDN技术有机会进入国家层面的网络基础设施领域;也因为这些既有利益的获得者首先也是既有投资的保护者,他们的参与使得SDN技术在遵循商业原则的前提下在迟钝且平缓的演进,不再是一个剧烈的变革。
即便如此,SDN的发展依然超乎了Martin的想象,以至于Martin在回答什么是SDN时,总是在回答“I actually don't know whatSDN means anymore, to be honest”。或许Martin认为,SDN在容纳着各类不完美的不断前行中,已物是人非,偏离了至清至澈的论文轨迹。
2016年2月,Martin Casado离开VMware加入著名的风险投资公司Andreessen Horowitz并成为合伙人[20]。如同Andy Robin离开Android,这些创始人的离开无论是因为什么外因,最重要的内因依然是,他们认为在这个领域他们已经完成了历史使命。或者说在Martin Casado的内心深处,SDN尚未开始,就已经结束。
SDN所解决的最重要的问题首先是解耦,分离底层硬件与网络操作系统。无论是思科的IOS (InternetworkOperating System)还是华为的VRP(Versatile Routing Platform)都是耗费了成千上万人年的产品。我们在购买这些传统路由器的时候,都在为这些人年埋单。在多数应用场景,我们所购买的路由器使用的仅是IOS和VRP极少数功能。虽然IOS和VRP在尽最大可能的包罗万象,依然无法解决所有问题,一些用户的自定义需求依然无法得到满足。
通常网络设备在逻辑上分为控制平面(Control Plane)和数据通路(Data Plane)。其中控制平面的主要功能由两大部分组成。一是设备硬件资源的维护,包括网络端口状态的扫描和系统的初始化与监控等;二是运行网络协议,如BGP、OSPF、ISIS与ARP等。网络设备通过运行这些网络协议,生成用于数据通路的各类查找表。
网络设备的数据通路则使用这些查找表,尽最大的可能性快速进行报文转发。对于一些交换机和路由器以外的网络设备,如 DPI、防火墙、Load Balancer类设备,数据通路的设计稍有不同,这些设备偏向于根据控制平面配置的策略决定如何处理网络报文。
在 SDN 理论正式定型以前,每个网络设备同时具备控制平面和数据通路。对于性能要求高的企业级设备,控制平面采用的是专用 CPU,以及围绕该 CPU 的存储、总线、和外设来实现。数据通路多采用专用ASIC,并作为一个外设连接到控制平面的 CPU。
对于家用级别的设备,如Wireless Access Point而言,数据通路和控制平面往往做在同一个以嵌入式 CPU 为核心的系统中。Linux是最常见的针对家用设备的操作系统。控制平面的程序,如 DHCP服务器、Web 服务器、Iptables、NAT等运行在Linux的用户层。Linux 的内核负责报文转发。在这样的小设备中,Linux 用户层和内核之间的 Netlink,有时也加上一些POSIX API做辅助,构成了数据通路和控制平面的通信方式。
SDN 的核心思想是进一步分离网络设备的数据通路和控制平面,并定义两者之间通讯的标准。这个思想所带来的优点很多,首先是数据通路设备和控制平面设备可以分别演化;其次是在不同的应用场景中,对数据通路的性能和控制平台的 Scaling 要求各有不同,设计者可以针对应用环境来*搭配。对于网络设备的用户和运营商来说,更为关键的一点是 SDN 体系结构减轻了对硬件厂商的依赖。
在SDN出现之前,用户购买的网络设备,由于每个厂商设备的配置方法不同,其上控制平面的协议设计并不相同,彼此间很难做到完全兼容。这使得用户在初期选定了某个厂商的产品,后续更新的时候有时也必须继续选择该厂商的产品,否则前期网络运营获得的经验和固定下来使用方式都将失效。
SDN把数据通路设备仅仅定义为一个必须支持公开接口的黑盒子,而控制平面的程序通过这个公开的接口对数据通路设备编程。采用这种方法,传统硬件厂商提供的一系列控制平面的程序失去了作用。用户只需要维护自己的控制平面程序就可以保证网络运营的连续性。数据通路设备可以随时随意进行更换。
SDN引入了Flow Table。在传统的交换机与路由器中,每支持一种新的协议,不是在固有表中添加表项,就是添加一张新的表格。网络世界经过了几十年的发展,在传统路由器与交换机中已经积累了过多的表项。Flow Table的引入在提高了端口控制灵活度的同时,对所有表项进行了归一化处理,这也使得SDN网络有机会从逻辑上实现集中管理。SDN使用的集中管理策略,与传统网络设备采用的自适应管理,原本谈不上孰优孰劣。只是事物发展螺旋上升中的不同状态。
SDN的出现,依然为本已死气沉沉的网络基础设施带来了一丝活力,SDN在持续着辉煌的同时,也在按照几乎不可控制的态势引入更多的功能。但是当我们从整个网络基础架构的更上层俯视SDN时,却很难体会得出SDN是一次颠覆性变革的结论。整个网络基础架构并无根本的变化,只是一次管理策略的调整与重构,路由器与交换机内部基础的缓冲管理与算法几乎丝毫未变。
事实上SDN的前缀软件定义SD (Software Design)更加令人关注,在SDN崭露头角后不太长的一段时间里,各类软件定义风起云涌,有软件定义云计算,软件定义数据中心,软件定义存储,软件定义基础设备,直到Software Design Everything。在这些种类繁杂的软件定义中,恐怕最有共性的一件事情莫过于把之前配置各类设备所使用CLI(Command LineInterface)方式,换成了RESTfulAPI。
本已停滞不前的x86处理器一夜间重回中心,似乎x86处理器重新强大到了无所无能。NFV(Network Function Virtualization)的提出,进一步神话了x86处理器与其下虚拟化部件。却在有意无意中无视x86 XEON处理器自从Nehalem起,在微架构层面的创新已乏善可陈的事实。即将大规模推广的KabyLake仅在计算层面上,与Nehalem相比并无质得提高。x86处理器在计算领域完败于GPU之后,Kaby Lake所做出的选择是重归这个公司的起点,存储。
1.3 谈存储
从人类有语言之日起,吟游诗人用歌谣颂扬着传说;文字出现之后,我们使用甲骨文与纸张记载着历史;每一次新材料的出现,人类总试图将其与存储联系在一起,各类磁介质、硅介质,直至坚硬的蓝宝石介质。至今,存储世界已历经五千余年。在IT基础设施的三大领域,计算、网络与存储中,如果说计算在比拼智慧,网络在比拼着记忆力,存储就是在比拼着一份执着。
存储对于稳定性的要求压倒了一切。在一个存储系统的所有Feature中,稳定性是1,其他的所有特性是其后的0。如果一个存储系统谈不上稳定,那么其身后的所有特性都将无用武之地,一个存储系统所追求的首要目标,永远不是速度、带宽、延时与IOPS。而证明稳定性的方法无他,唯有时间的磨练。这决定了进入存储行业是参加了一场没有终点的马拉松赛跑。
在IT基础设施的三大领域中,存储行业之执迷守旧,刻骨铭心。计算与网络的世界虽然精彩,但是人类文明的传承,最终还是依靠那几页纸。始皇帝的焚书坑儒,使华夏殷商前的文明成为传说;亚历山大的几次大火,让古埃及文化在人类历史上的展现仅剩下了几座金字塔。人类已无法再次忍受数据的大规模丢失。
这种无法忍受对存储系统的稳定性提出了苛刻的需求,也使得证明过自己存在价值的存储设备极难被淘汰。纸张依然在使用中,至今尚无退出历史舞台的征兆。也许是因为杰文斯效应作梗,在全世界大力提倡并实施无纸化的今天,纸张的使用有增无减。单纯从稳定性和数据保存的持久性上看,当代的多数存储系统还远不如墨水与纸张。
曾多次被预言很快退出历史舞台的磁带,依然活跃在今天的云归档基础设施中,NAND Flash与最新的存储类内存SCM(Storage-ClassMemory)没有终结硬盘。存储行业是最苛刻也是最宽容的领域,进入门槛极高也极难被淘汰。移动互联网在近期尝试的各类无孔不入的颠覆,并没有对存储这个古老的行业带来质的冲击。近期出现的SD存储远没有确立自己最后的存在。
在移动互联网爆发之前,世间没有任何IT基础设施能够满足其对于超级高并发的需求。这使得以Google、Amazon、FaceBook、包括中国的TAB在内的移动互联网厂商,在满足自身需求进行的快速迭代过程中,创建了一套计算、网络与存储混合的IT基础设施框架。Wikibon将这个正在使用的,基于移动互联网的IT基础框架,统称之为ServerSAN。
ServerSAN是近期软件定义存储各种概念的合集,具备计算、网络、存储与服务器虚拟化功能,几乎包罗万象。ServerSAN最重要的两个子集是虚拟化计算与分布式存储层。在云计算时代,传统的IOE架构很难适应弹性扩展要求与高并发而举步维艰。这使得世界上几乎每一个角落的移动互联网厂商都在去IOE,并不限于中国*。Wikibon对ServerSAN的发展寄予厚望,在2016年提出了一个依然激进的路线图。
图1‑5 2016年Wikibon对ServerSAN的预测[21]
Wikibon坚信Server SAN在未来将逐步取代传统的存储设备,包括SAN、NAS与DAS,但是也将E3S(Enterprise Server SAN Storage)的年复合增长率CAGR(Compound Annual Growth Rate)从2015年预测的44.2%剧烈的下调至22%[22]。显然,这个增长还是一个非常激进的数字,也很显然Wikibon的评估充满变数。
图1‑6 2014年Wikibon对ServerSAN的预测[22]
硅工业的事实停滞影响了整个IT基础设施行业,也使得与这个行业相关的多数产业很难获得两位数以上的CAGR,在这个大背景下,整个IT基础设备进行的依然还是此消彼长的零和游戏。ServerSAN与之前出现的HCI (Hyper ConvergenceInfrastructure)是计算,是网络,还是存储,还是三者皆非?ServerSAN自身到底是什么?
Wikibon从未给出过Server SAN的精确定义,这种不精确为Wikibon带来的最大优点是,其观点很难出现错误。Wikibon之外的组织也没有给出过Server SAN的精准定义。相比较而言,只有H3S(HyperscaleServer SAN Storage)的定义相对较为清晰,Google、Facebook、Amazon、TAB这些移动互联网厂商正在使用的,自产自销的IT基础架构即为H3S。
剩余的存储本质可以归为一类,无论是传统的企业级存储或者是E3S。E3S与传统的企业级存储可以在文字游戏中转化。图1‑5中的各种数据也许很容易得出,首先计算存储直至2027年的CAGR,并以此获得存储市场的总容量,之后计算移动互联网厂商的自产自销,剩余的两部分使用文字上的技巧进行划分即可。
E3S的定义事实上可有可无。本质上,ServerSAN所面临的问题是,移动互联网所使用的H3S架构如何真正进入一个企业内部。对于多数企业,不存在移动互联网厂商追求的超高并发度和弹性扩展需求,也不需要规模如此庞大的IT基础设施;H3S的维护者是昂贵的研发工程师,而不是普通的获得几个认证即可从业的IT工作人员。
ServerSAN架构需要在企业中找到适合的应用,找到用户真正使用ServerSAN而抛弃传统存储架构的原因。如果仅是因为传统存储厂商不情愿使用Scale Up方法向上扩展存储,而导致传统存储的价格居高不下,我并不认为ServerSAN找到了自己的生存空间。诸多ServerSAN厂商提供的产品,就其技术上的合理性而言,是否真正超过了双控盘阵列这个历尽沧桑的设计。
我们无法忽视绝大多数移动互联网厂商使用的H3C架构,依然停留在二层交换机连接着的廉价PC机的组成结构中。在移动互联网快速演进的时代,这些H3C架构主要在为移动互联网的应用,更为准确的说是超高并发访问服务。Google、Amazon、Facebook与TAB这些厂商从解决共同面临的超高并发访问处入手,在解决各自面临的不同问题的过程中,迅速差异化。至今,现有移动互联网IT基础设施的H3S架构,最大的特点是任意两家的H3S架构间并无相近之处。
移动互联网厂商所进行的大规模工程化而后逐步形成的H3S,设计之初,只为解决自身应用的一个或者几个问题,所构建的基础设施,从全局视觉下观看,遍体鳞伤。事实上,几乎任何一个存活超过十年的大型IT基础设施,都是遍体鳞伤,在无限追求完美的设计者心中,都有强烈地将其推倒重来的冲动。也许这些H3S在等待着下一次轮回,直到世界尽头。万生终有一死。
已然如此的H3S架构,直接将其通用化,并大规模替换现今企业正在使用的IT系统的前景,没有Wikibon想象中乐观。如果准备进入企业市场的超融合架构,依然基于H3S使用的二层交换机组合大量的廉价PC的设计理念,不管是披着HCI或是ServerSAN的外衣,依然会面对绝大多数企业没有大规模并发、高度弹性扩展的业务需求的这些事实。
即便如此,国内外还有许多初创公司涉足ServerSAN这个领域。很多打着ServerSAN旗号的产品,仅是从Github下载若干开源软件,之后进行简单的排列组合之后,再加上一个管理界面。许多准备进军这个广阔的企业级存储市场的初创公司,真正的技术含量甚至只有一个华丽的用户界面而已。
H3S和E3S在架构上的合理,可能远不及几十年前的Supercomputer。在多数Supercomputer中,处理器与I/O设备独立组成两张网络,之后这两张网络采用某种拓扑结构进行连接,分离计算节点与I/O节点,以便于处理器访问I/O时获得最短的访问延迟与最大的访问带宽。但是这种结构在十几年前,在移动互联网呈爆发式增长的前夜,并没有被主流的互联网厂商采纳。
在那个年代,没有太多的移动互联网厂商真正关心所采用IT基础设施的绝对合理性,而是重点关注着业务的高速推进和与其密切相关的超高并发访问。移动互联网厂商当时所追求的是用最快的速度,不是最完美的IT基础设施解决所面临的问题。有些互联网厂商尝试过IBM在银行系统中使用的Mainframe,Mainframe的居高不下的价格并不是被他们弃用的最主要的原因。
搭建IT基础设施的首要目的是为应用服务,Mainframe与SQL数据库的组合没有解决移动互联网应用对高并发访问的需求,迟钝的售后服务无法满足高速推进的互联网应用。这使得移动互联网厂商决定搭建一套全新的系统。对未来的茫然,使得他们选择了务实的,最易于重构系统也是最易获得的,基于以太网与PC机的系统。
几乎所有互联网应用都对数据库有着重度的依赖。传统的SQL数据库不仅价格昂贵,可扩展性差,而且无法满足移动互联网应用所要求的高并发,随着移动互联网的蓬勃发展,这类数据库迅速在移动互联网应用中沦为配角。
NoSQL(Non SQL, NotRelational or Not Only SQL)数据库应运而生,这个新型数据库重创了SQL数据库,也重创了SQL数据库之后的传统集中式存储。这些NoSQL的一个显著特征,就是相互间没有什么绝对的共性。两个都被称为NoSQL的数据库,其相互间的差异远大于两个都被称之为SQL的数据库。
在移动互联网时代,各类业务快速推进,且基于对未来不确定性的考虑,使得NoSQL数据库的每次发展更似一次试错。NoSQL数据库对于存储系统的使用更加务实,可以直接使用内存,也可以直接使用本地硬盘。NoSQL数据库的设计初衷不是为了排斥集中式存储,只是Cassandra、HBase和MongoDB的设计者可能没有购买盘阵列的资金,所以采用了RAM、硬盘、SSD、PC机这类最容易获得的硬件资源,搭建底层的存储系统。这使得集中式存储在无意中被冷落。
为了保证数据存储的可靠性,NoSQL数据库多采用了直接且粗暴的做法,最常用的手段是使用DHT(Distributed Hash Table)算法保存多个副本。这种至简有显而易见的不足,简陋的多副本策略甚至可以将香农气醒,也因为其至简NoSQL相对于SQL数据库更具可扩展性,可以运行在相对低廉的硬件系统中,由普通PC机与交换机组成的集群系统中。
如果从ACID(Atomicity, Consistency, Isolationand Durability)的特性上对比NoSQL与SQL,前者不堪一击。ACID模型是SQL数据库创建时立下的规则,在这套规则体系下,SQL数据库是上帝。NoSQL建立在BASE(Basically Available, Soft state andEventually Consistent)模型基础之上,所坚持的只是基本可用。这种基本可用所带来的灵活性使得移动互联网应用所追求的极度高并发特性得以满足。ACID与BASE本质上两种完全不同的设计策略,
BASE模型的特点之一是我行我素,对Consistency没有过高的要求,这种我行我素在某种程度上使得基于BASE设计理念的NoSQL数据库各不相同。移动互联网应用绝非不重视数据的Consistency,只是在更加追求系统的高可用与高并发性的过程中,不得已舍弃了Consistency特性。对于绝大多数的移动互联网应用,过强的Consistency特性并非不可或缺。
为了降低系统访问延迟并最大范围的保证容错,移动互联网厂商所使用的存储系统多采用Geo-Replicated架构。在这种架构下,数据在不同的地理区域中有多个副本存在,这些多个数据副本的Consistency在跨地域布置的前提下,需要与系统的可用性进行取舍。
图1‑7 Geo-replicated架构下的数据分布[23]
移动互联网厂商所采用Geo-Replicated架构使得Eventual Consistency模型几乎成为必然的选择。Eventual Consistency模型似乎很简单,在不同分区下数据副本最终获得一致即可,对数据的最后一次更新最终体现在所有的分区中,但是并不保证每次读取的数据是最新的。这种对Eventual Consistency的定义非常模糊,而且在一定程度上是误导。事实上一个数据中心的设计者如果不采用一定的策略,即便是最简单的Eventual Consistency模型也无法保证。
Lloyd Wyatt et al.[23]给出了Eventual Consistency模型较为严格的定义,在一个Geo-Replicated架构中,写入到一个数据中心的数据,需要最终写入到其他数据中心,如果所有数据中心都收到了相同数据集合的写入操作,那么在整个系统中这个数据集合的所有的数据副本需要保持一致。即便不考虑有人恶意插拔网线与主机电源而制造的数据分区,仅考虑网络报文延迟与传输顺序,在整个系统中即便只保证Eventual Consistency也并非易事。
Eventual Consistency这种弱一致性模型,有许多显见的问题。Lloyd Wyatt et al.列举了一些互联网应用,因为采用Eventual Consistency所导致的一系列问题,如Comment Reordering、Photo Privacy与Double Money Withdrawal等[23]。有些问题不伤大雅,有些问题较为严重。Lloyd Wyatt et al.所列出的这些问题是,移动互联网厂商为了追求系统容错与访问延迟所付出的应有代价。
Consistency是一个非常重要的概念,但是99.9%的IT从业人员不必去深入理会这些概念。除非你立志做个类似于SPARK的系统,而不是去简单地使用。虽然SPARK这类系统,世界上只需要一个,但是依然有一个问题值得思考,这个系统为什么不能出自中国。念及此处,本书将在最后一篇《计算篇》中花费相当大的篇幅详细阐释这些概念。
在移动互联网世界中,Consistency概念首次引发较大范围的关注是在1998年。那一年EricBrewer正式提出CAP(Consistency, Available and Partition tolerance)[24]猜测并于1999年正式发表Towardsrobust distributed systems这篇文章。其正确性在2002年由Seth Gilbert和Nancy Lynch证明,CAP Conjecture也正式转换为Theorem[25]。传统的CAP理论认为,在一个网络系统中,数据一致性(C)、数据的高可用性(A)和数据对分区的容忍性(P),三者不可兼得。
CAP理论的最简单的解释是假设系统仅存在两个节点,并处于分区的两侧。如果仅允许一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,但是这又会导致丧失P性质。一般来说跨区域的系统,设计师无法舍弃P性质,那么就只能在数据一致性和可用性上做一个艰难选择[24]。
2012年,Eric Brewer重新回顾了CAP理论,并针对实际情况做出了一些修订。在CAP三个特性中选二,并不是简单的非黑即白。首先在一个分布式系统中,真正支持绝对分区的系统并不多见,Kyle Kingsbury在[26]中列举的在分布式系统中存在的分区情况,基本上都是因为各类异常导致的。
即便是在数据分区成立的前提下,为了实现100%的可用性而不顾一致性,或者为了实现100%的一致性而不顾可用性,都是过于绝对,而并不可取。在一个实际系统中,可以在时间空间的更加细粒度的划分中,使得系统基本可用,基本一致。这些对“基本”的选择是系统设计中需要考虑的权衡与取舍[27]。
CAP理论缘于Eric Brewer一次闲聊,对于之前熟悉Leslie Lamport分布式系统的学者或者工程师而言,CAP理论严格意义上是一次不错的推导,不过这并不影响CAP原理带给互联网与移动互联网的巨大推动作用,也许更多的人开始学习并认识分布式理论源自致简的CAP推论而不是LeslieLamport晦涩的论文。
CAP理论的出现,给予了NoSQL对抗SQL数据库的有力武器,特别是在讨论强Consistency对于一个数据库是否必不可少这样的话题。此后依照BASE理念,而不是ACID理念,互联网厂商逐步自行研发自己的分布式系统,以满足移动互联网应用对于超大并发数的追求。之后Google提出了MapReduce、GFS (Google Filesystem)和Bigtable这些简练的能够让普通程序员即可掌握的分布式编程模型。
随后继承了MapReduce方法和GFS理念的Apache Hadoop分布式得到了迅速普及与发展。Hadoop使用HDFS (HadoopDistributed File System)管理文件系统,可以部署在低廉的硬件平台之上的同时,提供较高的吞吐量。从分布式计算的理论上讲,MapReduce模型较不完美,但是简单实用的编程模型使Hadoop系统突飞猛进。
MapReduce将所有操作归为Map和Reduce两个操作可能是当时的Google在面对当时的程序员素质在当时做出的选择。这种简单分类并不完美,但是极易被程序员掌握。MapReduce编程模式采用了最简单的分而治之策略,简单粗暴,易于掌握,却很难是最优,甚至是次优编程模型。而后出现的SPARK在计算框架上与Hadoop相比有了一次较大的提升,我认为在集群计算模型上优于Hadoop,也依然认为Hadoop由于是第一次出现,其历史地位不可撼动。
整个IT史册在充斥着并不完美中奋然前行。在IT基础领域中,太难的算法和实现策略很难推行,晦涩的算法不容易实现,也不容易理解。这个行业在飞速发展的年代,一边是市场人员Time-to-Market的压力,一边是尽快提交代码的压力,这一切使得在工程实现的算法都可能不是已知理论的最优,甚至不是次优算法。KISS理论在移动互联网高速发展的时代再度胜出。
至今IT基础设施的三大领域,均遭遇瓶颈。硅工业发展的事实停滞,使得基础设施跌下神坛,不能再次依靠自身驱动自身的方式前行。这使得一些更优的算法与体系结构有机会重整旗鼓,至少尝试一下已知理论上的最优,以精益求精。另一方面寻求下一个硅的脚步从未停息,ITRS在面临硅工业的困境,提出了六个可能的方向,System Integration、Heterogeneous Integration、Outside System Connectivity、More Moore、Beyond CMOS和Factory Integration[1]。
在这些方向中,最具颠覆的莫过于Beyond CMOS。Beyond CMOS是在寻求新的材料替代硅,也许需要几个世纪,也许就在明天。假设这些BeyondCMOS的某一种新材料能够真正取代硅,那么这种新材料的应用将率先在存储领域出现。从设计的角度上看,诸多存储Cell的一字排列,其复杂程度远低于CPU或者网络设备的交叉矩阵;人类历史上也从来没有像今天这样依赖着存储,所有历史上存在的数据已不堪舍去,新的数据川流不息。
这使得在IT基础设施的三大领域,计算、网络与存储中,存储被寄予厚望,存储级内存SCM正在暂露头角。从Intel与Micron合作的3D xPoint开始,近些年会陆续诞生一些新型的SCM,2017年1月已经宣布量产的CrossBAR的ReRAM[28];Nantero与富士通合作在2018年推出基于CNT(Carbon Nanotube)的NRAM[29];Samsung收购Grandis后与IBM一道全力推进STT-RAM[30].
图1‑8 存储器分类[31]
这些SCM也许在近期很难在Volatile领域全面替代DRAM,或者在Nonvolatile领域全面替代NAND Flash,但至少会给一潭死水的存储器层次结构引入变数,从而带来冲击。内心深处,希望一切使用新型材料的SCM取得革命性的 突破。也是这个原因,本书将首先介绍IT基础设施中的存储篇章,心中坚信在计算、网络与存储三大领域中,存储将最先取得突破。
参 考 资 料
[1] International technology roadmap for semiconductors 2.0 2015 edition executive report (ITRS)[J]. Semiconductor Industry Association, 2016.
[2] Courtland R. Transistors could stop shrinking in 2021[J]. IEEE Spectrum, 2016, 53(9): 9-11.
[3] http://blog.sina.com.cn/s/blog_6472c4cc0102e9hr.html
[4] http://blog.sina.com.cn/s/blog_6472c4cc0102e0xg.html
[5] www.youtube.com/yt/press/statistics.html
[6] https://techcrunch.com/2015/11/04/facebook-video-views
[7] Desai S B, Madhvapathy S R, Sachid A B, et al. MoS2 transistors with 1-nanometer gate lengths.[J]. Science, 2016, 354(6308):págs. 100-102.
[8] http://hothardware.com/reviews/intel-core-i7-6950x-extreme-edition-10-core-cpu-review-broadwell-e-arrives
[9] Nvidia whitepaper, NVIDIA Tesla P100, The Most Advanced Datacenter Accelerator Ever Built Featuring Pascal GP100, the World’s Fastest GPU. https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf
[10] Kayıran O, Jog A, Kandemir M T, et al. Neither more nor less: optimizing thread-level parallelism for GPGPUs[C]//Proceedings of the 22nd international conference on Parallel architectures and compilation techniques. IEEE Press, 2013: 157-166.
[11] The History of Ethernet. NetEvents.tv. 2006. Retrieved September 10, 2011. https://www.youtube.com/watch?v=g5MezxMcRmk
[12] Subramoni N S I H, Panda D K D K. Performance Analysis and Evaluation of InfiniBand FDR and 40GigE RoCE on HPC and Cloud Computing Systems [J]. 2012.
[13] https://www.top500.org/lists/2015/06/highlights
[14] https://www.top500.org/lists/2016/06/highlights
[15] Casado M. Architectural support for security management in enterprise networks[D]. Stanford University, 2007.
[16] McKeown N, Anderson T, Balakrishnan H, et al. OpenFlow: enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2): 69-74.
[17] Open Networking Foundation Formed to Speed Network Innovation. Press release. Open Networking Foundation. March 21, 2011. Retrieved October 30, 2016.
[18] Corbet J. Routing open vswitch into the mainline[J].
[19] Medved J, Varga R, Tkacik A, et al. Opendaylight: Towards a model-driven sdn controller architecture[C]//Proceeding of IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks 2014. 2014.
[20] Darren Pauli. NSX Daddy Martin Casado leaves VMware to become a VC. Feb. 2016.
[21] David Floyer. Server SAN Readies for Enterprise and Cloud Domination. Aug. 2016. http://wikibon.com/server-san-readies-for-enterprise-and-cloud-domination/
[22] David Floyer. The Rise of Server SAN. July 2015. http://wikibon.org/wiki/v/The_Rise_of_Server_SAN
[23] Lloyd W, Freedman M J, Kaminsky M, et al. Don't settle for eventual consistency[J]. Communications of the Acm, 2014, 57(5):61-68.
[24] Brewer E A. Towards robust distributed systems[C]// Nineteenth ACM Symposium on Principles of Distributed Computing, July 16-19, 2000, Portland, Oregon, Usa. DBLP, 2000:7.
[25] Seth Gilbert and Nancy Lynch. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, Volume 33 Issue 2 (2002), pg. 51-59.
[26] Kyle Kingsbury. A blog post on network partitions in practice. https://github.com/aphyr/partitions-post
[27] Brewer E. CAP twelve years later: How the" rules" have changed [J]. Computer, 2012, 45(2): 23-29.
[28] Peter Clarke, Times E E. Crossbar ReRAM in Production at SMIC[J]. 2017.
[29] Peter Clarke, Times E E. Fujitsu Is Licensee of Nantero's Carbon-Nanotube RAM [J]. 2018.[30] McGrath D, Times E E. Samsung buys MRAM developer Grandis[J]. 2011.
[31] International technology roadmap for semiconductors 2.0 2015 edition beyond CMOS (ITRS)[J]. Semiconductor Industry Association, 2016.