开发者社区 > 云原生 > 正文

第一次启动http服务连接nacos正常,再次连接时就出现问题,这是怎么回事?

第一次启动http服务连接nacos,nacos把grpc节点ip的服务地址缓存到了本地,重启http服务,再次连接时,没有重新返回grpc节点ip地址,我也不能访问grpc了,但是,我把服务地址缓存清了,再次启动http服务连接nacos,就能访问grpc,这是怎么回事?我NotLoadCacheAtStart: 设置的false。设置true的话报错(error:failed to build resolver: discovery create watcher overtime)

展开
收起
三分钟热度的鱼 2023-06-06 15:41:44 410 0
2 条回答
写回答
取消 提交回答
  • 根据您所描述的现象,这可能是因为 Nacos 在缓存服务地址时出现了一些问题,导致在重新启动 HTTP 服务后无法正常获取到 GRPC 服务地址。

    您在 Nacos 的配置中设置了“NotLoadCacheAtStart: false”,但是在设置为 true 后就出现了连接错误。这可能是因为连接 Nacos 时创建 watcher 的过程中超时了,建议逐步排查以确定具体原因。

    以下是一些排查方法:

    1. 检查与 GRPC 相关的 Nacos 配置是否正确,并确保是否已将对应的 GRPC 服务注册到 Nacos 中,确保相关配置及服务已生效。

    2. 检查 Nacos 是否已正确缓存 GRPC 服务地址,并确保 HTTP 服务能够正常获取到缓存的地址信息。可以在 Nacos 控制台中查看缓存状态。

    3. 如果 Nacos 的缓存功能无法正常使用,可以考虑手动获取 GRPC 服务地址并在 HTTP 服务中使用。您可以通过调用 Nacos 的 REST API 接口来获取 GRPC 的服务地址列表,并将其用于 HTTP 服务中。

    4. 另外,您也可以考虑将 Nacos 的日志级别调高,查看具体的错误信息和异常日志,从而快速定位问题并进行解决。

    总之,建议逐步排查问题,并结合实际情况采取相应的解决措施。同时,建议按照最佳实践使用 Nacos,确保其能够正常工作。

    2023-06-11 15:14:38
    赞同 展开评论 打赏
  • 在使用 Nacos 时,需要注意 Nacos Server 的缓存机制,特别是在缓存生命周期比较长或存在多级缓存的情况下。 在 Nacos 2.0 之后,Nacos 对于服务发现使用了新的缓存实现方式,即在启动时默认从 Nacos Server 拉取服务信息,并将其缓存在本地中。缓存的生命周期默认为 30 秒,可以通过 nacos.client.cacheRefreshInterval 参数进行配置。 在你的情况下,可能存在以下一种可能:

    Nacos Server 缓存的 IP 地址是过期的,但是 HTTP 服务在第一次连接时没有更新该地址,而是直接使用了本地缓存中的地址。这种情况下,你可以考虑在 HTTP 服务中代码中添加逻辑,每次连接 Nacos Server 后,强制刷新缓存,以便获取最新的 IP 地址。 Nacos Server 在缓存时可能出现多级缓存的情况,可能是因为你的 NotLoadCacheAtStart 参数设置为 false,所以在 HTTP 服务第一次连接 Nacos Server 时直接将 IP 地址缓存在了本地。如果你在重新启动 HTTP 服务时发现缓存没有更新,可能是因为 Nacos Server 的缓存还存在其他级别的缓存,而这些缓存没有被清除。这种情况下,建议在重新启动 HTTP 服务之前,清除 Nacos Server 的所有缓存,并且确认 nacos.client.cacheRefreshInterval 参数没有设置为太长时间。

    总之,在使用 Nacos Server 进行服务发现时,需要注意缓存机制,并且确保 HTTP 服务代码或 Nacos Server 缓存中存储的 IP 地址是最新的。如果需要强制刷新缓存,请使用 com.alibaba.nacos.api.naming.NamingService#removeInstance 方法强制清除缓存并重新拉取最新数据。

    2023-06-06 16:53:06
    赞同 展开评论 打赏
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载
CDN助力企业网站进入HTTPS时代 立即下载