* 大型网站架构演变
高可用、高性能、易扩展、可伸缩且安全的网站。
大型网站软件系统的特点:
1 高并发,大流量 : google 日均pv 35亿,ip访问 3亿
2 高可用: 7×24小时不能宕机
3 海量数据:百度收录网页数百亿,facebook每周上传照片10亿。
4 用户分布广泛,网络情况复杂:国内运营商网络互通难,国外电缆故障。
5 需求快速变更,发布频繁:快速适应市场,发布频率要求极高。
6 渐进式发展: 大型的互联网网站都是一个小网站开始。
* 大型网站架构模式
1 分层: 如网站软件系统分为 应用层、服务层、数据层
2 分割: 不同功能和服务分割开,包装成高内聚低耦合的模块单元。
3 分布式:
大量机器协同工作, 分布式带来的问题
1 调用通过网络。
2 过多的服务器, 关键节点的宕机, 带来大量应用不可用。
3 数据一致性困难,分布式事务难以保证。
4 网站拓扑复杂。难以维护。
分布式方案: 分布式应用和服务 、分布式静态资源、分布式数据和存储、分布式计算、分
布式配置、分布式锁、分布式文件系统。
4 集群:
分布式将模块独立部署, 集群让某个模块能支撑更大的并发请求,并且通过失效转移带来高可
用。
5 缓存:
将数据存放在离计算最近的位置以加快处理速度。
1 CDN: 内容分发网络, 部署离用户终端最近的网络服务商,缓存静态资源。
2 反向代理: 部署在网站前端, 访问首先到达反向代理服务器,缓存静态资源。
3 本地缓存: 应用服务器本地缓存。
4 分布式缓存: 大量分布式缓存集群, 应用服务器通过网络访问缓存数据。
缓存使用前提:数据访问热点不均衡,数据有效期不能太短。
6 异步:
解耦合, 单一服务器使用内存队列, 分布式系统,使用分布式消息队列。 提高可用性, 削峰
填谷,加快响应速度,提升用户体验。
7 冗余:
保证数据冗余, 即使故障,亦可恢复。 冷备、热备、灾备。
8 自动化:
自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自
动化失效转移等。
9 安全
通信安全, 数据安全等
* 大型网站的核心架构要素
架构: 最高层次的规划,难以改变的决定。
1 性能: 响应时间、TPS、系统性能计数器。
浏览器缓存、页面压缩、合理页面布局、CDN、服务器本地缓存、分布式缓存、异步、集
群、多线程、NOSQL数据库。
2 可用性: 数据冗余, 应用服务器进行集群(会话不能保存在应用服务器上)
3 伸缩性: 是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。
1 应用服务器集群: 不保存数据,通过合适的负载均衡设备。
2 缓存服务器集群: 通过合适的缓存路由算法, 保证不需要重新从数据库加载数据。
3 关系型数据库: 支持数据复制、主从热备, 一般对大规模集群伸缩性支持不好, 一
般在数据库外实现。
4 NOSQL数据库: 天生非常好的伸缩性。
4 扩展性: 新的业务产品,是否对现有产品无影响。 是否高内聚低耦合。
1 事件驱动架构: 分布式消息队列。
2 分布式服务: 将业务和可复用服务分离。 可复用服务多版本服务, 不强制要求应用
同步变更。
3 开发平台接口: 对外部开发者,提供开发平台接口。
5 安全性。
大型网站技术架构,阅读笔记一. 架构概述
最新推荐文章于 2022-02-10 17:27:11 发布