写点什么

WEB 架构的演变

用户头像
Regan Yue
关注
发布于: 4 小时前

WEB 架构的演变

分布式、集群我想大家都听说过,那么这个东西是怎么转换来的呢?


今天我们来聊一聊 WEB 架构的演变。


假如我们要搭建一个购物网站,最初我们只有一台服务器,很快我们发现服务器资源不够用,怎么办呢?

上我们的第一道菜: 物理分离 webserver 和数据库。

简单来说,就是将同一台服务器上的 webserver 和数据库分散到两台服务器。

然后上第二道菜:增加页面静态化(缓存)。

你想一下,用户访问我们的页面,如果每次访问要经常去查询数据库的话,这要消耗多少资源。所以我们要尽可能多静态页面,并将页面缓存。

接下来是第三道菜:增加页面动态缓存。

动态缓存有 asp(.Net)、jsp ( Java ) 这些东西。


用户访问这些页面,比如访问一个 jsp 页面,它是将 Java 代码翻译成 Html 页面。你想一想如果每次访问都要翻译一次,这对服务器资源的消耗比较大。所以要将其缓存,但是页面动态缓存和静态页面的缓存是不一样的,可以使用Freemarker来处理。

我们再来看看第四道菜:增加数据缓存

就是将数据库查到的数据进行缓存。我们接下来简单说一下数据缓存。数据缓存可以使用redismemcache


我们要将百分百确定很多人会用的数据将其缓存。

再看看第五道菜:增加 webserver

增加了一台网站服务器就会发生这种情况:第一次登陆进入的是服务器 A,去数据库访问了一次,而第二次登陆进入的却是数据库 B,又得访问数据库。要想解决这个问题,我们就要使用memcache,其实就是通过分布式 session 共享来实现。


其实这个就是负载均衡。

这是第六道菜:分库

如果数据库访问量大到一定程度,我们就要增加数据库,也就是分库。MySQL 本来就是支持分库的,就是使用 MySQL 主从架构。

然后第七道菜:分表、DAL 和分布式缓存

为什么要分表呢?因为一个表过大了会在某些操作时影响效率。


我们可以用 Hash 来进行分表。


有水平分表和垂直分表两种操作。


DAL 就是定义数据库分发请求规则。根据规则来存数据和取数据。


如果要缓存的数据量很大,我们就使用分布式缓存,用 redis 集群来缓存。

第八道菜:增加更多的 wbeserver

如果还不行,就继续增加 web 服务器吧。

第九道菜:数据读写分离和廉价存储方案

什么叫读写分离?我们数据库无非是两种操作,读和写。我们让主从分离的数据库中主数据库进行增删改,而从数据库进行查的时候多一点。


什么叫廉价的存储方案?其实就是一群小鱼吃大鱼。

再来看看最后一道菜:从需求层面进行拆分

如果还需要扩展应该怎么办呢?


我们就要熟悉业务逻辑,从需求层面上取拆分。

发布于: 4 小时前阅读数: 3
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

对Go、Python、网络安全、区块链感兴趣. · 华为云云享专家 · 掘金资讯创作者

评论

发布
暂无评论
WEB架构的演变