可扩展的web架构 和 分布式系统
原文链接
这是左耳朵耗子推荐的入门文章,咱来读一读吧
挑选一些重点做笔记
本文覆盖了设计大型网站时的一些关键问题,以及实现目标的一些组件
1.1.分布式系统的设计原则
关键原则:
- Availability:可用性。高可用性需要仔细考虑关键组件的冗余、部分系统失败时的快速恢复、出现问题时的降级
- Performance:性能。响应速度。
- Reliability:可靠性。请求可以返回相同的数据。
- Scalability:可扩展性。能处理多少流量。扩容的时候是否容易。
- Manageability:可管理性。出现问题的时候容易排查定位。
- Cost:成本。部署和维护系统需要的成本。
实现某个原则可能会以牺牲另一个原则为代价。基本的例子:简单地通过增加服务器来扩容,代价就是可管理性下降(要维护更多服务器)、更高的成本(买服务器)
1.2.基础
举个例子:图像服务
系统支持上传图像,然后返回url。
系统其他的一些重要方面:
- 没有上传图片的限制,所以要考虑容量
- 图像下载要快,延时小
- 如果用户上传了图像,那可别丢了(可靠性)
- 容易维护
- 赚不了啥钱,成本要低
我们来假设我们要搞一个大系统,像Flickr(什么鬼,我们这里假装是在造快手吧????)