HSF HSFServiceAddressNotFoundException案列分析

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
函数计算FC,每月15万CU 3个月
简介: 项目组在阿里专有云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的原因。

相关实践学习
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ACK Serverless,体验微服务应用的部署、访问和高级发布能力。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas 
禹迹
+关注
目录
打赏
0
6
6
0
39
分享
相关文章
由浅入深Dubbo核心源码剖析高阶配置运用1
由浅入深Dubbo核心源码剖析高阶配置运用
100 0
由浅入深Dubbo核心源码剖析环境介绍
由浅入深Dubbo核心源码剖析环境介绍
232 0
Dubbo框架整体认知
该文章主要介绍了Dubbo框架的整体认知,包括Dubbo的概念、产生的背景、解决的问题、架构以及功能特性等。
Dubbo框架整体认知
哈啰面试:说说Dubbo运行原理?
哈啰面试:说说Dubbo运行原理?
71 0
哈啰面试:说说Dubbo运行原理?
由浅入深Dubbo核心源码剖析高阶配置运用2
由浅入深Dubbo核心源码剖析高阶配置运用2
95 0
项目实战典型案例3——fegin调用404情况
项目实战典型案例3——fegin调用404情况
804 0
Dubbo3 源码解读-宋小生-12:全局视野来看Dubbo3的服务启动生命周期
> Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双十一基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实践和统一标准,同时将规模化实践经验与技术创新贡献开源社区,极大的推动了开源技术与标准的发展。 > 本文是
234 0
Dubbo3 源码解读-宋小生-12:全局视野来看Dubbo3的服务启动生命周期
Dubbo3 源码解读-宋小生-13:全局视野来看Dubbo3的服务启动生命周期
> 完整电子书下载地址: https://developer.aliyun.com/ebook/7894 > Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双十一基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实
287 0
Dubbo3 源码解读-宋小生-13:全局视野来看Dubbo3的服务启动生命周期

云原生

+关注