Google揭露“仙女座”虚拟网络,及分散和集中架构之辩

2023-10-13 07:18

本文主要是介绍Google揭露“仙女座”虚拟网络,及分散和集中架构之辩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转摘自  http://www.csdn.net/article/2014-04-14/2819289-google-finds-centralized-control-distributed-data-architectu


【编者按】在软件体系结构上,分散和集中的使用一直存在着争议。同时,随着网络带宽、硬件成本、内存的容量变大,分散式似乎大有可为。然而,从创新不断的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(翻译/陶星 责编/仲浩 )



这篇关于Google揭露“仙女座”虚拟网络,及分散和集中架构之辩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201618

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构