目录
本篇博文,将根据分布式系统的演进一步一步介绍每一种架构的形式,最后为大家总结了一些分布式中常用的名词解释
单机架构
单机架构简单来说就是只有一台服务器,这台服务器完成项目中的所有工作
假设项目是一个电商网站,那么单机架构图如下:
上图中,后端服务主要分为两部分:
- 应用服务:应用服务就是程序员编写的一些应用程序
- 数据库服务:数据库服务常见的有MySQL服务
- 注意:MySQL是一个C/S结构的程序,本体是MySQL服务器(存储和组织数据的部分)
在上图中,数据库服务可以去掉,由应用服务即处理业务,也存储数据。也可以实现但较为麻烦!
在早些年,单机架构有着一系列的性能瓶颈,但随着硬件水平的提高,哪怕只有一台主机,主机的性能也是很高的,基本能满足。
在单机架构中上述服务都由一台服务器提供,单机结构在大多数小公司(服务器请求较少时)当中被采用
分布式系统
分布式系统的引入
尽管我们说现在服务器的性能经过多年的发展,已经非常高了,但它的性能也有瓶颈。
如果一个项目业务进一步增加(请求繁忙,处理不过来),用户量和数据量都水涨船高,高到最后达到了一台主机难以应付时我们应该怎么办呢?
办法分为两种:
- 开源:这种解决方法简单粗暴,啥不够加啥就好,CPU不够用就换个更牛的CPU,内存不够换个更牛的内存,依次类推
- 节流:软件优化,这比较考验程序员的能力,程序员需要通过性能测试找到哪个环节的瓶颈,并对此进行一系列优化
对于节流方式,我们能理解,但当节流方式不可用了,即优化已经到了极致了,还是难以应付大量的业务,我们只能采用开源方法!
但对于一台主机来说,它的硬件资源也是有上限的
硬件资源包括但不限于如下几种:
- CPU
- 内存
- 硬盘
- 网络
可以看出,一台主机加装的硬件数量受主板的扩展能力限制。你总不可以一台主机装20个CPU吧?
那么如果我们一台主机开源也已经做到极致了,还是无法应付大量的业务,我们应该怎么办呢?
此时我们只能引入多台主机了!当然,不是说一台主机买来了就可以直接解决问题了,而是需要我们在软件上做出对应的调整和适配后才可以!
一旦引入了多台主机,那么我们的系统可以称之为分布式系统
分布式系统正确认识
通过上述的一系列过程,我们会发现一个项目不是一定要设计成分布式系统才是最优的,设计成分布式系统是要根据业务来判断的,这是万不得已的下下策,因为分布式系统会带来弊端
分布式系统的弊端:系统的复杂程度大大提高, 引入越多的主机,那么分布式系统的复杂程度可以说是成指数增长的,也就是出现bug的概率会提高!
分布式系统的分类
根据演化过程,分布式系统可以分成如下几类:
- 应用数据分离架构
- 应用服务集群架构
- 读写分离/主从分离架构
- 冷热分离架构
- 垂直分库
- 微服务架构
接下来,本文将根据如上架构进行一一详解