HSF HSFServiceAddressNotFoundException案列分析

简介: 项目组在阿里专有云V3.12上运行,使用EDAS taobao-tomcat Pandora容器及HSF作为RPC框架。在HSF Consumer尝试调用Provider时出现`HSFServiceAddressNotFoundException`异常,提示找不到目标服务地址。经检查,HSF服务配置正确,但通过Pandora QOS进一步诊断发现Provider状态为invalid。此状态通常意味着Consumer无法访问到Provider,通过telnet验证了这一情况。问题根源在于Consumer和Provider间的HSF端口不匹配导致网络不通。

背景介绍

项目组使用的是阿里专有云V3.12,系统运行在EDAS taobao-tomcat Pandora容器下,使用HSF作为RPC条用框架。

在HSF Consumer调用HSF Provider的时候,在HSF Consumer端抛出了如下异常:

2024-08-22 08:29:37.274||10.xx.xx.xx|SID=254|ERROR|RID=|TID=0ae3cba717242865772664949ddd72|CID=0|BK=|com.taobao.hsf.exception.HSFServiceAddressNotFoundException: HSFServiceAddressNotFoundException-
error message : [HSF-Consumer] can't find target service addresses, target serviceName:xx.xx.xx.xx.xx.xx.service.xx:2.0.0.daily Group:uat ERR-CODE: [HSF-0001], Type: [BIZ], More: [http://edas.console.aliyun.com/code?faq=HSF-0001]
  at com.taobao.hsf.registry.RegistryInvocationHandler.invoke(RegistryInvocationHandler.java:157)
  at com.taobao.hsf.invocation.DelegateInvocationHandler.invoke(DelegateInvocationHandler.java:12)
  at com.taobao.hsf.remoting.service.LocalInvocationHandler.invoke(LocalInvocationHandler.java:100)
  at com.taobao.hsf.invocation.filter.RPCFilterBuilder$TailNode.invoke(RPCFilterBuilder.java:165)
  at com.taobao.hsf2dubbo.context.DubboRPCContextClientFilter.invoke(DubboRPCContextClientFilter.java:43)
  at com.taobao.hsf.invocation.filter.RPCFilterNode.invoke(RPCFilterNode.java:71)
  at com.taobao.hsf.context.RPCContextClientFilter.invoke(RPCContextClientFilter.java:31)
  at com.taobao.hsf.invocation.filter.RPCFilterNode.invoke(RPCFilterNode.java:71)
  at com.taobao.hsf.rpc.generic.GenericInvocationClientFilter.invoke(GenericInvocationClientFilter.java:59)
  at com.taobao.hsf.invocation.filter.RPCFilterNode.invoke(RPCFilterNode.java:71)
  at com.taobao.hsf.remoting.service.InvocationValidationFilter.invoke(InvocationValidationFilter.java:48)
  at com.taobao.hsf.invocation.filter.RPCFilterNode.invoke(RPCFilterNode.java:71)
  at com.taobao.hsf.filter.QosClientFilter.invoke(QosClientFilter.java:67)
  at com.taobao.hsf.invocation.filter.RPCFilterNode.invoke(RPCFilterNode.java:71)
  at com.taobao.hsf.plugins.auth.AuthClientFilter.invoke(AuthClientFilter.java:49)

问题分析

从异常栈可知,抛出的异常是:HSFServiceAddressNotFoundException,造成该异常的原因通常是由于在Consumer端找不到要调用的HSF Service对应的target IP地址造成的,所以首先确认一下该HSF Service是否存在。

可以去阿里云EDAS控制台通过服务查询进行确认,如下:

通过对比,异常信息中的HSF Service名称,version、group与EDAS控制台查询结果一致,所以Consumer端HSF Service配置信息是正确的。

接下来,我们在Consumer所在ECS上通过Pandora QOS再进一步确认信息,操作步骤如下。

  1. 确认QOS端口号

/home/admin/edas-assist/edas-assist.pid文件内容如下:

PID:4124570
HSF PORT:12200
PANDORA QOS PORT:12201
MONITOR PORT:8006
CSP PORT:8719

其中PANDORA QOS PORT后面的端口号是QOS开放的端口号。

  1. 进入QOS控制台
