跳至主要內容
Spring Cloud 之 Spring Cloud Stream

Spring Cloud Stream 是 Spring Cloud 体系中的消息中间件组件,它集成了 kafka 和 rabbitMQ

它屏蔽掉了底层不同消息中间件之间的差异,降低了学习成本和维护成本 (就像我们用 ORM 框架来取代直接操作数据库一样)

快速上手

编写代码之前我们需要搭建一个 rabbitMQ 环境,这里不再累述

构建消息生产者 stream-producer

  1. 引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

logycoconut大约 5 分钟关于技术SpringCloud
Spring Cloud 之配置中心 Spring Cloud Config

对于一些简单的应用,我们一般都是直接把配置信息写在 application.yml 中,复杂点的就分成dev、prod之类,但是这样做有两个缺点,一是当我们修改了配置之后,必须要重启服务才能使服务生效,二则是随着应用和配置信息的增多,我们很容易在修改配置信息的过程中混乱

为了实现对配置文件的实时更新和统一管理,我们需要一个配置中心,用来存放和发放配置信息

构建配置中心,从本地读取配置

1、新建一个 SpringBoot 项目,并导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

logycoconut大约 6 分钟关于技术SpringCloud
Spring Cloud 之微服务网关 Gateway

Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,比 Netflix 的 Zuul 组件更加适合 Spring Cloud体系

大家一定要多看官方文档啊!!文档比我详细多了,本文只是一些简单的应用

为什么要用网关

网关是介于客户端和服务器之间的一层,外部请求会先经过网关这一层再转发到其他功能模块中

所以,我们可以在网关上进行鉴权、监控等操作,让业务模块更加专注于业务

  • 只将网关对外暴露,隐藏微服务真实地址,保护微服务
  • 在网关中进行鉴权操作,无须在业务代码中鉴权
  • 避免了客户端和微服务直接接触 ( 在微服务变更时,重构难度会变大 )

logycoconut大约 4 分钟关于技术SpringCloud
Spring Cloud 之熔断器 Hystrix

在微服务架构中,通常会使用 Feign 来进行服务间的相互调用,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路

我们假设以下场景,如果服务提供方突然宕机或者出现网络问题,那消费方就会迟迟收不到回应,处理的线程得不到释放,随着请求的增加,服务器的资源也会逐渐耗尽,导致服务瘫痪

因为服务间的依赖性,整个微服务体系就会发生雪崩

Hystix 应运而生,它可以在服务提供方故障的时候,隔离远程服务,快速响应结果,防止出现级联失败

在 Feign 上使用熔断器


logycoconut大约 1 分钟关于技术SpringCloud
Spring Cloud 之 OpenFeign的使用

我们知道 RestTemplate 可以通过 url 甚至服务名进行消费,但是如果对于服务提供者的每一个服务都需要写上这么一段代码,不仅麻烦还很容易产生混乱,所以本文将要介绍Spring Cloud中的服务调用组件Feign

创建微服务中必要的三类角色

注册中心之前在Spring Cloud 之 Eureka实现服务注册和发现中有过介绍,这里就不再累述


logycoconut大约 1 分钟关于技术SpringCloud
Spring Cloud 之 Eureka实现服务注册和发现

如果我们要去租房,我们可能首先要去找中介,中介手上有很多房源,我们能在中介这里找到自己需要的房源

而微服务体系中,也存在这么一个中介,就是服务注册与发现中心,它为服务的提供者和服务的消费者提供一个交流的平台,Provider可以在注册中心注册供其他服务使用,Consumer可以在注册中心中寻找自己需要的服务

Eureka 是 Netflix 开发的服务发现组件,Spring Cloud 将它集成在其子项目spring-cloud-netflix中,以实现 Spring Cloud 的服务发现功能

简单实现


logycoconut大约 3 分钟关于技术SpringCloud
如果你也在学习Spring Cloud

之前学习过 Spring Cloud 的部分组件,但是最近发现 Spring Cloud 大家族又多了几个实现

以前学习的过程中没有认识到笔记的重要性,这次正好在巩固的基础上输出文章

为什么要写Cloud系列笔记

  • 巩固知识点,有些组件太久不用就会忘掉怎么实现
  • 别人的文章再好也不如自己手打一遍代码
  • 要是有人看了我的文章真的学到东西,那就没有白写

Spring Cloud 常用组件

Spring Cloud 虽然已经很强大,但是它不提供所有的实现,不同厂商都可以给出自己的解决方案


logycoconut大约 2 分钟关于技术SpringCloud