【合集】Spring Cloud 组件——架构进化史话 Nacos,OpenFeign,Ribbon,Sentinel,Gateway . . .

news2024/11/17 11:04:38

在这里插入图片描述

前言

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态)。

注意:

首先,尽管Spring Cloud带有“Cloud”这个单词,但它并不是云计算解决方案,而是在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集

其次,使用Spring Cloud开发的应用程序非常适合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生可以简单地理解为面向云环境的软件架构。

Spring Boot用来开发项目

Spring Cloud用来管理项目,Spring Cloud管理的项目需要基于Spring Boot来开发

在这里插入图片描述

Spring Cloud常用的组件列举:

  1. Eureka:服务注册与发现组件,用于实现服务的自动注册与发现。
  2. Ribbon:负载均衡组件,用于实现客户端的负载均衡。
  3. Feign:声明式的HTTP客户端,用于简化服务间的调用。
  4. Hystrix:容错管理组件,用于实现服务的容错和降级。
  5. Zuul:API网关组件,用于实现统一的访问入口和路由。
  6. Config:配置管理组件,用于实现分布式系统的配置管理。
  7. Bus:消息总线组件,用于实现配置的动态刷新。
  8. Sleuth:分布式追踪组件,用于实现分布式系统的请求追踪。
  9. Stream:消息驱动组件,用于实现分布式系统的消息传递。
  10. Security:安全管理组件,用于实现分布式系统的安全管理。
  11. Nacos:动态服务发现、配置管理和服务管理平台。
  12. Consul:服务发现和配置管理工具。
  13. Zipkin:分布式跟踪系统,用于追踪请求的调用链。
  14. Spring Cloud Gateway:新一代的API网关,用于实现统一的访问入口和路由。
  15. Spring Cloud Alibaba:阿里巴巴提供的一套基于Spring Cloud的微服务解决方案,包括Nacos、Sentinel、Dubbo等组件。
  16. Seata:分布式事务解决方案,用于解决分布式系统中的事务一致性问题。

本篇博客是Spring Cloud 常用组件的相关博客文章的合集,涉及Spring Cloud常用的组件,比如Nacos,Gateway,Sentinel,OpenFeign,Ribbon等,结合实际应用场景阐述相关组件的使用。

目录

  • 前言
  • 引出
  • 单体架构到微服务
    • 1.单体架构,微服务,分布式
    • 2.服务器安装nacos+sentinel
  • 服务注册与发现--Nacos
    • 1.Nacos的Linux安装配置
    • 2.Nacos作为注册中心和配置中心
    • 3.Nacos集群和nginx
  • 服务的调用--OpenFeign+Ribbon
    • 1.RestTemplate+Ribbon
    • 2.OpenFeign
  • 流量治理--Sentinel
    • 1.雪崩问题和Sentinel初识
    • 2.Sentinel的流控和熔断
  • 统一的访问入口和路由--Gateway
    • 1.Gateway的入门案例
    • 2.Gateway的认证鉴权,与Sentinel整合
  • 总结

引出


1.SpringCloud是,在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集;
2.单体架构到微服务Microservices架构的变迁;
3.动态服务发现、配置管理和服务管理平台nacos;
4.声明式的HTTP客户端,用于简化服务间的调用openFeign;
5.流量控制、熔断降级规则统一配置和管理的入口sentinel;
6.新一代的API网关,用于实现统一的访问入口和路由gateway;

单体架构到微服务

1.单体架构,微服务,分布式

SpringCloud溯源——从单体架构到微服务Microservices架构 & 分布式和微服务 & 为啥要用微服务

在这里插入图片描述

2.服务器安装nacos+sentinel

SpringCloud相关组件——nacos和sentinel的安装和配置 & 运行内存情况 & 服务器被非法登陆尝试的解决

在这里插入图片描述

服务注册与发现–Nacos

用在前面的微服务学习过程中注册中心和配置中心是两个非常重要的组成部分,但是注册中心、配置中心的管理却非常困难,特别是配置中心在更新完配置之后需要用到Bus进行配置推送,整个操作过程及其麻烦,正是因为这些原因阿里推出了一款叫做nacos的应用,该应用在能够实现注册中心的同时也实现了配置中心,而且操作十分简单,能够将程序员从繁琐的注册中心、配置中心的操作中解救出来。

英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。

Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。

1.Nacos的Linux安装配置

Nacos基础(1)——初识Dynamic Naming and Configuration Service & Linux上nacos安装 + 配置 + 运行【附安装包】

在这里插入图片描述

2.Nacos作为注册中心和配置中心

Nacos基础(2)——nacos的服务器和命名空间 & springBoot整合nacos & 多个nacos配置的情况

在这里插入图片描述

3.Nacos集群和nginx

Nacos基础(3)——nacos+nginx & 集群的配置和启动 & 端口开放 & nginx反向代理nacos集群

在这里插入图片描述

服务的调用–OpenFeign+Ribbon

1.RestTemplate+Ribbon

SpringCloud入门(微服务调用 RestTemplate)——微服务调用的方式 & RestTemplate的使用 & 使用nacos的服务名初步(Ribbon负载均衡)

