Ribbon 心跳检测的原理及常用配置项

「这是我参与 11 月更文挑战的第 18 天,活动详情查看:2021最后一次更文挑战」。

你好,我是悟空呀。

Ribbon 的心跳检测原理和 Eureka 还不一样,Ribbon 不是通过每个服务向 Ribbon 发送心跳或者 Ribbon 给每个服务发送心跳来检测服务是否存活的

先来一张图看下 Ribbon 的心跳检测机制:

Ribbon 心跳检测的原理

Ribbon 心跳检测原理:对自己本地缓存的 Server List 进行遍历,看下每个服务的状态是不是 UP 的。具体的代码就是 isAlive 方法。

核心代码:

isAlive = status.equals(InstanceStatus.UP);
复制代码

那么多久检测一次呢?

默认每隔 30s 执行以下 PingTask 调度任务,对每个服务执行 isAlive 方法,判断下状态。

Ribbon 常用配置项

禁用 Eureka

# 禁用 Eureka
ribbon.eureka.enabled=false
复制代码

服务注册列表默认是从 Eureka 获取到的,如果不想使用 Eureka,可以禁用掉。然后我们需要手动配置服务列表。

配置服务列表

ribbon-config-passjava.ribbon.listOfServers=localhost:8081,localhost:8083
复制代码

这个配置是针对具体服务的,前缀就是服务名称,配置完之后就可以和之前一样使用服务名称来调用接口了。

其他配置项

Spring Cloud 微服务中 负载均衡组件 Ribbon 架构原理,分为几大块,都在前面的文章进行了讲解。分为几大块:

  • Ribbon 的六大核心组件
  • Ribbon 如何拦截请求并进行转发的。
  • Ribbon 初始化的原理。
  • Ribbon 如何同步 Eureka 注册表的原理。
  • Eureka 和 Ribbon 两种 心跳检测的原理
  • Ribbon 的常用配置项。

作者简介:悟空,8年一线互联网开发和架构经验,用故事讲解分布式、架构设计、Java 核心技术。《JVM性能优化实战》专栏作者,开源了《Spring Cloud 实战 PassJava》项目,公众号:悟空聊架构。本文已收录至 www.passjava.cn

Guess you like

Origin juejin.im/post/7034120352984891422