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

相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
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&nbsp;
相关文章
|
12月前
|
XML Dubbo 架构师
由浅入深Dubbo核心源码剖析高阶配置运用1
由浅入深Dubbo核心源码剖析高阶配置运用
77 0
|
12月前
|
监控 Dubbo Java
由浅入深Dubbo核心源码剖析环境介绍
由浅入深Dubbo核心源码剖析环境介绍
204 0
|
4月前
|
XML Dubbo Java
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(二)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
66 2
|
4月前
|
XML 监控 Dubbo
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(一)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
101 1
|
12月前
|
负载均衡 Dubbo 算法
由浅入深Dubbo核心源码剖析高阶配置运用2
由浅入深Dubbo核心源码剖析高阶配置运用2
72 0
|
10月前
|
Dubbo Java 应用服务中间件
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
81 0
|
XML Dubbo 网络协议
Dubbo学习笔记(一)基本概念与简单使用
Dubbo学习笔记(一)基本概念与简单使用
Dubbo学习笔记(一)基本概念与简单使用
|
存储 JavaScript Linux
开源 Golang 微服务入门二:RPC 框架 Kitex| 青训营笔记
Kitex 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,在字节内部已广泛使用。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选
266 0
开源 Golang 微服务入门二:RPC 框架 Kitex| 青训营笔记
|
监控 负载均衡 Dubbo
|
XML Dubbo Java
dubbo的入门学习(二)
dubbo的入门学习(二)
dubbo的入门学习(二)