在这里插入图片描述

2.OpenFeign

SpringCloud入门(微服务调用 OpenFeign)——从RestTemplate到OpenFeign & OpenFeign的相关配置 & 源码的分析和请求流程拆解

在这里插入图片描述

流量治理–Sentinel

Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。

随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。

哨兵具有以下特点:

  • 场景丰富: Sentinel 支持阿里巴巴双十一的关键场景10多年,如秒杀(即控制突发流量,使其在系统容量可接受范围内),消息负载转移,不可靠下游应用的断路。
  • 全面的实时监控: Sentinel 提供实时监控能力。您可以秒级精确查看服务器的监控数据,甚至可以看到少于500个节点的集群的整体运行状态。
  • 广泛的开源生态系统: Sentinel 提供了开箱即用的模块,可以轻松地与其他开源框架/库集成,例如 Spring Cloud、Dubbo 和 gRPC。使用Sentinel只需要引入相关的依赖,做一些简单的配置即可。
  • Sound SPI Extensions: Sentinel 提供了简单易用且完善的 SPI 扩展接口。您可以使用 SPI 扩展快速自定义逻辑,例如,您可以定义自己的规则管理,或适应特定的数据源。

1.雪崩问题和Sentinel初识

Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 & Sentinel的相关概念 + 下载运行

在这里插入图片描述

2.Sentinel的流控和熔断

Sentinel学习(2)——sentinel的使用,引入依赖和配置 & 对消费者进行流控 & 对生产者进行熔断降级

在这里插入图片描述

统一的访问入口和路由–Gateway

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

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

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

SpringCloud Gateway 特征

SpringCloud官方,对SpringCloud Gateway 特征介绍如下:

(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0

(2)集成 Hystrix 断路器

(3)集成 Spring Cloud DiscoveryClient

(4)Predicates(谓词、断言) 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters

(5)具备一些网关的高级功能:动态路由、限流、路径重写

从以上的特征来说,和Zuul的特征差别不大。SpringCloud Gateway和Zuul主要的区别,还是在底层的通信框架上。

专业术语

a)Filter(过滤器):

和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

b)Route(路由):

网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

c)Predicate(谓词、断言):

这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

工作流程

客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。

在这里插入图片描述

类型作用
pre这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
post这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。

Filter在“pre”类型过滤器中可以做参数校验、权限校验、流量监控、⽇志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改、⽇志的输出、流量监控等。

1.Gateway的入门案例

Spring Cloud Gateway学习(1)—— Gateway 的基本概念 & 引入依赖需要注意的事项 +解决方案 & 全局网关的入门使用案例

在这里插入图片描述

2.Gateway的认证鉴权,与Sentinel整合

Spring Cloud Gateway学习(2)—— Gateway 中文乱码的解决 & 基于gateway的登陆认证和鉴权案例 & gateway和sentinel整合案例

在这里插入图片描述


总结

1.SpringCloud是,在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集;
2.单体架构到微服务Microservices架构的变迁;
3.动态服务发现、配置管理和服务管理平台nacos;
4.声明式的HTTP客户端,用于简化服务间的调用openFeign;
5.流量控制、熔断降级规则统一配置和管理的入口sentinel;
6.新一代的API网关,用于实现统一的访问入口和路由gateway;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件上传 [MRCTF2020]你传你呢1

题目来源:buuctf [MRCTF2020]你传你🐎呢1 打开题目 我们随便上传个木马文件上去 我们bp抓包看看

Linux Find 备忘清单

文章目录 引言一、入门1.1 简介1.2 命令用法 二、基本使用2.1 根据文件大小查找2.2 根据文件类型查找2.3 根据文件名查找2.4 指定搜索目录层级/深度2.5 根据权限查找2.6 根据属主/属组查找2.7 多个文件名2.8 多个目录2.9 根据时间戳查找 三、进阶使用3.1 查找和删除3.2 查找和移…

tomcat服务tomcat多实例部署

tomcat服务&&tomcat多实例部署 文章目录 tomcat服务&&tomcat多实例部署1.简介2.优缺点优点:缺点: 3.工作原理4.工作流程5.tomcat服务部署5.1.java环境安装5.2.拉取tomcat软件包5.3.解压部署5.4.启动tomcat服务5.5.访问tomcat的web页面5.…

java 常量、变量、数据类型

常量 * 指在程序执行期间其值不能发生变化的数据。例如数学中的π 3.1415……又如:整数123,小 数1.23,字符’A’,布尔常量 true、false等,程序开发中,常量名一般规则全部大写,声明常量时必 须赋…

排序算法-希尔排序法(ShellSort)

排序算法-希尔排序法(ShellSort) 1、说明 我们知道当原始记录的键值大部分已排好序的情况下插入排序法非常有效,因为它不需要执行太多的数据搬移操作。希尔排序法是D.L.Shell在1959年7月发明的一种排序法,可以减少插入排序法中数…

tomcat 问题

一、start up.bat 闪退 在命令窗口run 看看是缺少了哪个环境变量 二、控制台输出乱码 logging.properties 底部添加 java.util.logging.ConsoleHandler.encoding GBK 三、缓存不足 context.xml配置 <Resources cachingAllowed"false" cacheMaxSize"100…

