Web-Scale IT 我之见!
Gartner 曾在发表过的一篇文章中表示,到2017年,全球50%的企业将使用Web-Scale IT 架构。下面我们来看看 Andre Leibovici 对 Web-Scale IT 的看法:
Web-scale IT 不仅仅是一个流行词,更是一种设计数据中心和软件架构的方法,它体现了一种多维概念,包含可扩展性、一致性、容忍度和版本控制等。
Web-scale 描述了现代架构的趋势,即增长(远)大于线性速率。Web-scale 系统能够快速有效地进行处理,并避免在关键时刻需要重新架构的瓶颈问题。
Web-scale 架构和属性并不是一个新鲜的词条,它们已经在一些大型的网络公司中系统地使用了,比如谷歌、Facebook 和亚马逊。然而对比以往最大的区别就在于,这种可扩展到海量计算规模的架构,以往只出现在大型互联网公司而当下已通过专门的虚拟化定制方法走入主流企业。
在一个内部讨论中,Nutanix CEO Dheeraj Pandey 总结了关于 Web-scale 架构的重要概念。而本文对其中一些思想进行了引用,并扩展到其他不同领域。
同时,这里需要注意的是,高扩展性的分布式系统对笔者来说也是一个全新的领域,而笔者也会分享自己的学习收获。
首先要记住的是:Web-scale 不只适用于 SDS(软件定义存储);它也是大型分布式系统的架构模型。这里有一个视频讲述了什么是 Web-Scale IT。
通过软件途径,让大量运行着标准 x86 硬件的主机可以同时做一件事情。这是 Web-scale 第一次与 SDDC(软件定义数据中心)交互,在没有计算机硬件做支撑的情况下。许多服务已经采用这种办法,包括 SDN(软件定义网络)、虚拟服务和 SDS(软件定义存储)。
对于管理服务的无单点故障和瓶颈问题,在架构上应有所考虑。故障的容忍度是架构稳定、可扩展分布式系统的关键。发生故障时的运行能力也是可用性的关键。像 vector clocks、two-phase commit、consensus algorithms、leader elections、eventual consistency、multiple replicas、dynamic flow control、rate limiting、exponential back-offs、optimistic replication、automatic failover、hinted-handoffs、data scrubbing 等技术是构成分布式系统处理故障能力的要素。
Web-scale 系统应该提供一个灵活构建系统的服务,并具备并行构建的能力(http://en.m.wikipedia.org/wiki/Embarrassingly_parallel)。并行方法能够进行无干扰地接近传统的颠覆性任务,例如滚动或叉式升级、不间断集群和所有工作流全部在线。
Web-scale 系统应该能够被扩展,并且继续像一个单元那样正常运行。而不是依靠运行单元的多部署,这些单元不能自行扩展。
Web-scale 允许独立架构,它需要容忍故障,并提供性能、可用性保障和服务级协议。
Web-scale 系统应该为内部和数据中心通信提供用于完全控制和基于 HTTP 服务自动化的编程接口。这些 APIs需要为异步请求响应支持延时和容错协议。
Web-scale 系统应该提供自定义(和版本化)的对象。在 SDS 用例,具有编码能力的自定义磁盘高效地格式化和序列化结构数据,且是可扩展格式,比如 protobuf、Avro 等。这样,可以不用经常地更新磁盘数据。考虑到规模,Web-scale 不能假定只有一次数据更新。
Web-scale 系统应具有自描述(和版本识别)服务,这样分布式系统的不同部分可以在不同版本下进行通信,不用期待所有的部分一次升级。
分析软件为了减少人机交互。在大型网络公司中,Web-scale 基础设施与每台机器管理的 SRE 是1:10000的比例。一般的公司是1:500的比例。这个巨大的差距只能由分析和自动化来填补。
严格且最终一致的一致性模型,对 CAP 原理有清楚的理解(一致性、可用性和分区容错性)(http://en.m.wikipedia.org/wiki/CAP_theorem)。笔者发现 Julian Browne 写的一篇文章是学习更多 CAP 原理的好资料。

此外,另一个好的例子是 vCenter 服务器。vCenter 应该从头设计成为一个分布式管理平台,它能够利用完全无共享结构,提供零故障操作环境。众所周知,vCenter 服务器是 vSphere 集群的关键性部件。当其不可用时,可能严重影响运作。微软 Hyper-V 和 SCVMM 也是这样的。
当管理程序是独立单元,不需要管理服务器即可运行时,就不会有缺乏管理的问题。
如果 vCenter 用 web-scale 原理设计,它不是集群虚拟设备,就是在管理程序核心进行架构。添加到集群的节点越多,处理方式就越灵活。并且当有一个节点不可用,其他节点能够成为管理端点。
Nutanix 选择从头架构数据和控制层,使其成为一个具有上述性能和指导方针的 Web-scale 分布式系统。这些指导方针不仅保证弹性、可扩展性、一致性和容错性,而且确保它是一个引导将来数据中心创新的平台。
原文:understanding-web-scale-properties,作者 Andre Leibovici 是 VMware 架构师,兼职作家和博主。 本文系OneAPM 工程师编译整理。
Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文由 OneAPM 工程师翻译整理,想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
Web-Scale IT 我之见!的更多相关文章
- Web Scale IT 与 6 种 DevOps 工具
新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
Web Essentials是目前为止见过的最好用的VS扩展工具了,具体功能请待我一一道来. 首先,从Extension Manager里安装:最新版本是19号发布的2.5版 然后重启你的VS开发环境 ...
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解
原文:最锋利的Visual Studio Web开发工具扩展:Web Essentials详解 Web Essentials是目前为止见过的最好用的VS扩展工具了,具体功能请待我一一道来. 首先,从E ...
- 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- birt 集成到现有的web应用中
我们已经有了一个Javaweb应用,现在要实现对报表的集成 我的应用是这个样子的 说明: 1) 这里使用的是birt4.4版本的, 下载birt-runtime-4.4.zip(在官方下载),然 ...
- 使用Docker、CoreOS、Mesos部署可扩展的Web应用
[编者的话]本文作者重点介绍了如何使用Docker.CoreOS.Mesos.Vulcand.对象存储来部署一个可扩展的Web应用,他首先介绍了为什么要选择这些工具以及与其它工具相比这些工具的优势.紧 ...
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- 一文读懂前端技术演进:盘点Web前端20年的技术变迁史
本文原文由作者“司徒正美”发布于公众号“前端你别闹”,即时通讯网收录时有改动,感谢原作者的分享. 1.引言 1990 年,第一个Web浏览器的诞生:1991 年,WWW诞生,这标志着前端技术的开始. ...
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解【转】
Web Essentials是目前为止见过的最好用的VS扩展工具了,具体功能请待我一一道来. 首先,从Extension Manager里安装:最新版本是19号发布的2.5版 然后重启你的VS开发环境 ...
- springboot:非web启动
需要运行一些调度任务,但是又不想放到web容器中运行. 见红色代码: import java.util.concurrent.ThreadPoolExecutor; import org.spring ...
随机推荐
- Flume简介与使用(一)——Flume安装与配置
Flume简介与使用(一)——Flume安装与配置 Flume简介 Flume是一个分布式的.可靠的.实用的服务——从不同的数据源高效的采集.整合.移动海量数据. 分布式:可以多台机器同时运行采集数据 ...
- 通过ApplicationContextAwareSpring实现手工加载配置的javabean
在做一个多线程的数据采集器实现的过程中,由于框架是集成srping,因此希望统一使用原有的数据库配置信息,但是需要手工获取数据库配置bean.我们可以通过继承ApplicationContextAwa ...
- SQL 收缩数据库文件大小
USE WebExam; GO ALTER DATABASE WebExam SET RECOVERY SIMPLE; GO -- 收缩文件到 1 MB. ); GO ALTER DATABASE W ...
- ie各个版本hack
/*类内部hack:*/ .header {_width:100px;} /* IE6专用*/ .header {*+width:100px;} /* IE7专用*/ .header {*width: ...
- Linux操作系统搭建JDK开发环境
在Linuxer系统中,jdk环境常常是必需的,下面介绍下Oracle官方JDK安装方式 第一步:去jdk官网下载对应版本的JDK安装文件 第二步:解压文件,修改文件名 $ sudo mkdir /u ...
- 关于onSaveInstanceState的javadoc的渣渣翻译
/** * Called to retrieve per-instance state from an activity before being * killed so that the state ...
- angularjs + springmvc 上传和下载
jsp: <form ng-submit="uploadFile()" class="form-horizontal" enctype="mul ...
- 记录下sublime text快捷方式
不得不说sublime text用过之后,爱不释手,这里收集一下常用的快捷方式: ctrl+shift+p:调出命令面板,在输入ss可以改变当前的代码的渲染和提示效果, 用起sublime text ...
- input设置disabled,经过strus2提交到后台,后台取不到值
页面中有多个name相同的input与后台action中一个属性对应,一直在好奇为什么会可以提交到后台呐,但是有时还报这个属性找不到对应的方法(多个name相同好像匹配的是数组,所以找不到), 但是我 ...
- OC的内存管理机制
总的来说OC有三种内存管理机制,下面将分别对这三种机制做简要的概述. 1.手动引用计数(Mannul Reference Counting-MRC) mannul:用手的,手工的. 引用计数:reta ...