网站架构演化
准备写一系列的博客来介绍和加深理解大型网站技术架构。
说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。
1、初始化阶段的网站架构
早期阶段都比较简单,通常一台服务器就可以搞定了如下图:
2、应用服务器和数据库分离
随着网站的发展,一台server不能满足需求,这时候就需要用到将应用和数据库分离,如下图:
3、使用缓存改善网站性能
现在的网站基本上都会用到缓存,即:80%的业务访问都会集中在20%的数据库上。
4、使用应用服务器集群改善网站的并发处理能力
因为单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器会成为整个网站中的瓶颈,因此使用负载均衡处理器势在必然的,通过负载均衡调度服务器,可将来自浏览器的访问请求分发到应用的集群中的任何一台服务器上
5、数据库读写分离方案
当用户到达一定的规模后,数据库因为负载压力过高而成为瓶颈,而目前主流的数据库都提供主从热备功能,通过配置两台数据库之间的主从关系,可以将一台数据库的数据更新同步到从服务器上,网站利用数据库这一功能实现数据库的读写分离操作,从而改善数据库的负载压力。
6、使用反向代理和CDN或GSL全局负载提供网站性能
提高网站的访问速度,主要手段使用CDN和反向代理。
CDN和反向代理的基本原理都是缓存、区别在于CDN部署在网络提供的机房,而反向代理是部署在网站的中心机房,当用户请求到达中心机房后,首先访问的反向代理,如果反向代理缓存着用户请求的资源,则直接返回。
8、使用NoSQL和搜索引擎
搜索引擎也是基本已经形成现在大型网站必须提供的功能了,网站需要采用一些非关系型数据库技术NoSQL和非数据库查询技术如搜索引擎。
9、业务拆分
大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将真正的网站业务切分成不同的产品线。
具体到技术上,也会根据产品线花费,将一个网站拆分成许多不同的应用,每个应用独立部署维护。应用之间可以通过超链接建立管理,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
10、分布式服务
由于每一个应用系统都需要执行许多相同的业务操作,比如用户管理,session管理。那么将这些公用的业务提取出来,独立部署。