可伸缩的Web体系结构和分布式系统 (译)
作者:互联网
文章目录
最近对高可用架构有些兴趣,看了下相关资料,总结下。
1 分布式系统设计的原则
- Avilability。 需要对关键模块做redundancy,快速的恢复对于部分系统,和优雅的降级当问题出现时。
- Performance。访问Web的速度。
- Reliability。对数据的请求要返回相同的数据。
- Scalability。增加处理更大负载的能力所需要的努力,通常称为系统的可伸缩性。
- Manageability。是否方便的更新和维护。
- Cost。
2 基本的Web系统
本节主要讨论几乎所有大型web应用程序的核心因素:services, redundancy, partitions, and handling failure。
2.1 例子:图片托管应用程序
用户可以方便的将图片upload到Web服务器,并且也可以从Web服务器方便的下载。核心的指标是:upload image的能力和查询一个图片能力。该系统的要求:
- 存储的图片数量没有限制,因此需要考虑存储的可伸缩性(就图片数量而言)。
- 图片下载/请求需要较低的延迟。
- 如果用户上传了一个图像,那么图像应该始终存在(图像的数据可靠性)。
- 系统应该易于维护(可管理性)。
- 由于图像托管没有很高的利润率,系统需要具有成本效益
下图是一个简单的系统功能图:
2.2 服务拆分
在考虑可伸缩的系统设计时,将功能解耦,并将系统的每个部分看作具有明确定义的接口的自己的服务。在实践中,以这种方式设计的系统被称为具有面向服务的体系结构(SOA)。
在该图片系统中,可以将图片上传和下载拆分成2个服务。并且将read/write分成2个资源,防止共享一个带宽造成的网络拥塞。appache web server 最多支持500个并发。拆分还带来的好处是
2.3 Redundancy
Redundancy可以避免单点故障的问题。无论是服务器还是应用程序都要有Redundancy。
标签:Web,Redundancy,系统,应用程序,分布式系统,图片,体系结构 来源: https://blog.csdn.net/u011563903/article/details/89608348