可扩展的web架构 和 分布式系统

原文链接

这是左耳朵耗子推荐的入门文章,咱来读一读吧

挑选一些重点做笔记

本文覆盖了设计大型网站时的一些关键问题,以及实现目标的一些组件

1.1.分布式系统的设计原则

关键原则:

  • Availability:可用性。高可用性需要仔细考虑关键组件的冗余、部分系统失败时的快速恢复、出现问题时的降级
  • Performance:性能。响应速度。
  • Reliability:可靠性。请求可以返回相同的数据。
  • Scalability:可扩展性。能处理多少流量。扩容的时候是否容易。
  • Manageability:可管理性。出现问题的时候容易排查定位。
  • Cost:成本。部署和维护系统需要的成本。

实现某个原则可能会以牺牲另一个原则为代价。基本的例子:简单地通过增加服务器来扩容,代价就是可管理性下降(要维护更多服务器)、更高的成本(买服务器)

1.2.基础

举个例子:图像服务

系统支持上传图像,然后返回url。

系统其他的一些重要方面:

  • 没有上传图片的限制,所以要考虑容量
  • 图像下载要快,延时小
  • 如果用户上传了图像,那可别丢了(可靠性)
  • 容易维护
  • 赚不了啥钱,成本要低

可扩展的web架构 和 分布式系统

我们来假设我们要搞一个大系统,像Flickr(什么鬼,我们这里假装是在造快手吧????)