0%

网站架构发展

网站架构发展

初始阶段的架构

最初的架构所有的服务器都在同一台机器上面,没有太多的用户访问,不存在性能瓶颈

应用服务器与数据服务的分离

随着业务的发展,服务器的瓶颈主键暴露了出来,最明显的一个问题就是服务器的存储空间不足,于是乎我们将应用于数据分厘,应用服务器、数据库服务器、文件服务器三者分离

使用缓存改善网站性能

业务继续发展,数据库的压力越来越大,顶部业务的访问量占据了整个业务的80%的流量,于是乎便有了缓存服务器技术,将访问量大的数据提前缓存到缓存服务器,提升了服务的速率与质量。

使用应用服务器集群改善网站的并发处理能力

单一应用服务器在面对高并发的应用场景有明显的性能瓶颈,于是我们通过应用服务器集群来解决这个问题,通过一个负载均衡服务器来调度资源。

数据库读写分离

使用了缓存后,基本解决了数据库读的压力,但随着业务的发展,数据写的压力越来愈大,这时候通过读写分离来解决,通过使用主从数据库服务器来优化数据库的性能,写入操作都到达主服务器,从服务器从主服务器处复制数据,读取操作都到从服务器。

使用反向代理和 CDN 加速网站响应

cdn 内容分发网络,通过将用户引流至离用户最近的服务器,减轻中心服务器的压力。通过dns服务器来实现负载均衡。

反向代理

使用分布式文件系统和分布式数据库系统

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也一样,需要使用分布式文件系统。

数据库划分有两种,分别是分割与分层

分层是垂直的,将不同的业务的数据独立存储

分割是水平的,当一个表的数据超过了数据库的性能极限的时候,将其分割成几篇存储到不同的服务器上面

使用 NoSQL 和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如 NoSQL 和非数据库查询技术如搜索引擎。

业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。如大型购物交易网站都会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。

具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署。应用之间可以通过一个超链接建立关系(在首页上的导航链接每个都指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统

分布式服务

随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。

Buy me a coffee.

欢迎关注我的其它发布渠道