前言:
想要了解spring-cloud有以下前提:
1.学习掌握java语言
2.了解过spring全家桶,学习掌握springboot(尽量有过实践)
如果以上条件均满足,需要思考下列一个问题:
大家在使用springboot创建项目时,首先有一个springApplication启动类,通过注解@SpringBootApplication+run方法可以启动springboot项目。但是如果此时项目比较大,之后一个项目中有多个服务,包括订单服务、商品列表服务等等。

此时如果该springboot启动后出现了一些问题,导致所有服务都用不了了,此时很明显是不合理的。
那么有没有办法,将以上的服务尽量拆分开来,服务以服务之间尽量不要相互影响!!
那么此时就出现了微服务,将一个大的服务,拆分为多个小的服务,并且服务之间没有相互影响。
所以此时,学习微服务的前提就需要知道单体架构(服务)的缺点,以及如何补救。
集群和分布式架构:
在认识微服务之前需要认识一下什么是集群什么是分布式!!
当⽹站的用户量越来越⼤, 需求也会越来越多, 流量也会越来越⼤, 服务可能就会面临以下问题:
1.后端服务器的压⼒就会越来越⼤, 负载越来越⾼, 甚至出现⽆法访问的情况
2.业务场景逐渐复杂. 为了满足用户的需求, 单体应⽤也会越来越⼤. 各个业务代码之间的耦合度也会越来越⾼. 任何⼀个问题, 都需要整个项⽬重新构建, 发布
3.⼀个微小的问题, 可能会导致整个应⽤挂掉
我们从两个⽅⾯进⾏优化:
横向: 添加服务器,把单台机器变成多台机器的集群
纵向: 把⼀个应⽤, 按照业务进行拆分, 拆分为多个项目. 此架构也称为垂直架构
综上也可以引出集群与分布式
集群(cluster):是将⼀个系统完整的部署到多个服务器上, 每个服务器都能提供系统的所有服务, 多个服务器通过负载均衡调度完成任务. 每个服务器称为集群的节点(node)
分布式:是将⼀个系统拆分为多个⼦系统,多个⼦系统部署在多个服务器上,多个服务器上的⼦系统协同合作完成⼀个特定任务.
明白了集群与分布式之后,此时来理解微服务,其实就相当于是在分布式架构下,对一个大的服务再次进行细小的拆分。
综上:
分布式: 服务拆分, 拆了就⾏.
微服务 : 指⾮常微⼩的服务, 更细粒度的垂直拆分, 通常指不能再拆的服务
以下是3种不同角度的区别:
1.分布式架构侧重于压⼒的分散, 强调的是服务的分散化.
2.微服务侧重于能⼒的分散, 更强调服务的专业化和精细分⼯.
3.从实践的⻆度来看, 微服务架构通常是分布式服务架构, 反之则未必成⽴. 所以, 选择微服务通常意味着需要解决分布式架构的各种难题.