// 进入QOS控制台
telnet localhost 12201
// 进入控制台后,切换到hsf module
cd hsf
  1. 查看HSF Service Address信息

从图中可知,Consumer调用的HSF Service Provider处于invalid状态。

为什么是invalid状态?

造成invalid的通常原因是Consumer访问不通该Provider,所以我们可以通过telnet进行验证。

从图中可知,Consumer无法访问Provider,造成该问题的原因通常有:

  1. Consumer与Provider之间网络不通
  2. Consumer访问的Provider端口号不通

所以,我们可以在Provider端通过/home/admin/edas-assist/edas-assist.pid查看HSF PORT是否与Consumer访问的一致来进行确认,通过对比Provider端HSF PORT确实与Consumer端访问的不一致,所以这个就是造成Consumer端查看HSF Service Address invalid的原因。

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service  gRPC & Dubbo RPC Service  Spring Cloud RESTful Service  
目录
相关文章
|
数据采集 存储 Java
|
存储 缓存 移动开发
|
5月前
|
前端开发 JavaScript Serverless
阿里云宜搭对接使用完全指南:六大集成路径深度解析
本文系统性地阐述了阿里云宜搭低代码开发平台与外部系统对接的六大技术路径与实践方案。文章从宜搭的架构特性出发,深入讲解了连接器机制、远程API调用、数据源配置、服务回调、OpenAPI开放接口以及FaaS函数计算集成等核心对接方式。通过详细的配置步骤、丰富的代码示例(涵盖Java、Python、JavaScript、Node.js等语言)和真实业务场景的剖析,帮助开发者全面掌握宜搭的集成能力。文章还涵盖了鉴权配置、跨域处理、性能优化、安全管控等高级话题,并提供了常见问题的解决方案。无论是简单的数据查询同步,还是复杂的业务流程编排,读者都能从中找到适合的对接策略与实施方法。
|
2月前
|
JSON 前端开发 API
一周双旗舰上架百炼:qwen3.8-max-0902 与 DeepSeek-V4.1-Flash 的 CLI 侧同题实测
九月,百炼上线qwen3.8-max-0902与DeepSeek-V4.1-Flash两大新模型,均享百万token免费额度。本文实测同题前端编程任务,揭示二者在max-tokens语义、思考模式、生成质量、耗时及成本上的关键差异,为开发者选型提供一线实践依据。(239字)
6、Mybatis-Plus wrapper的使用
这篇文章详细介绍了Mybatis-Plus中Wrapper的使用,包括QueryWrapper和UpdateWrapper的基本概念、组装查询、排序、删除、修改条件的方法,以及如何设置条件优先级、组装SELECT子句和实现子查询等高级用法。
|
弹性计算 Linux 数据安全/隐私保护
2025最新幻兽帕鲁palworld服务器搭建教程:新手0基础,超简单~
阿里云提供2025年最新幻兽帕鲁游戏服务器申请购买及一键开服教程。支持4核16G(70元/月,8人)和8核32G(160元/月,20人)配置,带宽10M,ESSD云盘100GB。玩家只需选择配置、地域、操作系统并设置密码,系统自动部署游戏程序。本地安装STEAM客户端后,输入服务器IP和端口8211即可开始游戏。详细教程及更多问题解答请访问阿里云幻兽帕鲁游戏专区。
1769 56
|
安全 关系型数据库 Java
Debian 12.10 “Bookworm” 发布 - 通用操作系统
Debian 12.10 发布于 2025 年 3 月 15 日,常规安全更新和错误修复。
2010 13
Debian 12.10 “Bookworm” 发布 - 通用操作系统
|
存储 运维 Dubbo
HSF:阿里RPC框架
HSF:阿里RPC框架
5278 0
|
Ubuntu Docker 容器
ubuntu 通过docker方式安装clouddrive2
ubuntu 通过docker方式安装clouddrive2
2064 6
|
Java API
Java 8新特性之Stream API详解
【5月更文挑战第30天】本文将详细介绍Java 8中的一个重要新特性——Stream API。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,使得代码更加简洁、易读。文章将从Stream的基本概念、创建方式、常用操作以及实战案例等方面进行详细讲解,帮助读者深入理解并掌握Stream API的使用。
498 2