分布式架构-概述

本文是 《大型网站技术架构:核心原理与案例分析》的学习和记录

1、会直接从一张图解读分布式架构

2、在解读前先学习几个关键概念

分布式和集群:

分布式就是一样东西拆分成多个去处理,比如说分布式数据库,我有一份个人信息的数据,但是数据量很大,我就可以根据城市将他拆分到多个数据库,如 person_shanghai放上海用户的数据,person_jiangsu就放江苏用户的数据。

如果是业务,以买东西为例,假如我们把点外卖的付款动作分为三步,一步是用户账户里扣钱,一步是商家账户里加钱,还有一步是通知商家做菜,这三步在其他两个步骤没有出错的情况下是互不依赖的,那么就可以把付款这一个动作交给扣钱,加钱和通知三个业务子系统去做。

集群是相同的东西复制成多份,通过负载均衡来配置。比如我原来只有一台A服务器,上限是处理1000个请求,我现在加一台B服务器,如果A服务器比B服务器多了,我就吧请求分发到B服务器上,这样理论上限就是2000个请求,如果还要增加请求上限,那就加C服务器。

CDN和反向代理:

CDN和反向代理的基本原理都是缓存。

CDN的全称Content Delivery Network,(缩写:CDN)即内容分发网络。解决的是网点分布不均的问题,比如我在中国想访问美国的某个网址,由于访问路径过长就会导致访问很慢,这时候如果在中国搭建一个缓存服务器,就可以极大的加快访问速度。

cdn的缓存服务器会分布在各个地方,当用户发出请求时会定位到离用户最近的缓存服务器,首先查看缓存服务器上是否有用户请求的数据,如果有则返回给用户,如果没有,则查找最近有该资源的缓存服务器或者直接到真正的服务器上去查找资源返回给用户。

反向代理是部署一个中心机房,用户请求会先进入代理服务器,如果代理中有用户请求的资源就直接返回。

应用服务器和业务服务器

应用服务器主要控制的是服务器和用户界面的数据交互,而业务服务器主要控制的是服务器的业务逻辑。

比如我要计算今年的产值,那么请求发送到服务器以及对请求数据的封装就是在应用系统中完成的,然后再将这些数据包装分发到业务服务器去做处理,处理完后返回数据到应用系统,应用系统再将数据显示到前台。

消息队列:

当访问服务器的请求过多(如秒杀,淘宝双十一)时,可能会把服务器挂掉,这时候使用消息队列将后续的请求存储在队列中,等处理完后在发送,避免服务器挂掉的情况。

另外消息队列应用生产者消费者模式可以提高服务器响应速度。

下面来看这张图

首先这个架构将请求先交给用户附近的机房去处理,如果没有则请求中心代理服务器,

如果代理服务器也没有则通过负载均衡和应用系统集群来确定请求发送到哪台应用服务器上,应用服务器访问分布式业务服务器,业务服务器访问的数据根据类型再访问不同的数据服务器。

这里有一个注意点,就是不同用处的服务器的配置是不一样的,如缓存服务器,他的数据大多数都是放在内存中,所以缓存服务器需要的内存大的服务器,而数据库服务器需要更快的硬盘和内存交互,所以他对硬盘的读取速度有比较高的要求,现在也有将数据库放在内存中的做法,这样成本稍高。

猜你喜欢

转载自blog.csdn.net/a397525088/article/details/81180243