HSF 基础知识|学习笔记

简介: 快速学习 HSF 基础知识

开发者学堂课程【企业级分布式应用服务 EDAS 使用攻略:HSF 基础知识】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/359/detail/4219


HSF 基础知识

内容介绍:

一、配置文件示例

二、HSF 标签清单

三、HSF jvm 参数(全局参数)配置


前面已经介绍了开发工具的配置及开发环境的搭建,接下来我们将学习 HSF 的项目开发。

在进行 HSF 项目开发前,首先应 JAVA 意义开发的技能,包括 Spring 框架、Maven项目管理工具、通用日志框架的使用以及 HSF。


一、配置文件示例

1.服务发布者配置文件实例:

<bean id="impl"class"

com.taobao.edas.service.implSimpl

eServiceImpl"/>

//声明了一个服务器接口类型的 bean,与Spring 通用的 bean 完全相同

<hsf.provider id="simpleService"

interface="com.taobao.edas.service.SimpleService"ref "imp

l"version="1.0.1"

group="test1"clientTimeout="3000">

//通过 hsf.provider 说明服务发布者的基本信息,首先定义了服务发布者的接口(com.taobao.edas.service.SimpleService),接口的实现包括 version、group 等属性,通过属性 clientTimeout 定义服务器超时时间。

</hsf.provider>

注:interface 属性和 ref 属性是必须填写的,version、group 和 clientTimeout 如果不填写会有一个默认值。在项目开发中,version 和 group 最 好要设定一个值。

2.Consumer 配置文件示例

<hsf.provider id="service"interface="com.taobao.edas.service.SimpleService"version="1.0.1"group="test1"clientTimeout="3000">

//相对于 provider 配置文件示例,少了接口的实现。主要声明了 Consumer 主要消费哪个接口,还显示 version、group 等属性,通过属性 clientTimeout 定义服务器超时时间。

</hsf.provider>

注:interface 属性是必须填写的,version、group 和 clientTimeout 如果不填写会有一个默认值。

在项目开发中,version 和 group 最好要设定一个值,且 interface、version 和group 的值必须与 provider 配置文件示例中的值一致(区分大小写),否则使用Consumer 校用 provider 配置文件时,可能会找不到地址。


二、HSF 标签清单

1.Consumer 配置标签清单

(1)interface:必须配置 [string],为需要调用的服务的接口

(2)version:为需要调用的服务的版本,默认为 1.0.0

(3)group:为需要调用的服务所在的组,默认为 HSF            

(4)methodSpecials:可选配置,为方法配置超时时间,即通过 clientTimeout 声明的接口的超时时间,可以通过 methodSpecials 声明超时时间

(5)target:主要用于单元测试,即制定一台 provider 启动的 IP 地址。但生产环境下,不建议设置此属性,因为若在生产环境在 provider 出错,会导致服务出现异常,无法调用。

(6)connectionNum:可选配置,主要用于连接到 Server 的连接数,不需要开发者特殊关心,如果需要特殊设置,可联系现场的架构师,以选择合适的值

(7)clientTimeout:客户端设置接口中所有方法的超时时间,单位是毫秒。Provider、consumer 中超时时间设置的优先级:客户端 MethouSpecials> 客户端接口级别>服务端 MethouSpecials> 服务端接口级别

(8)asyncallMethods:异步调用的方法名列表及异步调用方式,不建议开发者使用,特殊需要可联系专业的架构师选择合适的值

(9)maxWaitTimeForCsAddress:一般不需要设置

标签配置示例:

<hsf.provider id="service"interface="com.taobao.edas.ser

vice.SimpleService"version="1.0.1"group="test1"clientTimeout="3000">

target="10.1.6.57:12200?_TIMEOUT=1000"maxWaitTimeF

orCsAddress="5000"

<hsf.methodSpecials>

<hsf.methodSpecials names="sum"timeout="2000">  

</hsf.methodSpecials>

</hsf.consumer>      

相较于之前的 Consumer 配置文件示例,多了 target 和 methodSpecials 调用事例,声明了一个单独的方法 sum,并给这个方法设置了一个超时时间2000毫秒,如果调用该方法的时间超过2000毫秒,就会忽略调用 sum 方法,直接返回上面设定的接口级别的3000毫秒的设置。

2.Provider 标签配置清单

interface、version、group、methodspecials与Consumer一致。

