高可用、高性能、易扩展、可伸缩且安全
1.1大型网站特点
- 高并发,大流量
- 高可用
- 海量数据
- 用户分布广泛、网络情况复杂
- 安全环境恶劣
- 需求快速变更、发布频繁
- 渐进式发展
1.2大型网站架构演化
1.2.1初始阶段
数据库,文件等所有资源在一台服务器上,访问量少
1.2.2应用服务和数据服务分类
三台服务器:应用服务器+文件服务器+数据服务器
应用服务器(因为处理大量业务、所以cpu强大)
数据服务器(因为快速检索和缓存,因此需要更快的硬盘和内存)
文件服务器(储存文件、所以需要大的硬盘)
1.2.3使用缓存改善网站性能
网络和现实一样也遵循28定理,不常改变的数据,或者需要经常查询并不经常改变的数据可以以缓存形式存在、减少数据库压力
1、文件缓存
2、redis缓存是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。类似的安装好php扩展// 初始化$cache = new Redis();
3、Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信,php有memcached扩展,安装好了即可使用。
4、APC
1.2.4使用应用服务器集群改善网站的并发处理能力
当一台歍的处理能力或者存储空间不足的时候,不要企图换更大,因为不管多大都满足不了业务需求,这时候就需要增加一台服务器,通过 负载均衡分发到不同的服务器上
1.2.5数据库读写分离
缓存已经接近了一部分数据库压力了,但是如果到达一个瓶颈的时候我们就需要考虑读写分离了,
目前大部分数据库都有主从热备功能,通过配置就可以实现同步
1.2.6反向代理和cdn加速网站响应
他们的基础原理都是缓存和分发机房,区别是cdn部署在网络提供商的机房,
1.2.7分布式文件系统和分布式数据库系统、
当读写分离满足不了时,就需要拆分库,分库分表是数据库的最后手段,将不同业务的数据库部署到不同的服务器上