Appearance
WEB架构演进
本文从前到后描述的网站架构演进的过程。
web1.0
最初网站是静态网站,用户访问网站获取静态web界面,一般是html js css 文件。 特点是从服务器单向为用户提供信息。
单体web架构
开发好之后将应用打包成war包,其中包含servlet,静态文件。这种一般一台服务器即可,服务器上需要包含数据库,用户文件也保存在服务器上。
随着用户增加,服务器空间占用越来越大,随后可以将文件服务独立出来,将文件单独保存在文件服务器上。数据库服务器也需要独立部署一台服务器,确保应用服务器出问题的时候数据库还能正常访问。
这里的不同服务器各司其职,增加了各个服务器的空间,可以增加一定的业务承载量。
等用户量更多之后数据库服务器会遇到瓶颈,这时候可以引入缓存中间件,数据库访问会先落到缓存中间件。命中缓存之后会直接返回,不命中才会访问数据库。
目前应用还是单体部署,如果服务器宕机,会给企业带来毁灭性伤害。
集群部署
为了防止出现单体故障,可以将应用集群化部署,这样即使出现宕机也可以使用集群中的其他节点。
应用,文件,缓存,数据库等都可以部署成集群,成为集群之后涉及到负载均衡。
数据库读写分离,等用户增加到上千万的时候可以将数据库读写分开。
用户增到700W-800W,分库分表是最后的手段,会将不同的表散列在不同的数据库节点中,这里有不同的算法来进行节点分布。
这时候会引入搜索引擎作为搜索的支持,不会将用户的搜索请求落到数据库。
合久必分-微服务
不同的服务需要拆分出来,同时数据库也会拆分出来,这时候每个服务就是一个系统,分别提供不同的服务。
这时候开发测试运维的工作都会变的更加复杂。
这里涉及到分布式锁,消息队列,异步调用。
这里还有各种调优能力是架构的能力要求。