从字节码文件理解 ++i 和 i++ 的区别_i++ 与 ++i 底层

jvm内存模型 jvm 内存模型&#xff1a;Java 代码是运行在 Java 虚拟机之上的&#xff0c;由 Java 虚拟机通过解释执行 (解释器)或编译执行 (即时编译器) 来完成&#xff0c;故 Java 内存模型&#xff0c;也就是指 Java 虚拟机的运行时内存模型。 运行时内存模型&#xff0c;分…

【2023集创赛】安谋科技杯二等奖作品: 智能体感游戏机

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;安谋科技杯二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼…

KUKA机器人如何强制输出或取消数字IO信号?

KUKA机器人如何强制输出或取消数字IO信号? 具体的操作方法和步骤可参考以下内容: 如下图所示,点击菜单—显示—输入/输出端,如下图所示,选择想要查看的信号,这里以数字输出端为例进行说明, 如下图所示,此时可以看到输出端信号的编号、名称和当前值,可以通过下拉滚动条…

UE4和C++ 开发-编程基础记录(UE4+代码基础知识)

1、UE4基础元素 ①Actor 我们又见面了Actor&#xff0c;Actor是在一个关卡中持续存在的&#xff0c;通常他包含几个Actor组件。支持网络复制和多人游戏。   Actor不包含位置&#xff0c;方向。这些东西在Root Component中存储。对于UE3 中的Pawn也由PlayerCharacter继承了…

信钰证券:股票交易费用计算方法?

股票生意是股市参加者之间进行的买入和卖出股票的进程。其中&#xff0c;股票生意费用是参加股市生意的重要组成部分。本文将从多个视点分析股票生意费用计算方法。 首先&#xff0c;股票生意费用一般包含三部分。分别是佣钱、印花税和过户费。佣钱是证券公司为代理股票生意而收…

UE4和C++ 开发-常用的宏(二)UPROPERTY(类似于Unity中C#的特性[SerializeField])

UPROPERTY的作用类似于Unity中C#的特性[SerializeField]或者Godot中的export。目的就是通过反射把属性暴露在蓝图或实例的细节面板。 属性说明符&#xff08;Property Specifiers&#xff09;

IDEA设置自动导入包

IDEA设置自动导入包 首先进入设置选项 之后勾选以下两项&#xff1a; 第一项&#xff1a;IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包&#xff0c;比如自动去掉一些没有用到的包。 第二项&#xff1a; IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入…

mac,linux环境的基础工具安装【jdk,tomcat】

安装 一 linux环境一&#xff09;、JDK安装卸载&#xff1a; 二&#xff09;、 tomcat 安装1、[下载](https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.63/bin/apache-tomcat-8.5.63.tar.gz)后&#xff0c;在目录 /usr/local/tomcat下&#xff0c;解压缩2、配置tomca…

基于SpringBoot的学院班级回忆录

目录 前言 一、技术栈 二、系统功能介绍 管理员模块的实现 用户信息管理 班委信息管理 班级信息管理 班级相册管理 用户和班委模块的实现 班委注册 班级信息管理 加入班级 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越…

spring boot自定义配置时在yml文件输入有提示

自定义一个配置类&#xff0c;然后在yml文件具体配置值时&#xff0c;一般不会有提示&#xff0c;这个解决这个问题 依赖 <!--自定义配置类&#xff0c;在yml文件写的时候会有提示--><dependency><groupId>org.springframework.boot</groupId><arti…

opencv图像卷积操作原理,opencv中常用的图像滤波函数

文章目录 opencv图像卷积操作原理&#xff0c;opencv中常用的图像滤波函数一、图像卷积操作原理&#xff1a;1、卷积操作原理图&#xff1a; 二、opencv常用的图像滤波函数&#xff1a;这些函数的主要作用是对图像进行平滑处理或去除噪声(核心目的是减少图像中的噪声&#xff0…

【C++入门系列】——命名空间和输入输出

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c入门第一个程序和基本知识讲解 &#x1f604;每日一言&#xff1a;忙&#xff0c;不会死&#xff0c;人只有越忙越活&#xff0c;流水不腐&#xff0c;户枢不蠹。 目录 ​作者主页 前言 谈谈我个人…

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

概述 12v / 24v智能模拟高侧MOSFET栅极驱动器。 特性 PRO-SIL ISO 26262-准备根据ISO 26262:2018条款8-13支持硬件元件评估的集成商。一个通道器件具有两个高侧栅极驱动器输出。3 Ω下拉,50 Ω上拉,用于快速开关开/关。支持背靠背MOSFET拓扑(共漏极和共源)。两个双向高侧模拟…

C/C++ 线程超详细讲解(系统性学习day10)

目录 前言 一、线程基础 1.概念 2.一个进程中多个线程特征 2.1 线程共有资源 2.2 线程私有资源 3.线程相关的api函数 3.1 创建线程 创建线程实例代码如下&#xff1a; 需要特别注意的是&#xff1a; -lpthread和-pthread的区别 3.2 给线程函数传参 传参实例代码如…