SPRING CLOUD ALIBABA系列(一)初步介绍 有更新!

Published on with 367 views


    image.png


    微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元

    微服务的典型特征有:

    • 分布式服务组成的系统
    • 按照业务而不是技术来划分组织
    • 做有生命的产品而不是项目
    • 智能化服务端点与傻瓜式服务编排
    • 自动化运维
    • 系统容错
    • 服务快速演化

    spring、spring boot、spring cloud、spring cloud alibaba他们的关系如下

    spring > spring boot > spring cloud > spring cloud alibaba

    他们是层级依赖的关系,由于Spring Cloud基于Spring Boot构建,而Spring Cloud Alibaba又基于Spring Cloud Common的规范实现

    Spring Cloud是用来管理Spring Boot微服务的一系列框架的有序集合。利用Spring Boot的开发便利性,Spring Cloud巧妙简化了分布式系统基础设施的开发,例如服务发现注册、配置中心、消息总线、负载均衡、断路器等,都可以用Spring Boot的开发风格做到一键启动和部署。

    Spring Cloud并没有重复造轮子,而是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终为开发者提供了一套简单易懂、易部署、易维护的分布式系统开发工具包。

    Spring Cloud有很多组件,其中最核心的组件有:Eureka(注册中心)、Hystrix(断路器)、Config(配置中心)、Zuul(代理、网关)等等。

    Spring cloud中文官网:
    https://springcloud.cc/

    由于版本问题,会导致在启动时出现如下错误

    16:55:30.655 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
    java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V
    	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:157)
    	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:98)
    	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:64)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
    	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75)
    	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
    	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    	at com.example.demo.DemoServerApplication.main(DemoServerApplication.java:12)
    exit status 1
    Process finished with exit code 0
    

    由于Spring Cloud是一个拥有诸多子项目的大型综合项目,可以说是对微服务架构解决方案的综合套件组件,其中包含的各个子项目都独立的进行着内容的迭代与更新,各自维护自己的发布版本号。

    因此每一个Spring Cloud的版本都包含了不同版本的子项目,为了管理每个版本的子项目清单,避免版本号与其子项目的版本号混淆,故没有采用版本号的方式,而是采用版本名的方式。

    这些版本采用的伦敦地铁站的名字,按照字母排序对应版本的时间顺序
    比如最早的RELEASE版本是Angel,第二是Birxton……

    可以参考如下表格,关于spring cloud与spring boot版本的兼容性
    以下文档来自spring cloud官网

    Table 1. Release train Spring Boot compatibility
    (spring boot 发行版本兼容性)

    Release Train Boot Version
    Greenwich 2.1.x
    Finchley 2.0.x
    Edgware 1.5.x
    Dalston 1.5.x

    Table 2. Release train contents
    (发行版本内容)

    Component Edgware.SR5 Finchley.SR2 Finchley.BUILD-SNAPSHOT
    spring-cloud-aws1.2.3.RELEASE 2.0.1.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-bus 1.3.3.RELEASE 2.0.0.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-cli 1.4.1.RELEASE 2.0.0.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-commons 1.3.5.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-contract 1.2.6.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-config 1.4.5.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-netflix 1.4.6.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-security 1.2.3.RELEASE 2.0.1.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-cloudfoundry 1.1.2.RELEASE 2.0.1.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-consul 1.3.5.RELEASE 2.0.1.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-sleuth 1.3.5.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-stream Ditmars.SR4 Elmhurst.SR1 Elmhurst.BUILD-SNAPSHOT
    spring-cloud-zookeeper 1.2.2.RELEASE 2.0.0.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-boot 1.5.16.RELEASE 2.0.6.RELEASE 2.0.7.BUILD-SNAPSHOT
    spring-cloud-task 1.2.3.RELEASE 2.0.0.RELEASE 2.0.1.BUILD-SNAPSHOT
    spring-cloud-vault 1.1.2.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-gateway 1.0.2.RELEASE 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-openfeign 2.0.2.RELEASE 2.0.2.BUILD-SNAPSHOT
    spring-cloud-function 1.0.0.RELEASE1.0.1.RELEASE 1.0.1.BUILD-SNAPSHOT

    个人选择使用
    spring boot版本:2.0.6.RELEASE
    spring cloud版本:Finchley.SR1
    能够良好兼容,并且是比较新的版本,能够实践最新特性。

    现在的Spring Cloud Alibaba由于没有纳入到Spring Cloud的主版本管理中,所以我们需要自己去引入其版本信息,使用BOM进行管理,当前最新版0.2.1.RELEASE

                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>0.2.1.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    

    Responses