SpringCloud学习笔记(一)—— SpringCloud入门

什么是微服务?

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

微服务和分布式的区别

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

微服务与Spring-Cloud的关系(区别)

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

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

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

Spring-Cloud项目的搭建

因为spring-cloud是基于spring-boot项目来的,所以我们项目得是一个spring-boot项目。这里要注意的一个点是spring-cloud的版本与spring-boot的版本要对应如下:

  • 大版本对应: 
Spring Cloud Spring Boot
Angel版本  兼容Spring Boot 1.2.x
Brixton版本  兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Camden版本 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Dalston版本、Edgware版本 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Finchley版本 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Greenwich版本 兼容Spring Boot 2.1.x
  • 在实际开发过程中,我们需要更详细的版本对应: 
Spring Cloud Spring Boot
Dalston.RC1 1.5.2.RELEASE
Edgware.RELEASE 1.5.9.RELEASE
Finchley.BUILD-SNAPSHOT 2.0.2.RELEASE
Finchley.RELEASE 2.0.3.RELEASE

注意:SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误,比如eureka注册了结果找不到服务类啊,比如某些jar导入不进来啊,等等这些错误。上面列出来springBoot和spring cloud的版本对应关系,需要配套使用,才不会出现各种奇怪的错误。

关于spring cloud1.x版本和2.x版本区别

spring cloud各个版本之间是有所区别的,比如在SpringCloud中,1.X和2.X版本在pom.xml中引入的jar包名字都不一样,比如有的叫spirng-cloud-starter-hystrix 有的叫spring-cloud-netflix-hystrix,维护起来会比较困难。

spring-cloud-dependencies 版本列表可查看:  

https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies

spring-boot-starter-parent 版本列表可查看:

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent

1.x版本pom.xml里几个基本用到的jar长这样:


    4.0.0
    com.joyce
    joyce-test
    1.0
    jar

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.9.RELEASE
         
    
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Edgware.RELEASE
                pom
                import
            
        
    
    
    
        UTF-8
    

    
        
            org.springframework.cloud
            spring-cloud-starter-feign
        
        
            org.springframework.cloud
            spring-cloud-starter-hystrix
        
        
            org.springframework.cloud
            spring-cloud-starter-zipkin
        
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            
        
        
            org.springframework.boot
            spring-boot-starter-jetty
        
        
            org.springframework.cloud
            spring-cloud-starter-ribbon
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

而在2.x版本中,比如我们需要eureka,去maven仓库中可能会看到deprecated, please use spring-cloud-starter-netflix-eureka-client这类提示,包括使用ribbon也会有。

å¨è¿éæå¥å¾çæè¿°

所以个人猜测2.x中统一用spring-cloud-starter-netflix-xx 替换了原有的 spring-cloud-starter-xx,所以2.x的版本pom.xml类似如下这样:


    4.0.0

    com.forezp
    service-feign
    0.0.1-SNAPSHOT
    jar

    service-feign
    Demo project for Spring Boot


    
        com.forezp
        sc-f-chapter3
        0.0.1-SNAPSHOT
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
    
    
    

在我这里我的版本是这样的:

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
        
    


当你项目里面有这些依赖之后,你的spring cloud项目已经搭建好了(初次下载spring-cloud可能需要一点时间)

 

你可能感兴趣的:(SpringCloud学习笔记,spring,spring,boot)