搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
从前慢现在也慢
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
next 14 appRouter redux数据持久化_nextjs redux 持久化存储
2
mac与windows服务器 访问和共享
3
Android 15全面解读:性能飙升、隐私守护与智能生活新纪元_安卓15
4
标题:怎样通过Dialogflow构建一个聊天机器人?React版。_dialogflow机器人
5
连接Mongodb数据库的步骤以及注意事项_如何连接mongodb数据库
6
小程序公告php实现,小程序两种滚动公告栏的实现方法
7
Git仓库完整迁移全过程_gitee 将a仓库的克隆到b仓库
8
FP6381AS5CTR原厂SOT23-5 1.2A同步降压IC DC-DC变频器
9
STM32参考代码,编译时出现“cannot open source input file, no such file or directory"错误
10
微信小程序用户隐私保护指引设置指南_mp后台-设置-基本设置-服务内容声明-用户隐私保护指引]中声明“剪切板”隐私收集
当前位置:
article
> 正文
Spring Cloud 五大组件_springcloud五大组件
作者:从前慢现在也慢 | 2024-04-29 05:01:34
赞
踩
springcloud五大组件
Spring Cloud 五大组件
1. 简介
2. Eureka
3. Ribbon
4. Feign
5. Zuul
6. Hystrix
1. 简介
Spring Cloud全家桶是Pivotal团队提供的一整套微服务开源解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件。
这是一个Spring Cloud 五大组件运行流程示例:
服务注册:只有一个服务注册到注册中心,才可能被其他服务发现并调用;
服务发现:即一个服务通过注册中心发现了其他服务;
负载均衡:客户端维护一份从注册中心获取的Provider列表清单,根据自己配置的Provider负载均衡选择算法在客户端进行请求的分发。
服务调用:一个服务对另一个服务进行调用;
隔离、熔断与降级:通过Hystrix的线程池去访问服务,不同的服务通过不同的线程池,实现了不同的服务调度隔离;如果服务出现故障,通过服务熔断,避免服务雪崩的问题 ;并且通过服务降级,保证可以手动实现服务正常功能;
网关路由:如果前端调用后台系统,统一从网关进入,通过网关转发请求给对应的服务;
2. Eureka
在微服务架构系统中,由于各服务单元颗粒度较小、数量众多,相互之间呈现网状依赖关系,因此需要服务注册中心来统一管理微服务实例,维护各服务实例的健康状态。
Spring Cloud Eureka是Spring Cloud Netflix微服务套件的一部分,基于Netflix Eureka做了二次封装,主要负责完成
微服务实例的自动注册与发现
,这也是微服务架构中的核心和基础功能。
Eureka服务冶理体系中的三个核心角色:
服务注册中心
、
服务提供者
以及
服务消费者
,其中服务提供者以及服务消费者都属于
Eureka Client
。
Eureka Server
的主要功能为
服务注册表维护
和
服务健康检查
;
Eureka Client
的主要功能为
服务注册
、
心跳续约
与
健康状况查询
;
服务提供者的服务注册和心跳续约一般都会通过
注册中心客户端组件
来完成。注册中心客户端组件还有
服务发现
和
实例缓存
的功能;
Eureka Server 的设计一开始就考虑了高可用问题,将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。
更多Eureka相关的内容,可以参考
Spring Cloud 之 Eureka
;
3. Ribbon
Ribbon就是一个客户端的负载均衡开源组件,是Netflix发布的开源项目。它不像服务注册中心Eureka Server、配置中心Spring Cloud Config那样独立部署,而是作为基础设施模块,几乎存在于每个Spring Cloud微服务提供者中。
Feign组件自身不具备负载均衡能力,Spring Cloud Feign是通过集成Ribbon组件实现客户端的负载均衡。微服务间的RPC调用以及API网关的代理请求的RPC转发调用,实际上都需要通过Ribbon来实现负载均衡。
Ribbon在客户端以轮询、随机、权重等多种方式实现负载均衡。
从Eureka Client实例获取Provider服务列表清单,并且定期通过IPing实例判断清单中Provider服务实例的可用性。每次RPC调用到来时,在Provider服务列表清单中根据IRule策略类的Bean计算出每次RPC要访问的最终Provider。
Ribbon可以获取Provider清单,并且通过IPing实例定期(如每10秒)向每个Provider实例发送“ping”,并且根据Provider是否有响应来判断该Provider实例是否可用。如果该Provider的可用性发生了改变,或者Provider清单中的数量和之前的不一致,就从注册中心更新或者重新拉取Provider服务实例清单。每次RPC请求到来时,由Ribbon的IRule负载均衡策略接口的某个实现类来进行负载均衡。
更多Ribbon相关的内容,可以参考
Spring Cloud 之 Ribbon
;
4. Feign
Feign 使用了动态代理,使用@FeignClient调用接口的本质就是调用Feign创建的动态代理,然后根据接口上的@RequestMapping等注解,来动态构造出要请求的服务的地址并对这个地址发起请求、解析响应。
在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问 HTTP 请求。
Feign 整合了 Ribbon 和 Hystrix,具备负载均衡、隔离、熔断与降级功能;
更多Feign的相关内容,可以参考
Spring Cloud 之 Feign 简介及简单使用
;
5. Zuul
微服务网关是微服务架构中不可或缺的部分,它统一解决Provider路由、均衡负载、权限控制等功能。
Zuul的功能大致有:
路由:将不同REST请求转发至不同的微服务提供者,其作用类似于Nginx的反向代理。同时,也起到了统一端口的作用,将很多微服务提供者的不同端口统一到了Zuul的服务端口。
认证:网关直接暴露在公网上时,终端要调用某个服务,通常会把登录后的token(令牌)传过来,网关层对token进行有效性验证。如果token无效(或没有token),就不允许访问REST服务。可以结合Spring Security中的认证机制完成Zuul网关的安全认证。
限流:高并发场景下瞬时流量不可预估,为了保证服务对外的稳定性,限流成为每个应用必备的一道安全防火墙。如果没有这道安全防火墙,那么请求的流量超过服务的负载能力时很容易造成整个服务的瘫痪。
负载均衡:在多个微服务提供者之间按照多种策略实现负载均衡。
更多Zuul的相关内容,可以参考
Spring Cloud 之 Zuul
;
6.
Hystrix
隔离:通过Hystrix的线程池去访问服务,不同的服务通过不同的线程池,实现了不同的服务调度隔离;
熔断:分布式架构中的熔断器主要用于RPC接口上,为接口安装上“保险丝”,以防止RPC接口出现拥塞时导致系统压力过大而引起的系统瘫痪,当RPC接口流量过大或者目标Provider出现异常时,熔断器及时切断故障可以起到自我保护的作用。
降级:当服务不可用(服务正在等待、链接超时、网络延迟、服务器响应慢等),客户端一直等待时,调用fallback方法给客户端返回一个错误提示,不让客户端继续等待。
更多Hystrix的相关内容,可以参考
Spring Cloud 之 Hystrix
;
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/506072
推荐阅读
article
Spring
Boot
:
Web
应用开发之
增删
改查
的
实现
...
Spring
Boot
Web
应用开发之
增删
改查
的
实现
介绍
Spring
Boot
:
Web
应用开发之
增删
改查
的
实现
...
赞
踩
article
Spring
MVC
请求
参数
绑定
_springmvc
参数
绑定
器...
Spring
MVC
是一个用于构建 Web 应用程序的框架,它提供了一种方便的方式来处理 HTTP 请求和响应。在 S...
赞
踩
article
Spring
Boot
|
Spring
Boot
默认
“
缓存
管理
“ 、
Spring
Boot
“...
目录:一、
Spring
Boot
默认
"
缓存
"
管理
:1.1 基础环境搭建① 准备数据② 创建项目③ 编写 "数据库...
赞
踩
article
Spring
Boot
集成
zipkin
快速入门
Demo
...
1.什么
zipkin
Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking Syste...
赞
踩
article
Spring
Boot
中整合
Redisson
实现
分布式
锁...
在这个示例中,我们使用
Redisson
创建了一个名为 "stock_lock_" + productId 的
分布式
锁...
赞
踩
article
常用的
Spring
Boot
注解
及其
作用
...
Spring
Boot
提供了许多
注解
来简化开发,并帮助开发者在
Spring
应用中实现各种功能。常用的
Spring
...
赞
踩
article
Spring Boot 的
文件
配置
...
文件
配置
内容中的类型以自己实际为准,不会随便进行转化除了数字10这样类似的,因为无论是哪种类型其都可以,不像dsasda...
赞
踩
article
【
Redis
(8)】
Spring
Boot
整合
Redis
和
Guava
,解决
缓存
穿透
、
缓存
击穿
、
缓存
雪...
整合
Spring
Boot
、
Redis
和
Guava
。解决
缓存
穿透
、
缓存
击穿
、
缓存
雪崩
、
缓存
污染
和
缓存
数据一致性问题。【R...
赞
踩
article
IDEA
2024 配置
Maven
创建
Spring
Boot
项目
_
idea
2024创建一个...
IntelliJ
IDEA
是一款强大的集成开发环境(IDE),它支持多种编程语言和框架,包括
Maven
和 Spri...
赞
踩
article
spring
boot
集成
bboss
操作
elasticsearch
索引,类型,文档(单集群)_bbos...
工作之余想开发一个前后端分离的个人博客系统来熟悉和增加自己的技术栈,想使用elastisearch来做博客的搜索功能,而...
赞
踩
article
Spring
Boot
整合
ElasticSearch
单/多
集群
案例...
Spring
Boot
整合
ElasticSearch
单个
集群
和多个
集群
案例分享,本文涉及内容:导入spring boot...
赞
踩
article
【
Redis
(9)】
Spring
Boot
整合
Redis
,
实现
分布式
锁
,
保证
分布式
系统中节点操作一致...
分布式
锁是一种在
分布式
系统中用来保证同一时间只有一个进程能操作共享资源的机制。它类似于我们熟知的单机环境下的锁
,
但
分布式
...
赞
踩
article
spring
boot 使用
bboss
操作
ES
_
bboss
esstarter...
目前项目中将日志记录在
ES
中,就找了下比较简单的操作
ES
的方法找了好做最后选择用
bboss
,用起来太简单…package...
赞
踩
article
基于
Java
+
Spring
Boot
+
MySQL
的精品在线试题库
系统
设计与实现(源码+
数据库
+文档)...
使用旧方法对作业管理信息进行
系统
化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多...
赞
踩
article
spring
boot yml配置文件报错:Cannot
resolve
configuration
...
如上面所示,port冒号后面一定要空格,然后写9090,否则会报错。_
cannot
resolve
configurat...
赞
踩
article
【
Java
Spring
MVC项目
异常
解决】
HTTP
500
...
【
Java
Spring
MVC项目
异常
解决】
HTTP
500
【
Java
Spring
MVC项目
异常
解决】
HTTP
5...
赞
踩
article
微
服务
架构
下的
Docker
与
Spring
Boot
:
构建
可扩展、可靠的现代应用...
随着云计算和微
服务
架构
的兴起,
Docker
和
Spring
Boot
已成为现代 Java 应用开发的重要工具。本文详...
赞
踩
article
Spring
Security
(学习笔记)
--
用户名
密码
登录
与短信
验证码
(模拟短信)
登录
同时支持怎么...
账号
密码
与
验证码
登录
怎么同时支持?
Spring
Security
(学习笔记)
--
用户名
密码
登录
与短信
验证码
(模拟短信)登...
赞
踩
article
spring
cloud
项目
集成为单体
项目
...
其实没多复杂。
spring
cloud
项目
集成为单体
项目
sp...
赞
踩
article
【
Spring
Boot
】
Spring
Boot
单体应用升级
Spring
Cloud
微
服务
_sp...
Spring
Cloud
是在
Spring
Boot
之上构建的一套微
服务
生态体系,包括
服务
发现、配置中心、限流降级、...
赞
踩
相关标签
Spring Boot
Web应用开发之增删改查的实现
spring
mvc
java
请求参数绑定
Spring boot
Spring Boot中缓存
缓存管理
SpringBoot中缓存管理
后端
Java
spring boot
分布式
linux
redis
缓存
nosql数据库