分布式初印象

  • 此文章是我看完老师视频后总结的分布式初印象,给没有接触过分布式的同学们参考浅浅了解什么是分布式,能对它有个概念。

1、分布式概念

不使用分布式之前,全部业务都是由一台服务器完成,当承载量小的时候这种做法还可以,但是承载量一多就容易出问题,一旦服务器出现问题,那么整个系统就会瘫掉。简单类比:有一个餐厅,所有业务都只有你一个人负责,你又作厨师、又要端菜、又是收银员,在客人很少的时候还可以应付得来,但是客人一多起来就会显得手忙脚乱,一旦你在某个节点出了问题,餐厅当天的运营就会受影响。(此时这个餐厅里的你就好比一台服务器,承载了全部业务)

为了餐厅的运营能够顺利保障,按照餐厅的业务分别招聘厨师、服务员,你就负责收银。这样即使客人多也能应付。(招的厨师、服务员就是另外两台服务器)

​ 这就是分布式,根据业务的不同,由不同的服务器负责不同的工作内容。 比如数据库服务器、文件处理服务器、应用程序服务器等。如图:
在这里插入图片描述

2、相关知识点

2.1 应用服务器 及 集群

一般分布式都会在应用程序服务器中搭建一个应用服务器集群(即很多服务器去部署应用)。

2.2 负载均衡器

当请求发送过来的时候为了减轻应用程序服务器的压力,还会通过负载均衡服务器(比如Nginx)去分发不同的请求到不同的应用程序服务器上,即使其中一个应用程序服务器挂了,负载均衡服务器也能将请求分发到另外一个应用程序服务器上。
2.1 和 2.2 如图:
在这里插入图片描述

2.3 分布式缓存服务器 及 集群

然而这么多用户发送请求过来,而数据库服务器读写比较慢。这时候就需要有一台分布式缓存服务器,并且在其中搭建分布式缓存集群。发送过来的请求一般会优先到分布式缓存服务器中获取数据,分布式缓存服务器中没有,才再去数据库中获取。(分布式缓存服务器存在的由来:原本经常访问的数据是会放在应用服务器里缓存的,但是应用服务器的内存有限,缓存会积累得越来越多,就导致应用程序服务器卡顿等,所以为了解决这些问题就有分布式缓存服务器的存在)。
如图:
在这里插入图片描述

2.4 数据库主库和从库

数据库服务器读写很慢压力也很大,可能需要有多个服务器对数据库进行读写分离以及对数据库进行集群。程序员在实现过程中总不能还要去专门配多个数据源去连接我们的多个数据库,那么就有了主库从库的概念,一库负责“写”, 一库负责“读”。

2.5 MyCat

为了不用费心去考虑要读写到那个数据库,并且保证写入的数据和读到的数据都同步,那么就需要MyCat这个数据库中间件来帮我们搞定一切。(关于MyCat的作用,可以看这个文章浅了解下:https://blog.csdn.net/K_520_W/article/details/123702217)。
2.4和2.5如图:
在这里插入图片描述

2.6 消息队列 MQ

当有请求发送过来的时候,几个不同的应用服务器之间是需要互相打交道互相通信的,那么相互通信的实现技术就是消息队列MQ。消息队列是分布式应用间交换信息的重要组件,消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走。通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息。
如图:
在这里插入图片描述

2.7 注册中心

上面看出,因为业务的增加或者扩展,我们多了一些业务要做,但是又不想在同一个应用程序服务器里去加业务而导致牵一发而动全身,所以就需要新的应用程序服务器来承担业务。但是这些应用服务器业务之间会有重合或者冲突的地方,因此我们就会有一个注册中心(管理中心)。注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,所有应用程序的服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。具体需要多查阅分布式注册中心方面的资料。一般会使用Doubbo 、Zookeeper、Spring Cloud等来实现。
如图:
在这里插入图片描述

以上就是个人理解的分布式大概概念,写不对地方的请各位大佬指正。

猜你喜欢

转载自blog.csdn.net/Ivy_Xinxxx/article/details/126172541