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

相关实践学习
通过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&nbsp;
相关文章
|
监控 Dubbo Java
由浅入深Dubbo核心源码剖析环境介绍
由浅入深Dubbo核心源码剖析环境介绍
221 0
|
5月前
|
缓存 分布式计算 API
go-zero 微服务实战系列(一、开篇)
go-zero 微服务实战系列(一、开篇)
|
XML Dubbo 网络协议
Dubbo学习笔记(一)基本概念与简单使用
Dubbo学习笔记(一)基本概念与简单使用
Dubbo学习笔记(一)基本概念与简单使用
|
Dubbo Java 应用服务中间件
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
微服务技术系列教程(29) - Dubbo-介绍&环境安装&入门案例
101 0
|
Kubernetes Dubbo 应用服务中间件
GitHub标星35k+微服务深度原理实践进阶PDF,竟让阿里换下了Dubbo
最近一个粉丝分享了他悲惨的阿里面试故事,好不容易冲进三面,最后凉了! 关键在于微服务部分没回答好。 本人自己说在看到这些面试真题之后人都是懵的,之前这方面也没有很重视,结局就很可惜了。 今天先结合我这个粉丝的经历和面的题,分析一下微服务,以及我在这方面的学习经验也给大家分享一下。
|
存储 JavaScript Linux
开源 Golang 微服务入门二:RPC 框架 Kitex| 青训营笔记
Kitex 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,在字节内部已广泛使用。如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选
315 0
开源 Golang 微服务入门二:RPC 框架 Kitex| 青训营笔记
|
XML 负载均衡 监控
终于有人从入门到实战把Dubbo讲的这么清清楚楚了
很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的,那么,dubbo是怎么被提上日程的呢?
|
存储 开发框架 负载均衡
Dubbo框架知识点
Dubbo框架知识点
112 0
|
Java 程序员 Maven
|
监控 负载均衡 Dubbo
【Dubbo系列2】基础知识
这篇文章应该是月初就应该写的,当时看Dubbo相关的文章时一直提到RPC,所以就把RPC这块的知识先补齐。对于Dubbo,我目前需要对其整体初步了解,所以不会涉及到源码的内容,实战内容其实也很少,主要是有一个整体的初步人数,等后续用到Dubbo时,我再对其深入学习,包括Spring Cloud也是一样。 这篇文章参考敖丙的《dubbo系列 -rpc、dubbo基础知识》,我只对其进行重新整理。
139 0
【Dubbo系列2】基础知识