SpringCloud中几个很重要的组件

写在前面

其实在这些个Starter之上,是一个团队的努力结果,从下图可以看出,每个Starter都是基于相应类似Netflix团队的Starter-Netflix-XX,开发,团队会根据需要,在Starter-Netflix-XXX中封装SDK,最后整合使用在Starter中,需要注意的是,当我们想当然的想使用某些依赖的时候,你确定,是否添加已重复的依赖,或者你根本就没使用更方便集成的Starter-XXX依赖,只是基于某些Starter-Netflix-XXX依赖,开发…

注意,Starter-Netflix-XXX,只是Netflix团队基于SpringCloud开发的微服务的架构,也是目前使用份额最大的一部分,包括这24个Starter,开箱即用的Starter,大部分也是Netflix团队的成果,还有包括Spring家族,淘宝团队等等…

下面的内容,就是围绕这24个Starter…

一、spring-cloud-starter-eureka

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.3.2.RELEASE</version>
</dependency>

1.1、待办事项

  • Netflix团队
  • Demo

1.2、基本介绍

微服务中常用到的用于管理微服务间的调度和监控用的
源码中冰山一角,是Netflix团队集成多种优秀的实现以及多种结构的数据封装而成的

二、spring-cloud-starter-eureka-server

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.3.2.RELEASE</version>
        </dependency>

2.1、待办事项

  • Netflix团队
  • Demo

三、spring-cloud-starter-turbine

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

3.1、待办事项

  • Netflix
  • Demo

四、spring-cloud-starter-hystrix

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.3.1.RELEASE</version>
</dependency>

4.1、待办事项

  • Netflix
  • Demo

五、spring-cloud-starter-ribbon

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>

5.1、待办事项

  • Netflix团队
  • Demo

六、spring-cloud-starter-zuul

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
            <version>1.3.0.RELEASE</version>
        </dependency>

6.1、待办事项

  • Netflix团队
  • Demo

6.2、API 统一网关

简单配置如下

zuul:
  prefix: /api
  routes:
    hello-server:
      path: /server/**
      url: http://localhost:8071
    hello-client:
      path: /client/**
      serviceId: HELLO-CLIENT

这样可以通过访问当前服务的 ip:port/api/server/xxx,即可访问hello-server的xxx服务

七、spring-cloud-starter-sleuth

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

7.1、待办事项

  • Spring团队
  • Demo

八、spring-cloud-starter-alibaba

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

淘宝团队,这是一个Pom工程

   <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>0.9.0.RELEASE</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>spring-cloud-starter-alibaba</artifactId>
    <packaging>pom</packaging>
    <name>Spring Cloud Alibaba Starters</name>
    <description>Spring Cloud Alibaba Starters</description>
    <modules>
        <module>spring-cloud-starter-alibaba-nacos-config</module>
        <module>spring-cloud-starter-alibaba-nacos-config-server</module>
        <module>spring-cloud-starter-alibaba-nacos-discovery</module>
        <module>spring-cloud-starter-alibaba-sentinel</module>
        <module>spring-cloud-starter-alibaba-seata</module>
        <module>spring-cloud-starter-stream-rocketmq</module>
        <module>spring-cloud-starter-bus-rocketmq</module>
        <module>spring-cloud-starter-dubbo</module>
    </modules>

8.1、待办事项

  • 淘宝团队
  • Demo

九、spring-cloud-starter-archaius

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-archaius</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>

9.1、待办事项

  • Netflix团队
  • Demo

十、spring-cloud-starter-config

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>RELEASE</version>
        </dependency>

10.1、待办事项

  • Spring团队
  • Demo

10.2、基本介绍是springcloud生态系统中的分布式的配置实现,

这里有代码示例,基于GITHUB作为分布式配置的管理

Github仓库如下

两个Maven工程(Client + Server) + Github的仓库

工程代码示例链接在这里

上面的代码示例没有实现热加载

关于,实现热部署,需要用到 MQ + Spring Cloud Bus,有时间我再整理出代码实现

十一、spring-cloud-starter-bus-amqp

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

11.1、待办事项

  • Spring团队
  • Demo

十二、spring-cloud-starter-consul

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

12.1、待办事项

  • Consul团队
  • Demo

十三、spring-cloud-starter-consul-config

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-config</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

13.1、待办事项

  • Consul团队
  • Demo

十四、spring-cloud-starter-consul-discovery

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

14.1、待办事项

  • Consul团队
  • Demo

十五、spring-cloud-starter-contract-stub-runner

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

15.1、待办事项

  • Spring家族
  • Demo

十六、spring-cloud-starter-contract-verifier

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-contract-verifier</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

16.1、待办事项

  • Spring家族
  • Demo

十七、spring-cloud-starter-feign

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>

17.1、待办事项

  • Netflix团队
  • Demo

十八、spring-cloud-starter-gateway

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

18.1、待办事项

  • Spring家族
  • Demo

十九、spring-cloud-starter-oauth2

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
            <version>1.2.0.RELEASE</version>
        </dependency>

19.1、待办事项

  • Spring家族
  • Demo

二十、spring-cloud-starter-openfeign

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

20.1、待办事项

  • Netflix团队
  • Demo

二十一、spring-cloud-starter-stream-kafka

         <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-stream-kafka</artifactId>
                    <version>2.0.1.RELEASE</version>
                </dependency>

21.1、待办事项

  • Spring家族
  • Demo

二十二、spring-cloud-starter-stream-rabbit

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>

22.1、待办事项

  • Spring家族
  • Demo

二十三、spring-cloud-starter-stream-rocketmq

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>

23.1、待办事项

  • 淘宝团队
  • Demo

二十四、spring-cloud-starter-zipkin

<dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-zipkin</artifactId>
             <version>2.1.0.RELEASE</version>
         </dependency>

24.1、待办事项

  • Spring家族
  • Demo

二十五、其他

SpringCloud中还有很多,类似的开箱即用的Starter,谷歌,亚马逊,微软等等都有相应的微服务封装使用,只是基于资源和网络有限,不太方便整理…