1、大型网站架构特点:
- 高并发、大流量
- 高可用:系统7*24小时不间断服务
- 海量数据
- 用户分布广泛、网络情况复杂
- 需求快速变更、发布频繁
- 渐进式发展
2、大型网站架构的发展历程
- 所有服务放置一台服务器上
- 应用服务和数据服务分离
- 使用缓存改善网站性能
网站访问特点也遵从二八定律,即80%的业务访问集中在20%的数据上,所以将高频数据放置在缓存中;
缓存分为两种:缓存在应用服务器上的本地缓存和缓存在专门分布式缓存服务器上的远程缓存,本地缓存访问速度更快一些,但是受应用服务内存限制,其缓存数据量有限,而且会出现和应用服务争用内存的情况;远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器;
缺点:使用缓存后数据访问压力减小 ,但是高峰期,单一应用服务器能够处理的请求数有限,应用服务器会成为访问瓶颈;
- 使用应用服务器集群改善访问压力
使用集群是网站解决高并发、海量数据问题的常用手段。
通过负载均衡调度器,可将来自用户浏览器的访问请求分发到应用服务器任何一台服务器上。
- 数据库读写分离
使用缓存一定程度上可以减少和数据库的直接交互,但是仍有一部分(缓存不命中、缓存过期)和写操作直接和数据库交互,用户达到一定规模后,数据库会应为负载压力过高而成为网站的瓶颈;
现在主流服务器都支持主从热备功能,通过配置两台数据库的主从关系,可将一台服务器的数据同步到另外一台服务器上,此功能可实现数据库的读写分离;在写操作时访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务读数据的时候可通过从数据库获取;
- 使用反向代理和CDN加速网站响应
CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,用户在请求访问网站时,可以从距离自己最近的网络提供商机房获取数据,而反向代理在部署在网站机房,当用户请求到达中心机房后,首先访问的是反向代理服务器,如果反向代理服务器缓存着用户请求的资源,就将其直接返回给用户。
使用这两个的目的都是尽早返回数据给用户,一方面加快访问速度,另一方面减轻后端服务器的负载压力。
- 使用分布式文件系统和分布式数据库系统、
- 使用NoSQL和搜索引擎
应用服务器通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦;
- 业务拆分
- 分布式服务
如果一个应用系统有相同的业务操作,就将共同的业务抽离出来
总结:一个网站没有从诞生就是大型网络,都是随着用户量的增加,业务发展从小型慢慢变大,所有的技术架构都是为业务服务的,所以在架构设计中不要一味追随大公司的设计方案,不要为了技术而技术,不要企图用技术解决所有问题。