《大型网站技术架构》 笔记 - 概述篇

第一章 大型网站架构演化

1.1 大型网站软件系统的特定

  • 高并发、大流量
  • 高可用
  • 海量数据
  • 用户分布广泛,网络情况复杂
  • 安全环境恶劣
  • 需求快速变更,发布频繁
  • 渐进式发展

1.2 大型网站架构演化发展历程

应用服务与数据服务在同一台机器 –> 应用服务与数据服务分离 –> 使用缓存改善网站性能 –> 使用应用服务集群改善网站的并发处理能力 –> 数据库读写分离 –> 使用反向代理和CDN加速网站响应 –> 使用分布式文件系统和分布式数据库系统 –> 使用NoSQL和搜索引擎 –> 业务拆分 –> 分布式服务

网站使用的缓存分为:应用服务器上的本地缓存和专门的分布式缓存服务器上的远程缓存。

为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。

CDN 与 反向代理

CDN 与 反向代理 都用于加速网站访问,本质上都是缓存。

CDN 部署在网络提供商的机房,用户请求网站服务时,从距离自己最近的网络提供商机房获取数据。

反向代理部署在网站的中心机房,用户请求首先访问的是反向代理服务器,如果反向代理服务器缓存着用户请求的资源,就将其直接返回给用户。

使用 CDN 与 反向代理 的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的压力。

大型网站架构技术的核心价值就是随网站所需灵活应对。
驱动大型网站技术发展的主要力量是网站的业务发展。

是业务成就了技术,是业务成就了人。

1.3 网站架构设计误区

  • 也为追求大公司的解决方案
  • 为了技术而技术
  • 企图用技术解决所有问题
    技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决。

第二章 大型网站架构模式

模式描述了一个不断重复发生的问题及该问题解决方案的核心。
模式的关键在于模式的可重复性,问题与场景的可重复性爱来解决方案的可重复使用。

网站架构模式

  • 分层:最初目的是规划软件清晰的逻辑结构便于开发维护,对网站支持高并发向分布式方向发展至关重要。是对软件的横向切分。
  • 分割:将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。是对软件的纵向切分。
  • 分布式:分层和分割的一个主要目的是为了切分后的模块便于分布式部署。
  • 集群:多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。当某台服务器发生故障时,负载均衡设备或系统的失效转移机制将请求转发到其他机器上。
  • 缓存:使用缓存有两个条件:数据访问热点不均衡;数据在某个时间段内有效,不会很快过期。
  • 异步:可降低系统耦合度,提供系统可用性,加快网站响应速度,消除并发访问高峰。
  • 冗余:冷热备份、灾备数据中心。
  • 自动化:
  • 安全:

山寨与创新的最大区别不在于是否抄袭,是否模拟,而在于对问题和需求是否真正理解与把握。

第三章 大型网站核心架构要素

架构是最高层次的规划,难以改变的决定,这些规划和决定奠定了事务未来的发展方向和最终的蓝图。

维基百科:软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

系统的重要组成部分及其关系构成了系统的架构。

软件架构 5 要素:性能、可用性、伸缩性、扩展性、安全性。

  • 性能:任何软件架构设计方案都必须考虑可能会带来的性能问题。影响用户请求的所有环节都可以进行性能优化。

  • 可用性:网站高可用的主要手段是冗余。

  • 伸缩性:衡量架构伸缩性的主要标准就是是否可以用多台服务器架构集群,是否容易向集群中添加新的机器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的机器数量是否有限制。

  • 扩展性:网站的扩展性架构直接关注网站的功能需求。网站可扩展的主要手段是事件驱动和分布式服务。

  • 安全性:


欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据