网站架构演变
1. 初始架构
特点:
- 应用程序,文件服务,数据库,都在一台服务器里面。
- 优点:简单,易于维护。
- 缺点:不易于扩展,不易于维护,并发与存储空间受到局限。
2. 应用服务和数据服务分离
特点:
- 应用程序和数据库分离,应用程序和文件服务分离
- 应用程序服务器: 比较多应用业务逻辑,会有比较好 cpu。
- 文件服务器: 需要大量的磁盘空间。
- 数据库服务器: 需要磁盘检索,需要比较好的磁盘和内存。
- 优点:易于扩展,易于维护,对并发能力有改善,存储空间改善。
- 缺点:需要多台服务器,成本高,后期访问量增加大,数据库服务压力倍增。
3. 使用缓存来改善网站性能
特点:
- 使用缓存来改善网站性能。
- 缓存: 一种在应用服务器中本地缓存,另外一种远程分布式缓存,比如 redis。
- 优点:提高网站性能,减少数据库压力。
- 缺点:缓存数据和数据库数据不一致,需要考虑缓存数据和数据库数据一致性问题,应用服务器连接遇到瓶颈。
4. 使用集群增加网站并发能力
特点:
- 使用集群增加网站并发能力。
- 负载均衡: 一台服务器接收到请求,然后分发给其他服务器。
- 优点:提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力。
- 缺点:需要多台服务器,成本高,后期访问量增加大,数据库服务压力倍增,数据后期会遇到瓶颈。
5. 使用数据库读写分离
特点:
- 使用数据库读写分离。
- 读写分离: 一台服务器负责写操作,其他服务器负责读操作。
- 主从复制: 一台服务器负责写操作,其他服务器负责读操作,写操作会同步到其他服务器。
- 主从热备: 一台服务器负责写操作,其他服务器负责读操作,写操作会同步到其他服务器,其他服务器可以作为热备。
- 优点:提高网站并发能力,提高网站性能,可以改善数据库服务器遇到高并发压力。
- 缺点:需要多台服务器,成本高,后期访问量增加大,数据库服务压力倍增,数据后期会遇到瓶颈,同时网站根据不同地区访问会有不同的快慢。
6. 网站加速
特点:
- 使用 CDN 加速网站,尽早将网站内容反映给用户 。
- CDN: 内容分发网络,是一种将内容分发到不同地区的网络。
- 优点:提高网站性能,提高网站并发能力,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力。
- 缺点:需要多台服务器,成本高,后期访问量增加大,数据库服务压力倍增,数据后期会遇到瓶颈。
7. 分布式系统
特点:
- 使用分布式系统。
- 分布式系统: 一台服务器负责写操作,其他服务器负责读操作,写操作会同步到其他服务器,其他服务器可以作为热备,同时使用 CDN 加速网站。
- 数据库:业务分库,分表,分区,分布式数据库。
- 优点:提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力,可以改善网站根据不同地区访问会有不同的快慢。
- 缺点:需要多台服务器,成本高,后期访问量增加大,数据库服务压力倍增,数据后期会遇到瓶颈,后面可以考虑使用非关系型数据库。
8. 搜索引擎来助力
特点:
- 使用搜索引擎来助力。
- 搜索引擎: 搜索引擎是一种将网站内容进行索引,然后提供搜索服务的系统。
- NoSQL: 非关系型数据库,比如 redis,mongodb。
- 优点: 提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力,可以改善网站根据不同地区访问会有不同的快慢,可以提高网站搜索能力。
- 缺点: 需要多台服务器,成本高,后期访问量增加大,架构也遇到瓶颈。
9. 业务分而治之
特点:
- 使用业务分而治之,拆分业务,每个业务分成不同产品线。
- 业务分而治之: 一种将业务进行分而治之,然后分布到不同的服务器上。
- 消息队列: 一种将业务进行分而治之,然后分布到不同的服务器上,然后使用消息队列进行通信。
- 优点:提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力,可以改善网站根据不同地区访问会有不同的快慢,可以提高网站搜索能力。
- 缺点:需要多台服务器,成本高,后期访问量增加大,访问数据库连接会有瓶颈。
10. 分布式服务
特点:
- 使用分布式服务,一些共用服务要提取出来,其他系统来调用。
- 分布式服务: 一种将业务进行分而治之,然后分布到不同的服务器上,然后使用消息队列进行通信,然后使用分布式服务进行通信。
- 优点:提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力,可以改善网站根据不同地区访问会有不同的快慢,可以提高网站搜索能力。
- 缺点:需要多台服务器,成本高,后期访问量增加大,其实缺点也是一种平衡。
11. 云计算
特点:
- 使用云计算,将服务器部署到云上。
- 云计算: 一种将服务器部署到云上,然后使用云计算服务。
- 优点:提高网站并发能力,提高网站性能,可以改善应用服务器遇到高并发压力,可以改善数据库服务器遇到高并发压力,可以改善网站根据不同地区访问会有不同的快慢,可以提高网站搜索能力,资源的伸缩性增强。
- 缺点: 云计算服务成本高,后期访问量增加大,成本会更高,其实缺点也是一种平衡。