SpringCloud各组件的主要功能及底层实现原理

  1. Eureka: 负责各个服务的注册于发现,分为服务端和客户端

    1. 在每个客户端启动的时候,会自动的将自己的服务名称,ip地址,端口号等信息注册到注册中心。
    2. 服务端是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号,供所有的客户端查询。
  2. Ribbon: 本质是一个带有负载均衡功能的http客户端,在每次请求的时候会选择一台机器,均匀的把请求分发到各台机器上。Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。Ribbon的工作流程:

    1. 首先Ribbon会从 Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口号;
    2. 然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器。
  3. Feign: Feign的一个关键机制就是使用了动态代理,Feign默认集成了Ribbon,Feign的工作原理:

    1. 如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理;
    2. 接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心;
    3. Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址;
    4. 最后聪明从Ribbon中拿到对应的IP地址个端口号,针对这个地址,发起请求、解析响应。
  4. Hystrix: 分布式系统中某个服务挂掉后,如果系统处于高并发的场景下,大量请求涌过来的时候,上游的服务会因为没有一个线程可以处理请求,就会导致上游的服务也跟着挂掉,这就是微服务架构中恐怖的服务雪崩问题。Hystrix是隔离、熔断以及降级的一个框架。Hystrix会搞很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。

    ​ 下游的服务挂掉后,每次在上游的服务调用它的时候都会卡住几秒钟,这没有任何意义,可以直接都挂掉的服务熔断处理。比如在5分钟内请求该服务直接就返回了,不要去走网络请求卡住几秒钟,这个过程,就是所谓的熔断!

    ​ 降级(比如积分服务挂了):每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。这个过程,就是所谓的降级。

  5. Zuul: 这个组件是负责网络路由的,一般微服务架构中都必然会设计一个网关在里面,像android、ios、pc前端、微信小程序、H5等等,不用去关心后端的几百个服务,就知道有一个网关,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。而且有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全,等等。

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Cloud是一个用于构建分布式系统的开发工具包,它基于Spring Boot提供了一系列的组件和工具,用于简化分布式系统的开发和部署。Spring Cloud底层原理主要涉及以下几个组件: 1. 服务注册与发现组件Eureka:Eureka是Spring Cloud中最核心的组件之一,它实现了服务的注册与发现。当一个服务启动时,它会向Eureka服务器注册自己的信息,包括服务名、IP地址和端口号等。其他服务可以通过Eureka服务器获取已注册的服务信息,从而实现服务之间的通信。 2. 负载均衡组件Ribbon:Ribbon是一个负载均衡器,它可以根据一定的策略将请求分发到多个服务实例上,从而实现负载均衡。Ribbon可以与Eureka集成,通过获取Eureka服务器上的服务信息来进行负载均衡。 3. 服务调用组件Feign:Feign是一个声明式的HTTP客户端,它可以简化服务之间的调用。通过使用Feign,我们可以像调用本地方法一样调用远程服务,Feign会自动处理请求的负载均衡和服务的发现。 4. 断路器组件Hystrix:Hystrix是一个容错和延迟容忍库,它可以防止分布式系统中的故障扩散。当一个服务发生故障时,Hystrix可以通过断路器模式来阻止故障的传播,并提供降级策略,保证系统的可用性。 5. 网关组件Zuul:Zuul是一个API网关,它可以对外暴露统一的API接口,并提供路由、过滤和负载均衡等功能。通过使用Zuul,我们可以将请求转发到不同的服务实例上,并进行请求的过滤和处理。 以上是Spring Cloud的一些核心组件及其底层原理的简要介绍。通过使用这些组件,我们可以快速构建和部署分布式系统,并实现服务之间的通信和协作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值