easonli 2019-11-25
1.1 大型网站软件系统的特定
1.2 大型网站架构演化发展历程
应用服务与数据服务在同一台机器 –> 应用服务与数据服务分离 –> 使用缓存改善网站性能 –> 使用应用服务集群改善网站的并发处理能力 –> 数据库读写分离 –> 使用反向代理和CDN加速网站响应 –> 使用分布式文件系统和分布式数据库系统 –> 使用NoSQL和搜索引擎 –> 业务拆分 –> 分布式服务
网站使用的缓存分为:应用服务器上的本地缓存和专门的分布式缓存服务器上的远程缓存。
为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。
CDN 与 反向代理
CDN 与 反向代理 都用于加速网站访问,本质上都是缓存。
CDN 部署在网络提供商的机房,用户请求网站服务时,从距离自己最近的网络提供商机房获取数据。
反向代理部署在网站的中心机房,用户请求首先访问的是反向代理服务器,如果反向代理服务器缓存着用户请求的资源,就将其直接返回给用户。
使用 CDN 与 反向代理 的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的压力。
大型网站架构技术的核心价值就是随网站所需灵活应对。
驱动大型网站技术发展的主要力量是网站的业务发展。
是业务成就了技术,是业务成就了人。
1.3 网站架构设计误区
模式描述了一个不断重复发生的问题及该问题解决方案的核心。
模式的关键在于模式的可重复性,问题与场景的可重复性爱来解决方案的可重复使用。
网站架构模式
山寨与创新的最大区别不在于是否抄袭,是否模拟,而在于对问题和需求是否真正理解与把握。
架构是最高层次的规划,难以改变的决定,这些规划和决定奠定了事务未来的发展方向和最终的蓝图。
维基百科:软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
系统的重要组成部分及其关系构成了系统的架构。
软件架构 5 要素:性能、可用性、伸缩性、扩展性、安全性。