单体到集群
通过做饭举个例子。
首先明确做饭的工序(这里先忽略顺序):买菜,洗菜,蒸饭,炒菜,出锅 。
一个厨师做饭就是单体
一群厨师做饭就是集群
明确一点:集群只是增加了服务器而已,大家做的事情还是一样,下图我用XXX.Java表示了同样的事情,为的只是分担一下单台服务器的压力
单体应用
最简单的模式,只有一台服务器独立处理请求。
集群
集群是由多台机器独立完成相同任务
集群通常是多台服务器在同一个机房内,多台服务器之间一般会通过网路进行高速通信,为外部提供同样的服务(这里的网络一般都是有线网络)
因为集群是多台机器,其目的就是缓解压力,图中的注册中心其实也就是负载均衡服务器,通过算法路由出集群中的一个机器。具体算法可以网上搜索 负载均衡算法,只需要明白算法的作用就是选出一台机器,例如根据机器性能设置权重,A机器性能较差,则设置为权重1,B机器性能较好设置为权重2。(默认权重越高越容易被选取)
集群处理方式
这里说明一下下图,注册中心路由了机器,可以打到机器上面,可以不用返回再去重新请求(这种方式其实是比较常见的)
分布式
什么是分布式呢,分布式是由几个子系统共同协作完成一个任务
前面讲做饭都是由一个人完成,现在改变策略了。
一个人专门炒菜,一个人专门负责买菜,一个人专门负责配料。
图中AAA.Java BBB.Java CCC.Java就是单独的系统,这里的例子表示请求打过来时,通过解析发现由C系统负责处理,但是C系统需要和B系统协作,这里就完美避开了A系统,所以解耦合了。
这里只是简单的通过请求特征xxxServuce去描述的,实际肯定不是这么简单,但是原理都一样,要知道无论怎样变化,一个请求都会被解析,首先打到某个子系统去处理请求(基于分布式前提)
集群与分布式
看来上面的过程,我相信理解下图并不难了
微服务和分布式
总的来说很像。
微服务
现在这里是一个study,例如还有studyA,studyB将来分别部署运行起来,它们之间通过网络远程调用协作,study、studyA、studyB这几个才叫做微服务。微服务就是软件架构层面的思想
微服务就是子系统或者服务的细粒度划分,例如study服务的更细粒度的划分,为的是解耦合,可拓展,注意理解微服务的微**
分布式
系统部署硬件层面,将study、studyA、studyB真正地部署到服务器上面运行起来,整个系统就是分布式系统了
单体架构、微服务、集群、分布式
单体架构并不一定是一台机器,单体结构可以做集群,例如第一个集群那个例子,本质上并没有服务的拆分。单体架构🈯️的一个系统内完成许多事情,不代表不能有多个机器
偏硬件层面
集群:多台机器可以独立完成同一任务,谁做都一样
分布式:子系统独立部署到机器上,分布式强调一些网路、硬件、网关,分布式事务、锁等。
恳请大佬们指导
java工作快一年了,诸多不对的地方,请大家指导,别喷,狗头保命!!!