构建高可扩Web架构和分布式系统实战

构建高可扩Web架构和分布式系统实战

ID:44250520

大小:1.06 MB

页数:25页

时间:2019-10-20

构建高可扩Web架构和分布式系统实战_第1页
构建高可扩Web架构和分布式系统实战_第2页
构建高可扩Web架构和分布式系统实战_第3页
构建高可扩Web架构和分布式系统实战_第4页
构建高可扩Web架构和分布式系统实战_第5页
资源描述:

《构建高可扩Web架构和分布式系统实战》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、木文作者KateMatsudaira是一位美丽的女工程副总裁,曾在SunMicrosystems、微软、亚马逊这些一流的IT公司任职。她冇着非常丰富的工作经验和团队管理经验,当过程序员、项目经理、产品经理以及人事经理。专注于构建和操作大型Web应用程序/网站,口前她的主要研究方向是弘込(软件即服务)应用程序和云计算(如大家所说的大数据)。本文是作者在迪一•书介绍如何构建可扩展的分布式系统里的内容,在此翻译并分享给大家。开源软件己经成为许多大型网站的基本组成部分,随着这些网站的逐步壮大,他们的网站架构和一些指导原则也开放在开发者们的面前,给予大家切实有用的指导和帮助。这篇文章主要侧重于Web

2、系统,并且也适用于其他分布式系统。Web分布式系统设计的原则构建并运营一个可伸缩的Web站点或应用程序到底是指什么?在最初,仅是通过互联网连接用户和访问远程资源。和大多数事情一样,当构建一个Web服务时,需要提前抽出时间进行规划。了解大型网站创建背后的注意事项以及学会权衡,会给你带来更加明智的决策。下面是设计大型Web系统时,需要注意的一些核心原则:•可用性•性能•可靠性•可扩展•易管理•成木上面的这些原则给设计分布式Web架构提供了一定的基础和理论指导。然而,它们也可能彼此相左,例如实现这个目标的代价是牺牲成本。一个简单的例子:选择地址容量,仅通过添加更多的服务器(可伸缩性),这个可能以

3、易管理(你不得不操作额外的服务器)和成本作为代价(服务器价格)。无论你想设计哪种类型的Web应用程序,这些原则都是非常重要的,甚至这些原则之间也会互相羁绊,做好它们之间的权衡也非常重要。基础当涉及到系统架构问题时,这几件事情是必须耍考虑清楚的:什么样的模块比较合适?如何把它们组合在一起?如何进行恰当地权衡?在扩大投资Z前,它通常需要的并不是一个精明的商业命题,然而,一些深谋远虑的设计可以帮你在未来节省大量的吋间和资源。本文讨论的重点几乎是构建所冇大型Web应用程序的核心:服务、冗余、分区和故障处理能力。这里的每个因素都会涉及到选择和妥协,特别是前面所讨论的那些原则。解释这些核心的最佳办法就

4、是举例子。图片托管应用程序有时,你会在线上传图片,而一些大型网站需耍托管和传送大量的图片,这对于构建一个具冇成本效益、高可用性并具有低延时(快速检索)的架构是一项挑战。在一个图片系统中,用户可以上传图片到一个中央服务器里,通过网络连接或API对这些图片进行请求,就像Flickr或者Picasao简单点,我们就假设这个应用程序只包含两个核心部分:上传(写)图片和检索图片。图片上传吋最好能够做到高效,传输速度也是我们最关心的,当有人向图片发出请求时(例如是一个Web页而或其他应用程序)。这是非常相似的功能,捉供Web服务或内容分发网络(一个CDN服务器可以在许多地方存储内容,所以无论是在地理上

5、还是物理上都更加接近用户,从而导致更快的性能)边缘服务器。该系统需要考虑的其他重要方面:•图片存储的数量是没冇限制的,所以存储应具备可伸缩,另外图片计算也需要考虑•下载/请求需要做到低延迟•用户上传一张图片,那么图片就应该始终在那里(图片数据的可靠性)•系统应该易于维护(易管理)•曲于图片托管不会有太高的利润空间,所以系统需要具备成本效益图1是个简化的功能图ImageRequestHandlerRequestfordogimageCSDD图1图片托管系统的简化结构图在这个例了中,系统必须具备快速、数据存储必须做到可靠和高度可扩展。构建一个小型的应用程序就微不足道了,一台服务器即可实现托管。

6、如果这样,这篇文章就毫无兴趣和吸引力了。假设我们要做的应用程序会逐渐成长成Flickr那么大。服务当我们考虑构建可伸缩的系统时,它应有助于解耦功能,系统的每个部分都可以作为自己的服务并且拥有清晰的接口定义。在实践屮,这种系统设计被称作面向服务的体系结构(SOA)o对于此类系统,每个服务都有它自己的独特功能,通过一个抽象接口可以与外面的任何内容进行互动,通常是面向公众的另一个服务API。把系统分解成一组互补性的服务,在互相解耦这些操作块。这种抽象有助于在服务、基本环境和消费者服务之间建立非常清晰的关系。这种分解可以有效地隔离问题,每个块也可以互相伸缩。这种面向服务的系统设计与面向对象设计非常

7、相似。在我们的例子屮,所有上传和检索请求都在同一台服务器上处理。然而,因为系统需要具备可伸缩性,所以把这两个功能打破并集成到自己的服务中是有意义的。快进并假设服务正在大量使用;在这种情况下,很容易看到写图片的吋间对读图片时间会产生多大影响(他们两个功能在彼此竞争共享资源)。根据各自体系,这种影响会是巨大的。即使上传和下载速度相同(这是不可能的,对于大多数的IP网络來说,下载速度:上传速度至少是3:1),通常,文件可以从缓

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。