一、 背景

由于之前使用永久实例时,因为使用的是TCP探测,后端PHP服务又经过Nginx服务,所以当Nginx正常,但是PHP挂掉,或者其它原因不影响时,服务不能正常从服务列表踢除,造成服务失败,所以改成PHP服务端主动发送心跳。

二、问题

先看一下官方文档:

实际测试返回情况:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d8e97713ca6949bba01b21b70463e8f1.png
这里发现官方文档的示例和实际返回的不一致,先不管,然后你会发现这个心跳实际不生效,服务还是15秒变成不健康,30秒从服务列表踢除

三、问题原因溯源

1、由于官方文档没有其它说明,这里选择从JAVA的请求(JAVA服务的心跳是正常的)里面去找问题原因。

2、JAVA服务的心跳参数

从这里我们看到这个参数和官方文档里面的参数完全不一样。

3、测试
通过构造一样的参数进行发送心跳后进行测试

心跳成功,服务也正常,尝试几秒发送一次心跳,服务正常,说明这个是正确的心跳参数。

4、加上官方文档的 beat 参数进行测试

发现返回结果还是一样,不过服务还是会15秒后不健康,然后从服务列表剔除掉了,说明心跳的时候不能传 beat 信息。

5、问题原因
从上面可以得出,失败原因,是因为官方文档没有更新,传的参数不对,所以心跳失败(接口不管成功还是失败,返回的结果都是一样的)

四、测试结论

1、官方有一个返回 lightBeatEnabled ,这个代表是否是已开启轻量级心跳
2、如果开启了轻量级心跳后,不能再传 beat 信息,否则心跳失效
3、如果服务没有注册,采用重量级心跳(传了beat信息),会自动进行服务注册。
4、如果服务没有注册,采用轻量级心跳,会返回失败,如下图:

所以正常的心跳方式应该是:
第一次心跳采用重量级心跳,然后根据返回的 lightBeatEnabled 参数看后面的心跳信息中是否需要传beat 信息。

Nacos通过OpenAPI主动发送心跳失效问题相关推荐

  1. Nacos源码主动健康检测

    对于非临时实例(ephemeral=false),Nacos会采用主动的健康检测,定时向实例发送请求,根据响应来判断实例健康状态. 入口在ServiceManager类中的registerInstan ...

  2. mqtt如何发送心跳 安卓_互联网推送服务原理:长连接+心跳机制(MQTT协议)

    互联网推送消息的方式很常见,特别是移动互联网上,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了 ...

  3. java之socket的OOBInline和UrgentData和发送心跳包研究

    UrgentData可以理解为紧急发送数据方式,如果我们客户端先用write方法写入数据,再用UrgentData发送数据,再去执行flush操作,我们可以得到服务端先打印UrgentData发送的数 ...

  4. Producer向Broker发送心跳的作用-知识点

    producer发送心跳到broker有什么作用? 通过搜索broker模块的源码暂时发现一个作用(也许还有其他的用途,暂时没时间仔细看): broker需要回查事务消息状态的情况下,broker会选 ...

  5. uIP1.0 主动发送的问题理解

    最近在LPC1768上调试uIP1.0的网络协议代码,设置配置的是不使用分包发送的模式,原本想着发送回传的字节数应该也不会太大,我都是本地自定义的协议.后面调试的时候,发现TCP协议居然有粘包和拆包的 ...

  6. uip协议,主动发送功能

    一.uip协议,作为服务器 一般情况下,在uip协议作为服务器使用,在while(1)中实现以下代码,不断读取网卡数据,进行处理,然后返回给客户端. uip_len = tapdev_read((vo ...

  7. 微信企业号开发:主动发送消息

    主企业号主动发送消息,也就是企业号主动推送的消息,适合于企业的通知,通告等.因此如果公司有通知,要求通知到所有员工,就应该使用主动发送消息. 格式是json格式,而且微信很灵活,当touser,top ...

  8. Android Socket通信 发送心跳包 重连

    最近项目中,有使用Socket与后端进行通信,然后简单的了解了下Socket使用,大致流程是配置服务端的Ip.端口号,连接,监听数据和发送数据,数据的读取和发送都是以流的形式实现的,然后自己将项目中的 ...

  9. UDP协议报文分析和主动发送UDP简单实现

    UDP协议报文分析和主动发送UDP简单实现 前言 一.Wireshark 报文解析 1.UDP报文实例 2.报文格式分析 ①.以太网头 ②.IP头 ③.UDP头 二.UDP主动传输数据的实现方式 1. ...

最新文章

  1. SigmaPlot 12.0 中文版 for Win 专业的科研绘图下载及教材
  2. python-判断元素是否在字典中
  3. iPhone Safari下iframe不显示滚动条无法滚动的解决方法
  4. 项目整合一级缓存和二级缓存
  5. java返回json格式的状态码数据(二)
  6. 孜然网址导航系统源码v1.0
  7. mit数据集_MIT的DNN硬件加速器教程(二)流行的DNN和数据集
  8. Atitit..文件上传组件选型and最佳实践总结(2)----断点续传
  9. FPGA高斯滤波实现并Modelsim仿真,与MATLAB高斯滤波进行对比
  10. Ubuntu搭建BT服务器FTP服务器发布种子
  11. 思科Cisco Telnet(三种认证方式)
  12. 全新自适应地址发布页HTML源码【手机端】【pc端】
  13. 3种好用的可视化图表工具分享,快进来看!
  14. Excel报表的制作
  15. 谈谈未来 APP 产品设计的革命性趋势
  16. HDMI端口辐射(EMI)超标解决方案
  17. 华为IoT首席架构师王启军:全栈工程师“养成记”
  18. 申报绿色工厂的条件和标准是什么?
  19. python和易语言哪个容易胖_坐着长肉还是躺着长肉 哪个更容易胖
  20. 《计算机网络(谢希仁6版)》学习笔记(word导入)[待补全]

热门文章

  1. 此生不戒多巴胺-冲刺日志(第十天)
  2. python正弦函数
  3. Authing 正式加入 W3C 组织,将参与相关国际标准制定
  4. 【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~(无需豆子一直免费嫖)
  5. C#项目添加excel引用Microsoft.Office.Interop.Excel.dll
  6. 黄历php源码下载,黄历查询示例代码
  7. aistarter助手程序未运行_[MBOT+ AI2] 出現aiStarter程式不在執行狀態中的解決方法...
  8. 采样点流量数据提取(代码分享):利用ECMWF开源数据
  9. 计算机依赖英语作文,网络依赖症英语作文 How Will Our Life Go on without Internet?
  10. ElasticSearch搜索引擎-2_学习笔记2021.4.18)