Spring Cloud 入门——0 序章

本文分享了作者两年来使用SpringCloud进行项目拆分的经验,详细介绍了SpringCloud核心组件如服务发现、熔断器、负载均衡等,并提供了具体项目的实践案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Cloud

大概两年前第一次接触到Spring Cloud,也是第一次开始尝试去对自己负责的项目进行拆分。去理解服务的职责,系统内每个模块的职责。入门已经两年过去了,Spring cloud已经变化了很多,尤其最近开始准备将Spring Boot 1.x 升级到Spring Boot 2.x 的时候,发现和之前相比很多参数和注解的调整范围还是相当多的。

所以在进行版本升级的时候,将这些比较基础的内容整理出来,即是加深自己的印象,也是能够和更多的同学一起学习交流。

Spring Cloud的组件

我们一般说起Spring Cloud的核心组件包含下面内容

  • 服务发现(Eureka、Consul)
  • 熔断器 (Hystrix)
  • 负载均衡(Ribbon)
  • 路由网关(Zuul)
  • 声明式调用(Feign)
  • 数据监控(Turbine)
  • 配置中心(Config)
  • 数据链路追踪(Sleuth-zipkin)
  • 消息队列组件(Stream)

入门的内容

在这两年接触中深深明白,微服务是一个易学难精的知识体系。微服务中每个组件往深了往专业方面扩展都是一个很深的领域。而之所以写写入门的东西,主要是个人经验还是太少精通的地方实在太少,在一些更加专业的内容很可能说一些错误的东西,误导各位同学。另外一方面当然也是时间太少,虽然每天晚上都抽出一两个小时去调试代码但是还是觉得时间远远不够。不过通过这次整理也发现自己在专业的地方欠缺还是太多,后续会尝试针对每个组件进行更加深入的整理。

目录

Spring Cloud 目前整理的目录大概是这样,目前项目已经全部完成,文档内容只记录了一些当时操作的简单流程。

  1. 服务发现
    1. Eureka-服务发现
    2. Eureka 多集群模式
    3. Eureka 安全模式
  2. 熔断器
    1. Hystrix 熔断器服务降级
    2. Hystrix 熔断器添加数据监控
  3. Ribbon 负载均衡
  4. 路由网关
    1. Zuul 分布式路由
    2. Zuul 分布式路由实现文件上传 以及 异常处理
    3. Zuul 分布式路由实现服务降级(fallback)
  5. 声明式调用
    1. Feign 声明式调用
    2. Feign 声明式调用-实现服务降级
    3. Feign 声明式调用-自定义配置
    4. Feign 声明式调用-文件上传
    5. Feign 声明式调用——使用时出现的一些问题
  6. Turbine 集群数据监控
  7. 配置中心
    1. Config 远程配置中心
    2. Config 远程配置中心-实时刷新
    3. Config 远程配置中心-数据加密
  8. Sleuth - Zipkin 实现微服务链路跟踪
  9. stream 消息驱动的分布式
  10. consul 服务发现中心

版本信息

spring boot版本

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

spring cloud版本

        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

这里说一句,Spring Cloud的版本和Spring Boot一定要对应。目前因为每个版本对注释和参数都有调整,假如版本不对应很可能出现错误的配置或者不存在的配置

官方的版本限制

Release TrainBoot Version
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x

涉及的应用

项目名称内容端口服务名称服务中心端口
base-config-client配置中心客户端8710base-config-client8000
base-config-client-bus配置中心客户端使用-bus依赖8716base-config-client-bus8000
base-config-client-encryption配置中心客户端使用-参数加密8717base-config-client-encryption8000
base-config-client-start配置中心客户端(舍弃application配置)8715base-config-client-start8000
base-config-service配置中心服务端8700base-config-service8000
base-config-service-bus配置中心服务端-bus依赖8701base-config-service-bus8000
base-config-service-encryption配置中心服务端-参数加密8703base-config-service-encryption8000
base-consumer服务消费方8200base-consumer8000
base-consumer-sleuth服务消费方-微服务数据链路追踪8201base-consumer-sleuth8000
base-eureka服务发现8000base-eureka8000
base-eureka-cluster服务发现集群8001、8002、8003base-eureka8001、8002、8003
base-eureka-security服务发现安全模式8004base-eureka8004
base-feign声明式调用8453base-feign8000
base-feign-config声明式调用-自定义配置8454base-feign-config8000
base-feign-hystrix声明式调用支持服务降级8455base-feign-hystrix8000
base-feign-hystrix-factory声明式调用支持服务降级factory模式8457base-feign-hystrix-factory8000
base-feign-upload声明式调用-提供文件上传8458base-feign-upload8000
base-hystrix熔断器8404base-hystrix8000
base-hystrix-cluster熔断器集群8405、8406、8407base-hystrix-cluster8000
base-hystrix-dashboard熔断器数据监视8408base-hystrix-dashboard8000
base-hystrix-turbine熔断器集群数据监视8410base-hystrix-turbine8000
base-producer服务提供方8100base-producer8000
base-producer-cluster服务提供方集群8101、8102、8103base-producer-cluster8000
base-producer-security服务提供方安全模式8104base-producer-security8004
base-producer-sleuth服务提供应用-微服务数据链路追踪8106base-producer-sleuth8000
base-producer-upload服务提供应用支持上传8105base-producer-upload8000
base-ribbon负载均衡8600base-ribbon8000
base-stream-clientstream实现消息队列-客户端8703base-stream-client8000
base-stream-producerstream实现消息队列-服务端8704base-stream-producer8000
base-zuul服务网关8300base-zuul8000
base-zuul-fallback服务网关支持服务降级8302base-zuul-fallback8000
base-zuul-upload服务网关文件上传限制8301base-zuul-upload8000
extra-consul-client使用consul实现服务发现-客户端8201extra-consul-client8500
extra-consul-producer使用consul实现服务发现-服务端8200extra-consul-producer8500

项目顶级依赖,上面应用的父级依赖

    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--lombok工具-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

项目地址:https://gitee.com/daifylearn/cloud-learn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值