Skip to content

WEB架构演进

本文从前到后描述的网站架构演进的过程。

web1.0

最初网站是静态网站,用户访问网站获取静态web界面,一般是html js css 文件。 特点是从服务器单向为用户提供信息。

单体web架构

开发好之后将应用打包成war包,其中包含servlet,静态文件。这种一般一台服务器即可,服务器上需要包含数据库,用户文件也保存在服务器上。

随着用户增加,服务器空间占用越来越大,随后可以将文件服务独立出来,将文件单独保存在文件服务器上。数据库服务器也需要独立部署一台服务器,确保应用服务器出问题的时候数据库还能正常访问。

这里的不同服务器各司其职,增加了各个服务器的空间,可以增加一定的业务承载量。

等用户量更多之后数据库服务器会遇到瓶颈,这时候可以引入缓存中间件,数据库访问会先落到缓存中间件。命中缓存之后会直接返回,不命中才会访问数据库。

目前应用还是单体部署,如果服务器宕机,会给企业带来毁灭性伤害。

集群部署

为了防止出现单体故障,可以将应用集群化部署,这样即使出现宕机也可以使用集群中的其他节点。

应用,文件,缓存,数据库等都可以部署成集群,成为集群之后涉及到负载均衡。

数据库读写分离,等用户增加到上千万的时候可以将数据库读写分开。

用户增到700W-800W,分库分表是最后的手段,会将不同的表散列在不同的数据库节点中,这里有不同的算法来进行节点分布。

这时候会引入搜索引擎作为搜索的支持,不会将用户的搜索请求落到数据库。

合久必分-微服务

不同的服务需要拆分出来,同时数据库也会拆分出来,这时候每个服务就是一个系统,分别提供不同的服务。

这时候开发测试运维的工作都会变的更加复杂。

这里涉及到分布式锁,消息队列,异步调用。

这里还有各种调优能力是架构的能力要求。