专项攻克-springcloud及其组件

文章目录

一、初识springcloud

springCloud是一套微服务组件, 常用的Eureka,Ribbon,Hystrix,Feign,Gateway,Config,Bus(消息总线)等等。

Spring Cloud 提供了配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选分布式会话和集群状态管理等,一系列的解决方案

Config:配置管理工具,支持 git 存储配置实现应用外部配置化,支持远程客户端读取配置并根据初始化参数启动项目

Netflix:核心组件

Eureka:服务治理组件,可以注册服务接口中心

Hystrix:容错管理组件,实现断路器模式,服务依赖中出现的延迟和故障提供容错性

Ribbon:客户端负载均衡服务调用组件

Feign:基于 Hystrix 和 Ribbon 声明式服务调用组件

Zuul:提供路由,访问过滤

Archaius:外部化配置参数组件

Bus:事件消息总线,用于将服务和服务实例与分布式消息传递连接在一起的事件总线。触发后续作业的业务联动性

Cluster:针对 Zookeeper、Redis、Hazelcast、Consul 的选举算法和通用状态模式的实现

CloudFoundry:与 pivotalCloudFoundry 的整合支持

Consul:服务发现与配置管理工具

Stream:通过 Redis、RabbitMQ、Kafka 实现消息微服务,通过消息队列的形式生产和消费消息

Security:安全管理组件

Sleuth:SpringCloud 分布式跟踪,兼容Zipkin、HTrace和基于日志的跟踪(如ELK)。

Zookeeper:基于 Zookeeper 的服务发现和配置管理组件

Starts:基础组件,基于 SpringBoot 风格的基础依赖模块

二、在一个请求中,springcloud各组件的作用,各组件的常见平替中间件有哪些

Spring Cloud各组件在单个请求中发挥着不同的作用,以下是详细介绍及常见平替中间件:

服务发现(Eureka)

在单个请求中,服务发现组件负责让服务提供者将自身服务信息注册到注册中心,服务消费者从注册中心获取服务提供者的地址信息。这样,服务消费者就能知道向哪里发送请求。例如,当一个用户请求调用某个服务时,服务消费者会通过服务发现组件找到提供该服务的实例地址。常见平替中间件有Consul、Zookeeper,它们同样可以实现服务的注册与发现功能 。

配置中心(Config)

配置中心在请求过程中,为服务提供统一的配置管理。服务启动时会从配置中心获取配置信息,并且在配置发生变更时,能动态更新服务的配置。比如,当服务的数据库连接信息发生改变,配置中心可以及时将新的配置推送给服务。常见平替中间件有Apollo、Nacos,它们提供了更丰富的配置管理功能,如配置的版本管理、灰度发布等 。

网关(Gateway/Zuul)

网关是请求的入口,负责对请求进行路由、过滤、限流等操作。它接收客户端的请求,根据路由规则将请求转发到相应的服务。例如,当用户访问一个电商网站,网关会根据请求的URL将请求转发到商品服务、订单服务等。Spring Cloud Gateway是新一代的网关组件,使用Netty作为底层通信框架;Zuul是较早的网关组件。常见平替中间件有Nginx、Kong,它们在高并发场景下有更好的性能表现。

负载均衡(Ribbon/Feign)

负载均衡组件在请求时,将请求均匀地分配到多个服务实例上,以提高系统的可用性和性能。Ribbon是客户端负载均衡器,Feign是声明式的HTTP客户端 ,它集成了Ribbon的负载均衡功能。例如,当有多个商品服务实例时,负载均衡组件会根据一定的算法(如轮询、随机等)选择一个实例来处理请求。常见平替中间件有Nginx、HAProxy,它们可以作为服务器端负载均衡器,对请求进行更高级的负载均衡策略配置 。

熔断器(Hystrix)

熔断器在请求过程中起到保护系统的作用。当某个服务出现故障或响应时间过长时,熔断器会自动熔断该服务的请求,避免故障扩散。例如,当商品服务出现异常时,熔断器会切断对商品服务的请求,并返回一个默认的响应。常见平替中间件有Resilience4j,它是一个轻量级的容错库,提供了丰富的熔断、限流等功能 。

服务跟踪(Sleuth)

服务跟踪组件在请求中记录请求的调用链路信息,方便开发人员进行问题排查和性能优化。它会为每个请求生成一个唯一的跟踪ID,在请求的各个服务之间传递。例如,当一个请求经过多个服务时,服务跟踪组件可以记录每个服务的调用时间、调用顺序等信息。常见平替中间件有Zipkin、Jaeger,它们可以实现更强大的分布式跟踪功能 。

安全(Security)

安全组件在请求中负责对请求进行身份验证和授权。它可以确保只有合法的用户或服务才能访问系统资源。例如,当用户请求访问一个需要登录的页面时,安全组件会验证用户的身份信息。常见平替中间件有OAuth 2.0、JWT(JSON Web Token),它们提供了更灵活的身份验证和授权机制 。

消息总线(Bus)

消息总线在请求过程中用于在微服务之间传递配置变更等消息。当配置中心的配置发生变更时,消息总线会将变更信息广播给所有相关的服务。例如,当全局配置发生改变时,消息总线会通知所有服务重新加载配置。常见平替中间件有RabbitMQ、Kafka,它们可以作为消息队列实现消息的传递和处理 。

相关推荐
用户别睡觉15 分钟前
自己搭的中文 PDF RAG 接了 Redis 缓存、跑了 RAGAS,以为能写“提速多少、准确率多少”,结果两个都没按预期来。
后端
彭亚川Allen22 分钟前
985 在职研究生到底怎么样?是不是水硕?是不是.....?
前端·后端·程序员
乘风24825 分钟前
# 我做了个会遗忘的 AI 记忆,召回率反而从 8% 涨到 100%
后端
Rain的Java大神之路41 分钟前
面试被LeetCode 27(移除元素)问懵?别再用两层 for 循环了:一道“简单题”吃透双指针原地删除,附面试加分话术 + 11 个避坑清单
后端·leetcode·面试
霸道流氓气质1 小时前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
利威尔xu1 小时前
Go IM 源码实战(11):token 只是个 HASH,多端互踢的顺序错了就踢错人
后端·微服务·面试·架构·golang
猿究院--Cu-Sn合金1 小时前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
程序员cxuan2 小时前
别学 subagent 了,很可能要凉了。
后端·agent·ai编程
小咕聊编程2 小时前
基于Django的个人摄影博客网站设计与开发
后端·python·django
未秃头的程序猿2 小时前
@ConditionalOnMissingBean 把我配好的 RabbitMQ 手动 ack 吃掉了
后端·rabbitmq