【编者按】在软件体系结构上,分散和集中的使用一直存在着争议。同时,随着网络带宽、硬件成本、内存的容量变大,分散式似乎大有可为。然而,从创新不断的Google身上,我们似乎看到了一些别的东西。下面我们一起看HighScalability创始人TodHoff的报道,以下为原文:
在软件体系结构趋势中,分散式服务的理念与集中式服务带来的能力及实用性之间一直存在分歧。然而现在看来,集中服务,至少在管理和控制平面层更胜一筹。Google不仅赞同这种模式(他们一直以来都是这种模式的狂热采纳者),还在你意想不到的地方投入使用。
这里摘抄Timothy Morgan一篇非常棒的博文——《谷歌掀开“仙女座(Andromeda)”虚拟网络的神秘面纱》,其中还引用了Google杰出的工程师和网络技术负责人Armin Vahdat的话:
“像Google创建的其他多数服务一样,Andromeda网络采用的是集中控制。顺便提一下, GFS整个数据处理平台(Hadoop启发系统),BigTable(为市面上大量NoSQL模仿),甚至B4WAN网络及Spanner这样尚未被模仿的系统都使用集中控制。
我们可以看到,一个带有P2P数据平面且逻辑集中的分级控制层服务完胜全分散式服务。Vahdat在他的keynote中写道,“这一切都冲击着传统的思想,”他继续说道:“除了上述项目,所有人都会对Google早在2002建立的大型存储系统GFS而感到震撼。对于这个设计模式,我们是非常有信心的。我们通过审慎利用集权而不是以对等且分散的管理方式,从根本上建立一个更高效的系统。”
文章的背景是谷歌的令人印象深刻的自主研发SDN系统,它使用了集中控制而不是互联网的Autonomous System,其将互联网看作一座孤立的岛屿,通过路由协议与“外界”联系。GrregFerro解释道,SDN完全改变了传统的模式:
SDN和传统网络之间的主要区别在于:SDN是基于控制器的网络模型。软件定义网络的集中控制器涵盖了整个网络端到端的视图,它将所有的网络路径和设备能力信息保存在一个应用程序中。因此,控制器可以基于源地址和目的地址计算它们之间的路径;针对不同流量类型决定不同的网络路径;并快速响应不断变化的网络环境。
除了提供这些特性之外,该控制器还可作为一个可配置节点。SDN最有价值的一方面就是:它可以通过这个单一配置节点控制整个网络并编程以实现自动化。
所以,集中控制器知道并能看到一切,它可直接编程实现硬连线的路由。以前,当发现错误后带来的BGP收敛时间会损耗性能。现在,您硬件上有了SDN,那么故障响应会非常迅速,因为集中控制器将会按照会预先计算出的可替代路由来编码路由。这也是当下云系统能具有高可用性、低延时连接,甚至跨越广域网的一个主要原因。
那么,这是否就意味着该控制器是一个单一的过程呢?也不尽然。它只是在逻辑上集中,同样可以像任何的典型服务体系结构一样,在众多的机器中(物理上)实现可分布式。这就是它扩展的方式。除下规模达到了非常大的程度,而想要采用完全分散式的架构显然是不明智的(即使在这个硬件便宜,内存和网络带宽飞速发展的时代)。
就互联网规模而言,逻辑和物理上分散式的 Autonomous System 模型仍然有所作为,它有良好的扩展性,虽然以极高的协调成本和缓慢的响应为代价。然而,在过去,这是可行的,但对于今天的网络需求,已经不再有优势。
谷歌玩的不只是互联网,而是具有特定需求的特殊网络合集。那么,他们为什么会对完全不同的需求使用一个通用的技术?
集中式赢在其构造出的产品广受欢迎
电子邮件和NNTP,都是分散式服务的代表,但是已经让位给了集中式服务,如Twitter,Facebook,G+和WhatsApp等推送服务。
集中化使得很多事情变得更加容易,例如搜索。如果你想要一个非常棒的搜索,那么你就需要在一个地方得到所有的数据,这就是为什么谷歌抓取网页并存储起来的原因。集中化最大优点就是保持一致性,例如追踪清单、关联、A / B测试、频繁推送、反复设计、欺诈检测、DDoS攻击防护、深度学习,以及创建具有高附加值的任何类型功能。
另外,如果你将一个不在控制下的远程实体作为产品的一个重要组成部分,必会导致一个长延迟和失败的用户体验,这并不是你在服务中想得到的东西,端到端控制才是创造良好用户体验的关键。因此,特性或可扩展性上全分散式架构毫无优势。
全分散式有时也是一种政治选择
例如,使用分散或 federated的方式创建Twitter,虽然这在技术上是可行的,却没有被普遍采用。原因很简单,集中式有效且能达到用户的要求,这个是最主要的原因。次要原因,如安全、拥有自己的数据、应变能力、言论自由等,虽然对于有些公司来说比较重要,但是通常情况下对许多公司都没有影响。
Doc Searls在像“逃出集中式的黑洞”这样的文章中提到一个分散式涉到人权和个人主权问题的例子,干预1个由大型匿名公司控制的全分散式且P2P加密的聊天系统要比1个集中式服务难得多。
那么开发者究竟该如何选择
如果是出于个人主权的考虑,或者是基于网络或跨地理位置,或者必须自主运行的,那么federated将会是你最好的选择。
如果您的系统非常小,那么完全集中式架构还是相当有吸引力的。
同时,对于处于广大中间地带的朋友们,谷歌已经证明:结合分布式数据并集中管理和控制基本已成为现在的规范架构。不要试图使一切工作都分布式,构建难度会让你望而却步。
原文连接: Google Finds: Centralized Control, Distributed Data Architectures Work Better than Fully Decentralized Architectures(翻译/陶星 责编/仲浩 )