深入理解SpringCloud:基础组件

目录

1、Spring Cloud中的服务注册与发现的实现原理

1.1、服务注册

1.2、服务发现

1.3、健康检查与心跳机制

1.4、Naocs实现原理

2、Ribbon负载均衡

2.1、负载均衡实现原理

2.2、 常见的负载均衡策略

3、Feign远程调用原理

4、Hystrix熔断器

4.1、Hystrix原理

4.2、Hystrix的超时处理机制


1、Spring Cloud中的服务注册与发现的实现原理

服务注册与发现的基于服务注册中心,常见的如Eureka、Consul、Nacos

1.1、服务注册

当一个微服务实例启动时,它会向服务注册中心注册自己的信息,包括服务名称、网络地址、端口号等。注册中心将这些信息存储起来,并维护一个服务注册表

1.2、服务发现

其他微服务实例需要调用某个服务时,它们可以向服务注册中心发起查询请求,根据服务名称获取可用的服务实例列表。这样就能够实现动态的服务发现

1.3、健康检查与心跳机制

微服务实例会定期向服务注册中心发送心跳信号,以表明自己的健康状态。如果服务注册中心在一段时间内没有收到某个服务实例的心跳,就会认为该实例不可用,并从服务注册表中移除。

1.4、Naocs实现原理

新一代的服务发现和配置管理工具,它提供了服务发现、服务健康监测、动态配置管理以及动态 DNS 服务等功能。

(1)服务注册与发现

微服务实例启动后,会向Nacos服务器注册自己的信息,包括服务名、IP地址、端口号等。注册后的服务实例可以通过Nacos的服务发现功能,发现并调用其他微服务

(2) 动态配置管理

Nacos支持动态配置管理,可以将配置信息存储在Nacos服务器中,并且可以实现动态更新。微服务实例可以通过Nacos的配置中心,动态获取最新的配置信息

(3) 服务健康监测

Nacos会定期检查各个服务实例的健康状态,如果某个实例出现故障或不可用,Nacos将会将其从服务注册表中移除,保证调用方不会发起请求到不可用的实例上

(4) 动态 DNS:可以将微服务实例的信息映射为域名,从而实现了基于域名的服务调用

2、Ribbon负载均衡

2.1、负载均衡实现原理

在客户端实现负载均衡,从而实现对服务实例的动态选择和调用。

使用Ribbon作为HTTP客户端,通过在RestTemplate或Feign客户端上集成Ribbon,从而实现对服务实例的负载均衡,周期性地从Eureka、Consul、Naocs等服务注册中心获取服务实例的列表

2.2、 常见的负载均衡策略

(1)轮询(默认)

按顺序轮流选择服务实例,平均分配请求。
(2)随机:随机选择一个可用的服务实例。
(3)加权轮询:根据权重来决定选择哪个服务实例,权重越高的实例被选中的概率越大。
(4)加权随机:根据权重来随机选择一个服务实例,权重越高的实例被选中的概率越大。
(5)最少连接:选择当前连接数最少的服务实例

3、Feign远程调用原理

feign底层基于动态代理技术,根据接口定义创建一个动态代理对象,代理对象中包含了对远程服务的调用逻辑。当调用接口方法时,实际上是调用了代理对象的方法。Feign还集成了Ribbon,可以实现对远程服务的负载均衡。Feign配合Eureka或nacos可实现对服务实例的动态发现和调用。

通过这些技术的组合,Feign实现了对远程服务调用的简化和统一管理。

4、Hystrix熔断器

4.1、Hystrix原理

(1)注解标识

使用@EnableHystrix注解启用Hystrix熔断器。在需要进行熔断的方法上使用@HystrixCommand注解标识,以指定熔断策略、fallback方法、超时时间

(2)线程池隔离

Hystrix采用线程池隔离的方式来执行受保护的方法,每个受保护的方法都会被分配到一个独立的线程池中运行,以防止故障的扩散

(3)资源监控

Hystrix会收集每个方法的执行情况,包括成功、失败、超时等情况,通过这些数据来判断是否需要触发熔断

(4)熔断器状态

某个方法的失败率超过阈值,熔断器将会打开,停止向该方法发起请求,直接执行降级逻辑

(5) 降级处理

当熔断器开启后,Hystrix会执行预设的降级逻辑,例如返回默认值、调用备用方法等,以保证系统的稳定性

4.2、Hystrix的超时处理机制

设置`execution.isolation.thread.timeoutInMilliseconds`属性来定义服务调用的超时时间。

如:超时时间为3000毫秒

@HystrixCommand(commandProperties = {
    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")
})

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值