当前位置: 首页 > news >正文

【Nacos】健康检查与环境隔离

1. 健康检测

1.1 两种健康检查机制

Nacos作为注册中心,需要感知服务的健康状态,才能为服务调用方提供良好的服务

Nacos 中提供了两种健康检查机制:

1. 客户端主动上报机制

  • 客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态,默认心跳间隔5秒:
  • nacos会在超过15秒未收到心跳后将实例设置为不健康状态,超过30秒将实例删除

2. 服务端反向探测机制

  • nacos主动探知客户端健康状态,默认间隔为20秒
  • 健康检查失败后实例会被标记为不健康,不会被立即删除

比如领导管理员工工作,员工主动汇报,每天主动向领导会汇报自己的工作进度;另外一种是领导主动询问。

注意:Nacos 中的健康检查机制不能主动设置,健康检查机制是和 Nacos的服务实例类型强相关的.

1.2 Nacos服务实例类型

Nacos的服务实例(注册的节点)分为临时实例非临时实例:

临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认类型

非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例

如果没有相关配置,我们的服务就默认是临时实例,如果服务宕机(直接关闭服务模拟),会发现Nacos上的服务就会直接被删除掉。

如果我们在配置中配置上相关的文件,让服务变成非临时实例的话,即使服务被down掉,Nacos也不会从服务列表中将其删除。

配置如下:

这样配置之后,我们的服务就不会从注册中心中删除。即使服务没有了注册中心任然保留信息:

2. Nacos环境隔离

在开发中,我们的服务肯定有多种不同的开发环境。例如:开发环境、测试环境、预发布环境、发布环境(生产环境)。

通常情况下,这些环境之间是不能够进行相互通信的,也就是测试环境的服务不能够访问到开发环境的服务。Nacos是可以通过namespace(命名空间)来实现环境隔离的,不同的namespace的服务之间不可见。

在默认情况下我们的服务都是在一个public的namespace下面,这时候所有的服务都可以通信。

想要实现环境隔离就需要我们自己创建不同的命名空间。

2.1 创建namespace

新增命名空间

配置namespace

在nacos中创建好了新的namespace,还需要通过配置服务,来完成命名空间的修改。配置文件中的namespace不是“命名空间名称”,而是“命名空间ID”。

spring:cloud:nacos:discovery:namespace: xxxxxxxxx

2.2 测试远程调用

现在我的服务情况如下:

public下面只有product-service服务

order-service在dev下:

此时通过order服务调用product服务就会报错:

Servlet.service() for servlet [dispatcherServlet] 
in context with path [] threw exception [Request processing failed: 
java.lang.IllegalStateException: No instances available for product-service] 
with root cause

如果将其中一个product服务命名空间id修改到dev,则可以成功调用服务。此时在一个空间下可以进行通信。


http://www.mrgr.cn/news/23993.html

相关文章:

  • Shell入门
  • 二叉树详解
  • MFC之CString类及其成员函数用法详解
  • 【表达式求值】
  • langgraph tool如何发送自定义事件
  • Leetcode - 周赛414
  • 帧缓冲 framebuffer
  • Pytorch维度转换操作:view,reshape,permute,flatten函数详解
  • ZAB协议(算法)
  • 精选干货!分享5款免费论文生成软件
  • 【Solidity】类型
  • Vue--》视觉盛宴:提升可视化大屏分辨率适配的技巧
  • AV1 Bitstream Decoding Process Specification:约定
  • Tableau安装和使用
  • MIT6.824 课程-PrimaryBackupReplication
  • leetcode 146.LRU缓存
  • 跨国公司研发战略调整与中国IT产业的未来
  • 动态规划-分割回文串ⅡⅣ
  • C++学习笔记(16)
  • 工具知识 | Linux 常用命令参考手册