《开源应用架构》读书笔记:分布式Web系统设计原则

一、简介

理解大型网站架构的考虑和权衡,同样有助于我们建立小规模网站时做出决策。设计大型Web系统,有下面几个关键原则,多个原则之间往往存在着权衡取舍关系。

  • 可用性 系统可用时间,大型电商网站,一般要求永久可用,系统不可用意味着损失大量交易和金钱。高可用性离不开冗余和备份。
  • 性能 高相应速度,低延迟,影响用户满意度
  • 可靠性 多次请求同一个数据,返回的结果应该是一致的。如果写入数据,应该保证数据不会丢失
  • 伸缩性 伸缩性有多种不同的指标。增加存储容量有多容易;提高并发访问量有多容易;支持更多事务处理有多容易;
  • 可维护性 维护和更新系统的难度;诊断系统故障的难度;运维难度;
  • 成本 开发时间;部署运维成本;硬件成本;

二、伸缩性

提高网站伸缩性的典型方法

读写分离

  1. 读写的速度有明显差别, 承受的压力不同,独立优化速度
  2. 读数据不会破坏数据一致性,但写数据有可能破坏数据一致性

分区

冗余

负载均衡

如果系统只有几个节点,轮询DNS是更有用的做法,因为负载均衡器会提高成本,同时给系统带来一层额外的复杂性。当系统迎来高负载情况,负载均衡器会移除访问慢的节点,系统资源利用率下降;因此,负载均衡器需要和系统监控同时进行。

HAProxy 一个广泛应用的开源负载均衡器

待补充

三、性能

提高网站性能的典型方法

缓存 缓存将经常访问的数据,提前保留一份。下一次需要时,先检查缓存,缓存命中则直接读取缓存数据,提高访问效率。计算机系统,缓存无处不在,从硬件到操作系统,从浏览器到Web服务。

扫描二维码关注公众号,回复: 3824394 查看本文章

Memcached 一个开源分布式缓存系统

代理 代理将多个请求合并成一个请求,通过减少请求次数提高访问效率。

Squid 一个开源代理软件

索引 索引在写数据时额外建立索引,在读数据时通过索引结构,快速定位,加速读数据的过程。索引实际上是用更改的写代价来换取更低的读代价。索引结构广泛用于数据库系统。

Berkeley DB 一个开源数据库,适合学习索引技术

队列

当系统访问量到达一定规模时,一个写数据请求的慢速会影响其他读请求。这时候我们需要异步访问系统,用了提高系统性能和可用性。常见的实现方式是队列。

四、总结

这里总结

更新于2016年9月20日凌晨 TODO:添加图片,补充细节

猜你喜欢

转载自blog.csdn.net/renq_654321/article/details/52590842