开发者社区> 问答> 正文

EDAS HSF泛化调用的时候有一定概率获取不到GenericService对象

如题,以下代码在同一个集群中,泛化调用同一个服务,100台机器大约有20-30台获取不到GenericService,返回null。重启机器后能获取,但是每次重启依然有一定的概率获取不到。有大佬有啥排查思路吗?

@SneakyThrows
private GenericService getGenericService(String interfaceName, String version) {
        HSFSpringConsumerBean hsfBean = new HSFSpringConsumerBean();
        hsfBean.setInterfaceName(interfaceName);
        hsfBean.setVersion(version);
        hsfBean.setClientTimeout(5000);
        // [设置] 泛化配置
        hsfBean.setGeneric("true");
        hsfBean.setMaxWaitTimeForCsAddress(3000);
        hsfBean.syncInit();

        // 使用泛化接口获取代理
        GenericService object = (GenericService) hsfBean.getObject();
        return object;
    }

展开
收起
游客5chjno6qryl36 2023-12-07 15:50:47 97 0
2 条回答
写回答
取消 提交回答
  • 泛化调用返回 null 可能的原因有很多。以下是一些可能的排查思路:

    1. 检查HSF配置

      • 确保所有的机器都正确配置了HSF,并且指向同一个注册中心。
      • 检查网络连接,确保所有机器都能正常访问注册中心。
    2. 检查服务提供方

      • 确认服务提供方是否已经成功启动并注册到了HSF中。
      • 查看服务提供方的日志,看看是否有异常或错误信息。
    3. 查看注册中心的状态

      • 在注册中心上检查服务的健康状态和可用实例数量。
      • 查看服务提供方和消费方之间的依赖关系是否正确建立。
    4. 检查代码逻辑

      • 仔细检查上述代码中的各个步骤,确认没有遗漏或者错误的地方。
      • 尝试在获取不到 GenericService 的机器上打日志,查看具体的执行过程。
    5. 测试服务调用

      • 使用其他方式(如命令行工具)直接调用服务,看看是否能够成功。
    6. 使用HTrace

      • 开启HSF的HTrace功能,跟踪服务调用过程,找出问题所在。
    7. 排查系统资源

      • 检查受影响机器的内存、CPU、磁盘空间等资源状况,确保没有资源瓶颈导致的问题。
    2023-12-07 19:52:05
    赞同 展开评论 打赏
  • 在排查EDAS HSF泛化调用获取不到GenericService对象的问题时,可以尝试以下几种方法:

    1. 检查HSF服务注册和发现:

      • 确保目标服务已经成功注册到HSF服务注册中心,并且能够被正确地发现。
      • 在HSF服务端的日志中查找是否有任何异常或错误信息。
    2. 检查HSF客户端配置:

      • 确认HSF客户端的配置是否正确,包括版本、接口名称、超时时间等参数。
      • 检查HSF客户端的日志,查看是否有任何异常或错误信息。
    3. 测试服务可用性:

      • 使用其他客户端工具(如Postman或curl)直接调用目标服务的HTTP接口,验证服务是否正常运行。
      • 如果可能,使用非泛化的HSF客户端进行调用,看看是否能正常工作。
    4. 分析网络状况:

      • 确定机器间的网络连接是否稳定,是否存在丢包、延迟等问题。
      • 如果服务部署在多个VPC或数据中心之间,检查网络路由和防火墙设置是否正确。
    5. 代码审查和调试:

      • 仔细审查 getGenericService 方法中的代码,确保没有潜在的并发问题或资源争抢。
      • 在有问题的机器上设置断点,逐步调试该方法,观察 hsfBean.getObject() 是否返回 null。
    2023-12-07 16:23:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
EDAS—云上的微服务开发与治理利器 立即下载
基于阿里企业级分布式应用服务的敏捷服务开发与架构实践 立即下载
EDAS—轻松搞定分布式应用服务 立即下载