[alibaba/nacos]有问题就问系列--关于长连接对实例的清理处理

2025-10-30 51 views
2

背景:当前长连接(GRPC)与服务端断开连接后,服务端会立即清理这个连接对应已注册服务实例,然后发起推送给服务订阅者。 问题:有没有一种配置或者方法,降低清理服务实例的“敏感度”?就像短链接那样有一个延迟删除实例的过程,因为客户端也会重试连接和注册的。

回答

5

问题:当前如何获取整个集群中所有已经连接的客户端的版本信息

6

问题1: 没有, 降低敏感度到时候又会出现:实例不在了,但是又隔一段时间再移除 之类的问题,是个无解问题。 目前看起来以连接作为触发条件可以兼顾敏感的同时又保持较为精准。 如果你有这方面的方案,可以提出讨论,看下是否合适。

问题2: curl -X GET '127.0.0.1:8848/nacos/v2/core/loader/current'

3

降低服务变化敏感度,提高服务调用成功率

思路:

增加配置延迟若干秒(增加开关,默认不开启),再触发客户端断联事件。触发断联事件前先将_已注册订阅关系的数据缓存_起来,若干秒后查询一下缓存数据是否再次成功初始化,若成功删除缓存数据即可,若失败则发起服务推送。 客户端重新建立连接到节点,则先判断是否有缓存数据,有缓存数据则先删除,没有则继续进行其他操作。

这样是否可行..

2

理论上是可行的,可以再细化一下方案。

8

理论上, 所有客户端断线重连之后, 数据是一套新的数据(因为连接的端口会变),所以应该只需要考虑旧数据延迟删除就行了。

1

还需要考虑用户直接kill -9 应用的时候断连的情况, 这时候数据也会延迟移除, 可能会导致业务请求继续请求到这个停机的ip上。

同时需要考虑会不会有内存问题。

8

好的,接下来两个月时间先试着实现一下:D