HSF (RPC远程调用框架) | 您所在的位置:网站首页 › 服务治理框架hsf › HSF (RPC远程调用框架) |
HSF
1. HSF概述
1.1 概述
1.2 HSF架构
1.3 功能
1.4 应用开发方式
2. 使用 Ali-Tomcat 开发
2.1 Ali-Tomcat概述
2.2 安装及开发环境配置
2.2.1 安装Ali-Tomcat和Pandora
2.2.2 配置IntelliJ IDEA开发环境
2.3 开发HSF应用
2.3.1 定义服务接口
2.3.2 开发服务提供者
2.3.3 开发服务消费者
2.3.4 本地运行服务
2.3.5 部署到SAE
3. 使用Pandora Boot
4. ali HSF 官网地址
1. HSF概述
高速服务框架HSF(High-speed Service Framework),是在阿里巴巴广泛使用的分布式RPC服务框架。 官方文档: help.aliyun.com/document_de… 1.1 概述HSF连通不同的业务系统,解耦系统间的实现依赖。HSF从分布式应用的层面,统一了服务的发布与调用方式,从而帮助用户更加方便、快速地开发分布式应用,以及提供或使用公共功能模块。HSF为用户屏蔽了分布式领域中的各种复杂技术细节,如远程通讯、序列化实现、性能损耗、同步与异步调用方式的实现等。 1.2 HSF架构HSF作为一个纯客户端架构的RPC框架,没有服务端集群,所有HSF服务调用均是通过服务消费方(Consumer)与服务提供方(Provider)点对点进行。为了实现整套分布式服务体系,HSF还需要依赖以下外部系统。\ HSF作为分布式RPC服务框架,支持多种服务的调用方式。 同步调用 HSF客户端默认以同步调用的方式消费服务,客户端代码需要同步等待返回结果。 异步调用 对于服务调用的客户端,并非所有HSF服务都需要同步等待返回结果。HSF提供异步调用,帮助客户端无需同步阻塞在HSF调用上。HSF的异步调用,有Future调用和Callback调用2种。 Future调用 客户端在需要获取调用的返回结果时,通过HSFResponseFuture.getResponse(int timeout)主动获取结果。 Callback调用 Callback调用利用HSF内部提供的回调机制,在指定HSF服务消费完毕拿到返回结果时,HSF框架会回调用户实现的HSFResponseCallback接口,客户端通过回调通知的方式获取结果。 泛化调用 对于一般的HSF调用来说,HSF客户端需要依赖服务的二方包,通过依赖二方包中的API进行编程调用,获取返回结果。但是泛化调用不需要依赖服务的二方包,可以发起HSF调用、获取返回结果。在平台型的产品中,泛化调用的方式可以有效减少平台型产品的二方包依赖,实现系统的轻量级运行。 调用链路Filter扩展 HSF内部设计了调用过滤器,能够主动发现用户的调用过滤器扩展点,将其集成到HSF调用链路中,便于扩展方对HSF的请求进行扩展处理。 1.4 应用开发方式使用HSF框架开发应用有Ali-Tomcat和Pandora Boot两种方式。 Ali-Tomcat:依赖Ali-Tomcat和Pandora,提供了完整的HSF功能,包括服务注册与发现、隐式传参、异步调用、泛化调用和调用链路Filter扩展。应用程序须以WAR包方式部署。 Pandora Boot:依赖Pandora,提供了比较完整的HSF功能,包括服务注册与发现、异步调用。应用程序编译为可运行的JAR包并部署即可。 2. 使用 Ali-Tomcat 开发 2.1 Ali-Tomcat概述开发HSF应用需要依赖Ali-Tomcat和Pandora。 Ali-Tomcat是SAE中的服务运行时可依赖的一个容器,它主要集成了服务的发布、订阅、调用链追踪等一系列的核心功能。无论是开发环境还是运行时,您均可将应用程序发布在该容器中。 Pandora是一个轻量级的隔离容器,也就是taobao-hsf.sar。它用来隔离应用和中间件的依赖,也用来隔离中间件之间的依赖。SAE的Pandora中集成了服务发现、配置推送和调用链跟踪等各种中间件功能产品插件。您可以利用该插件对SAE应用进行服务监控、治理、跟踪、分析等全方位运维管理。 注意 在SAE中,只有WAR包格式的HSF应用才需要使用Ali-Tomcat。 2.2 安装及开发环境配置 2.2.1 安装Ali-Tomcat和PandoraAli-Tomcat和Pandora为SAE中的服务运行时所依赖的容器,集成了服务的发布、订阅、调用链追踪等一系列核心功能,应用程序须发布在该容器中运行。 下载Ali-Tomcat-8或Ali-Tomcat-7,保存并解压至相应的目录(如:d:\work\tomcat\)。 下载Pandora容器,保存并解压至Ali-Tomcat的deploy目录(d:\work\tomcat\deploy)下。 查看Pandora容器的目录结构。
Linux系统中,在相应路径下执行tree -L 2 deploy/ 命令查看目录结构。
Windows中,直接进入相应路径进行查看。
HSF服务基于接口实现,当接口定义好之后,生产者将使用该接口实现具体的服务,消费者也基于此接口去订阅服务。 在Demo的itemcenter-api工程中,定义了一个服务接口com.alibaba.edas.carshop.itemcenter.ItemService。 public interface ItemService { public Item getItemById(long id); public Item getItemByName(String name); } 复制代码该服务接口将提供两个方法:getItemById与getItemByName 2.3.2 开发服务提供者服务提供者将实现服务接口以提供具体服务。同时,如果使用了Spring框架,还需要在xml文件中配置服务属性。 实现服务接口。 请参考ItemServiceImpl.java文件中的示例代码构建服务接口。 public class ItemServiceImpl implements ItemService { @Override public Item getItemById( long id ) { Item car = new Item(); car.setItemId( 1l ); car.setItemName( "Mercedes Benz" ); return car; } @Override public Item getItemByName( String name ) { Item car = new Item(); car.setItemId( 1l ); car.setItemName( "Mercedes Benz" ); return car; } } 复制代码 POM 坐标配置 javax.servlet servlet-api 2.5 provided com.alibaba.edas.carshop itemcenter-api 1.0.0-SNAPSHOT org.springframework spring-web 2.5.6(及其以上版本) com.alibaba.edas edas-sdk 1.8.1 复制代码 hsf-provider-beans.xml 配置 |
CopyRight 2018-2019 实验室设备网 版权所有 |