SpringCloud-Stream-1

构建微服务架构(Stream 消息驱动 篇)

该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270

Stream 为什么被引入

常见 MQ(消息中间件):

ActiveMQ
RabbitMQ
RocketMQ
Kafka

有没有一种新的技术诞生,让我们不再关注具体MQ的细节,我们只需要用一种适配绑定的方式,自动的给我们在各种MQ内切换。(类似于Hibernate)

Cloud Stream 是什么?

屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。

SpringCloud-Bus-1

构建微服务架构(Bus 消息总线 篇)

该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270

Bus消息总线是什么

一言以蔽之,分布式自动刷新配置功能。

Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新。

是什么

Spring Cloud Bus 配合Spring Cloud Config 使用可以实现配置的动态刷新。

SpringCloud-Config-1

构建微服务架构(Config 篇)

该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270
SpringCloud: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RELEASE/reference/html/

Config分布式配置中心介绍

分布式系统面临的配置问题

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。

SpringCloud 提供了 ConfigServer 来解决这个问题,我们每一个微服务自己带着一个 application.yml,上百个配置文件的管理.……

SpringCloud-GateWay-1

构建微服务架构(GateWay 篇)

该篇文档,前置环境条件为:构建微服务架构(eureka篇),需要单机版本eureka环境
该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270
GitHub地址:https://github.com/Netflix/Hystrix/wiki/How-To-Use
SpringCloud: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

概述

Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关;

但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloud Gateway—句话:gateway是原zuul1.x版的替代
Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和Project Reactor等技术。

Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。

SpringCloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+Spring Boot 2.0和Project Reactor等技术开发的网关,它旨在为微服务架构提供—种简单有效的统一的API路由管理方式。

SpringCloud Gateway作为Spring Cloud 生态系统中的网关,目标是替代Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。

Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

SpringCloud-Hystrix-1

构建微服务架构(Hystrix 豪猪哥 篇)

该篇文档,前置环境条件为:构建微服务架构(eureka篇),需要单机版本eureka环境
该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270
GitHub 地址:https://github.com/Netflix/Hystrix/wiki/How-To-Use

Hystrix 是什么

概述

分布式系统面临的问题

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。

服务雪崩

多个微服务之间调用的时候,假设微服务A调用微服务 B 和微服务 C,微服务 B 和微服务 C 又调用其它的微服务,这就是所谓的 “扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的 “雪崩效应”.
对于高流量的应用来说,单一的后避依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。

所以,通常当你发现一个模块下的某个实例失败后,这时候这个模块依然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩。

SpringCloud-OpenFeign-1

构建微服务架构(OpenFeign篇)

该篇文档,前置环境条件为:构建微服务架构(eureka篇)
该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270
GitHub地址:https://github.com/spring-cloud/spring-cloud-openfeign
SpringCloud地址:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeign

OpenFeign 是什么

Feign 是一个声明式 WebService 客户端。使用 Feign 能让编写 Web Service 客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud 对 Feign 进行了封装,使其支持了 Spring MVC 标准注解和 HttpMessageConverters。Feign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。

SpringCloud-Ribbon-1

构建微服务架构(Ribbon篇)

该篇文档,前置环境条件为:构建微服务架构(eureka篇)
该篇文档,前置代码下载:下载
该篇文档,全部完成后的代码下载:下载

原文链接:https://blog.csdn.net/u011863024/article/details/114298270
GitHub 地址:https://github.com/Netflix/ribbon

Ribbon 入门介绍

Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具。

简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。

简单的说,就是在配置文件中列出 Load Balancer (简称 LB )后面所有的机器,Ribbon 会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用 Ribbon 实现自定义的负载均衡算法。

Ribbon 目前也进入维护模式。

Ribbon 未来可能被 Spring Cloud LoadBalacer 替代。

SpringCloud-Consul-1

构建微服务架构(Consul篇)

B 站视频:https://www.bilibili.com/video/BV18E411x7eT?from=search&seid=13583080742381804215
原 Blog 笔记文档:https://blog.csdn.net/u011863024/article/details/114298270

本篇文章大部分图片用到了参考的 blog 笔记中的图片。
本人代码下载:下载

Consul 简介

Consul 是一个服务网格解决方案,它提供了一个功能齐全的控制平面,具有服务发现、配置和分段功能。这些特性中的每一个都可以根据需要单独使用,也可以一起用于构建全服务网格。Consul 需要一个数据平面,并支持代理和本机集成模型。Consul 与一个简单的内置代理,使一切工作的开箱即用,但也支持第三方代理集成,如 Envoy。

Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。

提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之 Consul 提供了一种完整的服务网格解决方案。

它具有很多优点。包括:基于 raft 协议,比较简洁;支持健康检查,同时支持 HTTP 和 DNS 协议支持跨数据中心的 WAN 集群提供图形界面跨平台,支持 Linux、Mac、Windows。

|