网站架构思维篇

1.背景

2.大型网站的名称含义

1.pv  PV=Page View(s),页面浏览量, 据说 某宝的日均PV 可以达到2亿;

2.UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内 相同的客户端只被计算一次。

3.IP(独立IP):即Internet Protocol,指独立IP数。00:00-24:00内相同IP地址之被计算一次。

3.大大型网站的特点

已我们常用的某宝为例:

1.高并发

2.流量大

3.高可用,7*24小时不间断服务

4.数据多

5.用户分布广(每个地区的网络环境不一样,使用的浏览器客户端也不一样)

6.容易遭受攻击(网站大了容易遭别人嫉妒)

7.更新迭代快,发布频繁

8.渐进式发展(从小网站做到大网站,并非一来就按照大网站的标准做)

4.如何从一个小网站架构发展到一个大型网站的架构

下面以某宝电商网站创业初期的网站发展为例,简单的说明

4.1.最省钱最简单的网站架构

公司创业起步的时候,用户少,订单少,最主要的是钱少,

所以从经济的角度出发,主要网站可以用就行了,这时候最最简单的架构就是

一台服务器,mysql数据库+最简单的ssm框架+vue前端,结构如下:

 

 4.2.数据与应用服务器分开的架构

随着公司的发展,用户量逐渐增加,订单也越来越多,这个时候就有必要将数据与应用分开部署,架构如下

 

 4.3.使用缓存降低数据库访问压力

公司继续发展,用户越来越多,产品订单也越来越多,用户在查询商品的时候可能出现查询慢的现象,

这时候我们可以使用缓存,将常用的数据放在缓存,从而大大降低数据库的压力,最常用的缓存就是Redis

 

 4.4.应用服务器集群

公司继续发展,有了缓存,但是并发过高的时候,

一台应用服务器处理不了这么多的请求,怎么办勒,

那就多弄几台同时处理这样可以大大提高效率,架构如下:

 

4.5.像公交车上下门那样-数据库读写分离

公司再再再继续发展,

业务量越来越大,系统的瓶颈出现在了数据库上...

由于绝大部分的数据库都支持组从热备份,因此在架构设计上,我们可以采用读写分离的方式,架构如下:

4.6.使用CDN加速静态资源访问

公司再继续发展,

网站越做越大,功能也越来越多,

网站页面上的静态资源,如图片,js等也越来越多...

网站的用户分布也非常广....天南地北都有...

国内的网络信号也千差万别......

.....我到底想表达什么呢......如果用户在最南边那就访问最南边的静态资源服务器,这样就可以大大加快访问速度

即CDN的核心思想就是缓存静态资源,用户访问距离自己最近的CDN服务器,架构如下:

 4.7.使用分布式数据库

 公司继续发展

用户量越来越多..

业务数据也越来越多...

单个数据库很难存放所有的数据...

那么我们就需要分库分表....也就是传说中的分布式数据库

可以大体分为两类:

第一:按照业务分库,比如订单作为一个库,发货记录作为一个库,用户数据作为一个库

第二:单个表数据量过大,对于表可以安装时间维度\地区维度等划分,比如某宝的订单了过大,单表很难存储,name我们可以每个月建立一个订单表,这就是按照月划分订单;

系统架构图如下:

4.8.使用搜索引擎

在数据量很大的情况下,

如果只是依赖sql语句要查询一条数据可能会非充慢,

又特别是关键字查询,如某宝上我们经常输入购买产品的关键字查询,

如果不使用搜索引擎,那么就必须使用like查询,like的使用会导致索引失效,那么查询速度会非常慢.

因此行业中经常使用搜索引擎来解决这个问题,常用的搜索引擎框架有lunce、solr、elasticsearch等...

系统架构如下:

4.9.根据业务拆分服务-形成分布式服务

网站在做到很大的情况下

每一个请求接口,或者说每一个业务都会有大量的请求

这时候我们通常会按照业务进行划分,

比如某宝,可以划分为登陆注册、首页、产品查询、订单、评论等产品业务线

不同业务线之间可以通过消息队列来做数据分发与共享

不同的产品业务线由不同的团队负责

网站架构如下:

 

 5.总结

上一节中我们分析了一个小网站如何渐进式的发展成为一个大网站,

所有的网站结构必须依赖业务,也就是说要满足这样一条铁律:在能满足业务的情况下网站架构越简单越好!

完美!

参考:

《大型网站技术架构》 李智慧

 

posted @ 2020-12-03 11:33  李东平|一线码农  阅读(170)  评论(0编辑  收藏  举报