HSF 简介 HSF(High Speed Service Framework),高速服务框架,是阿里-主要采用的服务框架,其目的是 作为桥梁联通不同的业务系统,解耦系统之间的实现依赖。

1: RPC 远程过程调用(Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务的协 议,它的特点在于不需要了解底层网络技术。在 OSI 网络通信模型中,RPC 跨越了传输层和 应用层。RPC 使得开发分布式应用更加容易

2: ConfigServer(地址注册中心) HSF 是一个 RPC 框架,服务端需要将地址发送到注册中心让客户端能够进行服务发现,客 户端需要通过注册中心订阅一个服务的地址。服务与地址的对应关系是多对多的关系,一个 服务可以由多个地址提供,一      个地址可以提供多种服务。当一个服务有了新地址(机器)或 者减少了地址(机器)时,注册中心会通知这个服务的订阅方将地址增加或者减少,这个注 册中心就是 Configserver,它负责存储地址信息以及地址变更的推送。

3: Diamond(配置中心) HSF 持久化的配置中心是 Diamond。HSF 提供软负载服务,其中的路由规则是在 Diamond 上 进行配置,然后推送到客户端进行解析,第二章节中开发环境搭建已经包含 Diamond。

4: Pandora Pandora 是 HSF 生存的容器,由 pandora 来管理整个 HSF 的生命周期和二方包的隔离

HSF 标签清单

Provider 配置:

属性 描述
interface interface 必须配置[String],为服务对外提供的接口
version version 为可选配置[String],含义为服务的版本,默认为 1.0.0
group serviceGroup 为可选配置[String],含义为服务所属的组别,以便按 组别来管理服务的配置,默认为 HSF
clientTimeout 该配置对接口中的所有方法生效,但是如果客户端通过 MethodSpecial 属性对某方法配置了超时时间,则该方法的超时时间以客户端配置为准,其他方法不受影响,还是以服务端配置为 准
serializeType serializeType 为可选配置[String(hessian|java)],含义为序列化类 型,默认为 hessian
corePoolSize 单独针对这个服务设置核心线程池,是从公用线程池这个大蛋糕 里切一块下来
maxPoolSize 单独针对这个服务设置线程池,是从公用线程池这个大蛋糕里切 一块下来
enableTXC 开启分布式事务 Txc
ref ref 必须配置[ref],为需要发布为 HSF 服务的 spring bean id
methodSpecials methodSpecials 为可选配置,用于为方法单独配置超时(单位 ms), 这样接口中的方法可以采用不同的超时时间,该配置优先级高于 上面的 clientTimeout 的超时配置,低于客户端的 methodSpecials 配置

标签配置示例: 

Consumer 配置 :

属性 描述
interface interface 必须配置[String],为需要调用的服务的接口。
version version 为可选配置[String],含义为需要调用的服务的版本,默认为 1.0.0
group group 为可选配置[String],含义为需要调用的服务所在 的组,默认为 HSF,建议配置。
methodSpecials methodSpecials 为可选配置,含义为为方法单独配置超时 (单位 ms),这样接口中的方法可以采用不同的超时时间, 该配置优先级高于服务端的超时配置。
target 主要用于单元测试环境和 hsf.runmode=0 的开发环境中, 在运行环境下,此属性将无效,而是采用配置中心推送回 来的目标服务地址信息。
connectionNum connectionNum 为可选配置,含义为支持设置连接到 server 连接数,默认为 1,在小数据传输,要求低延迟的情况下设 置多一些,会提升 tps。
clientTimeout 客户端统一设置接口中所有方法的超时时间(单位 ms),超 时设置优先级由高到低是:客户端 MethodSpecial,客户端 接口级别,服务端 MethodSpecial,服务端接口级别。
asyncallMethods

asyncallMethods 为可选配置[List],含义为调用此服务时需 要采用异步调用的方法名列表以及异步调用的方式。

默认为空集合,即所有方法都采用同步调用。

maxWaitTimeForCsAddress 配置这个,在服务订阅的时候,会在指定的时间内,等待 地址推送过来,避免地址为过来后,调用该服务出现找不 到地址的情况,超过指定时间未等到地址,将继续初始化 完成。

标签配置示例: 

HSF jvm 参数配置

-Dhsf.server.port

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

-Dhsf.serializer

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

-DdefaultHsfClientTimeout

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

-Dhsf.server.max.poolsize

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

-Dhsf.server.min.poolsize 指定 HSF 的服务端最小线程池大小。默认值为 50

HSF 基础开发

参考下面的 demo 编写示例,来快速的开发一个基础版的 HSF 应用

1 创建 Web 项目

通过上面第一、二章节我们已经在开发工具中配置好对应的插件,并且搭建了本地服务注册 配置中心,下面我们以一个 demo 展开介绍 Hsf 开发的相关细节。

以 eclipse 为例创建一个 maven web 项目。

请点击 File -> New -> Project -> Maven Project -> maven-archetype-webapp ,在弹 出的界面输入 groupId、artifactId ,然后连续点击 Next,完成项目创建。项目目录结构 如图:

2 添加 Maven 依赖

在项目 pom.xml 中添加如下依赖:

3 编写发布 HSF 的服务

创建需要发布的服务接口:com.alibaba.edas.SampleService

编写实现类:com.alibaba.edas.impl.SampleServiceImpl

4 发布服务配置文件

请按照以下步骤配置发布者的服务配置文件。

  1. 在 web.xml 中配置 spring 的监听器:

  

  2. 在 resources 目录下面添加 spring 配置文件:application-config.xml

    

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <import resource="hsf-provider-beans.xml"/>
<!--<import resource="hsf-consumer-beans.xml"/>-->   </beans>

  3. 在 resources 目录下面添加发布者的配置文件:hsf-provider-beans.xml

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="http://www.taobao.com/hsf"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.taobao.com/hsf
http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">   <bean id="stationService" class="com.sgcc.echarge.stationserver.service.StationServiceHsfImpl"/>
   <hsf:provider version="1.0.0" group="grp_sgcc_xpcz_app" ref="stationService"
id="stationSP" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/>   </beans>

  到此发布者就编写好了。

4. 右键点击创建的项目,点击 Run As,选择 Run configuration,在弹出页面选择 AliTomcat Webapp, 右键 new 新建,如下图:

  

5. 填写好相关配置,点击 Run,启动应用,此时通过第二章节建的配置中心可以看到发布 的服 务,如下图:

  

5 消费服务配置文件

1. 在配置文件 application-config.xml 添加消费者配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="hsf-consumer-beans.xml"/> </beans>
2. 在 resources 目录下面添加消费者的配置文件 hsf-consumer-beans.xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="http://www.taobao.com/hsf"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.taobao.com/hsf
http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName"> <hsf:consumer version="1.0.0" group="grp_sgcc_xpcz_app" clientTimeout="1000000"
id="helloServiceConsumer" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/> </beans>
3. 已经完成了消费者的定义 6 Demo 下载地址
通过如下地址下载: http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package%2Fedas-app-demo%2Fedas-ap p-demo.zip
将下载下来的压缩包解开后,可以看到 itemcenter-api,itemcenter 和 detail 三个 Maven 工程。其中 itemcenter-api 工程提供接口定义,detail 工程是消费者应用,Itemcenter 工程是 服务提供者应用。

HSF 开发的更多相关文章

  1. Ali-Tomcat 安装

    通过在 Eclipse 安装 Tomcat4e 插件,或者在 Intellij Idea 安装配置 Ali-tomcat,可以快 速方便地启动并调试基于 EDAS 服务化框架 HSF 开发的应用. 1 ...

  2. HSF服务的开发与使用

    1.HSF服务的开发 1) 基于Maven创建一个web工程HSFService,如下图,其他的可以自定义. 2)创建好好在src/main目录下创建一个java目录,并将其设置为sources fo ...

  3. HSF简单实现记录( 基于Ali-Tomcat 开发)

    文章目录 声明 注意 提示: Ali-Tomcat 概述 安装 Ali-Tomcat 和 Pandora 并配置开发环境 安装 Ali-Tomcat 和 Pandora 配置开发环境 配置 Eclip ...

  4. HSF简单实现记录(基于 Pandora Boot 开发)

    文章目录 声明 注意 安装轻量配置中心 启动轻量配置中心 配置 hosts 结果验证 开发工具准备 在 Maven 中配置 EDAS 的私服地址 验证配置是否成功 开发 demo下载 服务注册与发现 ...

  5. Java分布式开发

    分布式概念的引入是基于性能的提升,应用的可靠性而提出的.所谓Java分布式,即是在使用Java语言进行企业级应用开发的过程中,采用分布式技术解决业务逻辑的高并发.高可用性的一些架构设计方案. 1. R ...

  6. 使用Yeoman,Grunt和Bower开发AngularJS(译)

    使用Yeoman产生AngularJS的主要骨架 使用Grunt加速开发和帮助执行 使用Bower来加入第三方插件和框架——third party plugins/frameworks 一.准备工作 ...

  7. 淘宝(taobao)HSF框架

    一.背景 随着网站访问量增加,仅仅靠增加机器已不能满足系统的要求,于是需要对应用系统进行垂直拆分和水平拆分.在拆分之后,各个被拆分的模块如何通信?如何保证 性能?如何保证各个应用都以同样的方式交互?这 ...

  8. EdasStudio 开发工具用户手册

    EdasStudio 开发工具用户手册 Edas 开发组2015-8-14 1. 下载安装插件 EdasStudio是EDAS的开发工具,是一个Eclipse Plugins,打开Eclipse的He ...

  9. dubbo&hsf&spring-cloud简单介绍

    Dubbo: 简介:Dubbo是一个分布式服务框架,以及SOA治理方案.其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等. 底部NIO基于netty ...

