从零开始学习Spring-Cloud之简介

在介绍springcloud之前我们得先明白一下几个问题。

什么是微服务?

微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库。 比如:项目里面有User模块和Power模块,但是User模块和Power模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以吧这2个模块单独分开来,当user需要调用power的时候,power是一个服务方,但是power需要调用user的时候,user又是服务方了, 所以,他们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这时候,微服务的概念就出来了。

微服务和分布式有啥区别?

谈到区别,我们先简单说一下分布式是什么,所谓分布式,就是将偌大的系统划分为多个模块(这一点和微服务很像)部署到不同机器上(因为一台机器可能承受不了这么大的压力或者说一台非常好的服务器的成本可能够好几台普通的了),各个模块通过接口进行数据交互,其实分布式也是一种微服务。 因为都是把模块拆分开来变为独立的单元,提供接口来调用,那么 他们本质的区别在哪呢? 他们的区别主要体现在“目标”上, 何为目标,就是你这样架构项目要做到的事情。 分布式的目标是什么? 我们刚刚也看见了, 就是一台机器承受不了的,或者是成本问题 , 不得不使用多台机器来完成服务的部署, 而微服务的目标 只是让各个模块拆分开来,不会被互相影响,比如模块的升级亦或是出现BUG等等…
讲了这么多,可以用一句话来理解:分布式也是微服务的一种,而微服务他可以是在一台机器上。

微服务与springcloud的关系?

微服务只是一种项目的架构方式,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring-Cloud便是对这种技术的实现。

微服务一定要使用Spring-Cloud吗?

我们刚刚说过,微服务只是一种项目的架构方式,如果你足够了解微服务是什么概念你就会知道,其实微服务就算不借助任何技术也能实现,只是有很多问题需要我们解决罢了例如:负载均衡,服务的注册与发现,服务调用,路由。。。。等等等等一系列问题,所以,Spring-Cloud 就出来了,Spring-Cloud将处理这些问题的的技术全部打包好了,就类似那种开袋即食的感觉。。

Spring-Cloud项目的搭建

因为spring-cloud是基于spring-boot项目来的,所以我们项目得是一个spring-boot项目,这里要注意的一个点是spring-cloud的版本与spring-boot的版本要对应下图:
从零开始学习Spring-Cloud之简介_第1张图片
因为springcloud整合了大量的其它项目,所以他的版本命名看起来会有点奇怪,没错,他并不是1.0/2.0/3.0这种常规命名,而是采用的伦敦地铁站的名称(A,B,C,D之类顺序,貌似是这个,具体可以自己百度了解哈,不过这个也无关紧要。。)所以在版本管理方面有较多的限制,如果我们搭建过程中不严格按照官网给出的建议或者说要求,那么估计会遇到一系列未知的错误。
具体官方文档:点击我到官网

我在以后一系列博客中搭建的版本均是以下版本:

spring-boot:
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.2.RELEASE
    
spring-cloud:
  
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.SR2
                pom
                import
            
        
    

其实添加以上2个依赖,就可以说你已经完成了最简单的spring-cloud项目搭建(在强调一次,版本必须要对应)。接下来只是要添加不同的组件依赖来开启功能。

你可能感兴趣的:(springcloud)