专项攻克-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,它们可以作为消息队列实现消息的传递和处理 。

相关推荐
孙6903423 小时前
Spring 注入多例 Bean
java·spring
那咋乎吧3 小时前
线程上下文切换和用户态进入内核态 linux内核都发生了什么
后端
YIAN3 小时前
NestJS 入门核心梳理:模块化架构、装饰器与依赖注入
后端·nestjs
唐青枫3 小时前
别只会 malloc:Zig Allocator、所有权与内存生命周期实战
后端
风曳丷4 小时前
12|用 Attack Tree 和 Trace 固化证据
后端
江华森4 小时前
云原生从0到1:Kubernetes 工作负载实战——Deployment/Service/滚动更新/弹性伸缩
前端·后端
江华森4 小时前
《云原生从0到1:4台华为云ECS搭建Kubernetes 1.28集群实录(上)——环境与踩坑全记录》
前端·后端
那咋乎吧4 小时前
数据包到达网卡后到用户态应用程序的全流程
后端
程序猿阿越4 小时前
kubelet源码阅读
后端·kubernetes·源码阅读
杨运交4 小时前
[065][缓存模块]Hibernate二级缓存自定义实现:基于Spring Cache的多级缓存适配器
spring·缓存·hibernate