随机推荐

  1. Linux 系统管理——进程和计划任务管理

    一.  程序和进程关系 1.程序 保存硬盘.光盘等介质中的可执行代码和数据 静态保存的代码 2.进程 在CPU及内存运行的程序代码 动态执行的代码 父.子进程:每一个进程可以创建一个或多个进程 二.静 ...

  2. shell札记

    1.echo变量名的技巧 #! /bin/bash read -p "please input value a: " a declare -i ai=a echo -e " ...

  3. bzoj4605: 崂山白花蛇草水 权值线段树套KDtree

    bzoj4605: 崂山白花蛇草水 链接 bzoj loj 思路 强制在线,那就权值线段树套KDtree好了,没啥好讲的. KDtree要加平衡因子来重构.另外,那水真难喝. 错误 树套树一边写过了, ...

  4. IIS服务器简单搭建

     概况 系统:WIN10企业版 开发工具:VS2013 - VS2017 IIS版本:IIS6.0 安装 安装步骤如图: 这里需要注意一点信息服务器下默认web管理工具只有iis控制台勾上了,也就意味 ...

  5. FPGA综合的约束

    近日发现,有些逻辑电路的综合时间约束和布局布线约束相差太大时,难以布通.此时,应该选择尽量接近的时钟约束.

  6. DNN的BP算法Python简单实现

    BP算法是神经网络的基础,也是最重要的部分.由于误差反向传播的过程中,可能会出现梯度消失或者爆炸,所以需要调整损失函数.在LSTM中,通过sigmoid来实现三个门来解决记忆问题,用tensorflo ...

  7. java自动化配置工具 - autoconfig 简介

    对于java程序员来说各种各样的配置文件是司空见惯的,比如spring的bean配置,struts的action配置等等.有些配置会随着运行环境的变化而各不相同,最典型的就是jdbc驱动的配置,在开发 ...

  8. linux 去掉 ^M 的方法

    在linux上经常遇到这种问题,从网上下载文件到 linux 上后,就多了很多 ^M这种东西,如何集体删除这种东西呢! 用 vim 打开文件 进行如下设置  将文件格式转化为unix :set ff= ...

  9. zabbix-常规配置

    zabbix server:cat zabbix_server.confLogFile=/data/log/zabbix_server.logLogFileSize=250DebugLevel=3Pi ...

  10. 后台接收参数报错 Required String parameter 'id' is not present

    来自:https://blog.csdn.net/qq_15238647/article/details/81539287 关于ajax请求spring后台出现 Required String par ...