(1)serializeType:可选配置,序列化的属性,默认为 hessian,一般无需调整

(2)corePoolSize:设置服务核心线程池及对应属性,一般也无需调整

(3)enableTXC:若客户需要开启分布式事务,则需要开启这个属性

(4)ref:必须配置,为发布的 HSF 服务的 spring bean id

(5)methodSpecials:声明方法的超时时间

标签配置示例:

<bean id="impl"class"

com.taobao.edas.service.implSimpl

eServiceImpl"/>

<hsf.provider id="simpleService"interface="

com.taobao.e

das.service.SimpleService"ref "impl"version="1.0.1"

group="test1"clientTimeout="3000">enableTXC="

ture"

serializeType="hession">

<hsf.methodSpecials>

<hsf.methodSpecials name="sum"timeout="2000"/>

<hsf.methodSpecials>

</hsf.provider>

相较于先前的 Provider 配置文件示例,多了 enableTXC 和 methodSpecials 属性。

以上介绍了 Consumer 和 Provider 配置文件示例,仅部分标签需要开发者关注,其余标签根据实际应用场景参照架构师的建议使用。


三、HSF jvm 参数(全局参数)配置

1.-Dhsf.server.port

指定 HSF 的启动服务绑定端口,默认值为12200

2.-Dhsf.serializer

指定 HSF 的序列化方式,默认值为 hessian

3.-DdefaultHsfClientTimeout

指定 HSF 的客户端超时时间 ms,默认为3000

4.-Dhsf.server.max.poolsize

指定 HSF 服务端最大线程池大小,默认值为600,一般情况下用户不需要调整,但如果要进行压力测试,可能需要将该值调大。

实际生产过程中,如果-Dhsf.server.max.poolsize 超过600,一般是 HSF 启动端的业务逻辑出现了问题,即从 Consumer 调用的请求服务端不能及时处理导致超过默认值,说明需要开发者优化代码,找到解决方法,而非去加大该参数的值。

5.-Dhsf.server.min.poolsize

指定 HSF 服务端最小线程池大小,默认值为50

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service&nbsp; gRPC &amp; Dubbo RPC Service&nbsp; Spring Cloud RESTful Service &nbsp;
相关文章
|
存储 运维 Dubbo
HSF:阿里RPC框架
HSF:阿里RPC框架
4335 0
|
9月前
|
Arthas 监控 前端开发
Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)
Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)
255 7
|
设计模式 Java 应用服务中间件
高速服务框架HSF的基本原理(下)
高速服务框架HSF的基本原理(下)
900 0
|
缓存 监控 Java
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
470 5
|
专有云 应用服务中间件 网络性能优化
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端口不匹配导致网络不通。
1161 6
HSF HSFServiceAddressNotFoundException案列分析
|
存储 Python
【可定制、转换时间戳】解析nc文件,并保存为csv文件
【可定制、转换时间戳】解析nc文件,并保存为csv文件
1079 4
|
人工智能 算法 前端开发
阿里云百炼|全妙:全面升级,助力伙伴推动产业落地
本次分享由阿里云智能集团资深产品专家秦璇主讲,主题为大模型在内容创作、数据分析、智能服务领域的应用。内容涵盖大模型市场概况、全妙产品介绍、部分案例及全妙建设重点与功能介绍。全妙产品包括妙策、妙笔、妙搜,旨在通过多模态技术和算法优化,助力企业和政府客户实现高效的内容创作和管理。
|
运维 负载均衡 应用服务中间件
高速服务框架HSF的基本原理(上)
高速服务框架HSF的基本原理(上)
2573 1
|
安全 数据安全/隐私保护
如何设置多因素认证,但不使用短信验证码?
【5月更文挑战第14天】如何设置多因素认证,但不使用短信验证码?
794 0
|
Java 应用服务中间件 HSF
走进HSF源码
前言本文源自一次组内分享,于是接着这个机会,将HSF的源码阅读过程记录下来,以供自己温故而知新。如果有哪些地方理解不到位的,还请诸位批评指正!简介HSF (High-speed Service Framework),高速服务框架,是在阿里巴巴内部广泛使用的分布式RPC服务框架。众所周知,HSF一款与我们的日常生活密不可分的RPC框架;所谓RPC——远程过程调用,就是指像调用本地方法一样调用远程的方
1790 0
走进HSF源码