阿里云 EDAS-HSF 用户指南
针对 EDAS v2.3.0
©Alibaba EDAS 项目组2015/8/191 前言
本文档旨在描述阿里云 EDAS 产品中应用服务化模块的基本概念,以及如何使用。2 产品背景
HSF(High Speed Framework)是一个高可用、高性能、分布式的服务框架。HSF 可以被看作是人体的血管,
帮助应用轻松实现服务化解耦,是阿里内部各个系统通信的基础软件。3 专业术语
Agent安装于用于 ECS,负责 EDAS 控制台与用户 ECS 之间的通信,以此来实现对应用的管理。 HSFEDAS 产品中分布式服务化子模块的名字,是一个高性能的服务化框架,全称 High Speed FrameWork。4 HSF 安装
先了解下 HSF 应用的运行环境。如图:
首先,应用运行在潘多拉(Pandora)容器中,容器又通过 Ali-Tomcat 启动。
重要说明: 本地开发,才需要 4.1,4.2,4.3 的步骤.如果已经开发好,则只需要将应用发布到 EDAS 平台上,EDAS 平台
会自动初始化容器环境.4.1 Tomcat 安装
下载并解压 Tomcat 即可(不可以下载其它 tomcat 包),我们做了定制
下载地址:4.2 Pandora 安装
下载并解压 Pandora 到 Ali-Tomcat 的 deploy 目录即可。
下载地址:4.3 环境配置
1. 绑定 jmenv.tbsite.net 域名到对应的地址服务器(没有域名解析的情况下)
在默认情况下,我们在公网有一个测试环境,您可以在本机绑定地址:182.92.100.65 jmenv.tbsite.net如果在您的本地安装有地址服务器环境,请绑定本地的地址2. 可以安装 EdasStudio 开发插件,这样可以在 eclipse 中直接调试程序无需额外的打包到此,HSF 的运行环境就安装完毕。参考
5 提供 HSF 服务
5.1 创建 Web 项目
以 eclipse 为例创建一个 maven web 项目。 File -> New -> Project -> Maven Project -> maven-archetype-webapp ->
输入 groupId、artifactId 连续 Next。项目目录结构如图:5.2 添加 Maven 依赖
在项目 pom.xml 中添加如下依赖:
org.springframework spring-web 3.1.1.RELEASE javax.servlet javax.servlet-api 3.0.1 provided
5.3 编写需要发布的服务
创建需要发布的服务接口,com.taobao.edas.test.SampleService
SampleService 服务提供了一个 echo 的方法调用。编写实现类:com.taobao.edas.test.impl.SampleServiceImpl
public interface SampleService {String echo(String str);}public class SampleServiceImpl implements SampleService {@Override public String echo(String str) {return str;}}
5.4 配置 Spring
在 web.xml 中配置 spring 的监听器:
contextConfigLocation classpath:config/applicationContext.xml org.springframework.web.context.ContextLoaderListener
在 resources 目录下面添加 spring 配置文件:config/applicationContext.xml
这里配置文件中包含了发布者的配置文件:config/providers-spring.xml
到此发布者就编写好了,运行 Maven 打包,生成项目 war 包。部署到 ali-tomcat 的 deploy 目录下。运行
ali-tomcat/bin/startup.bat,就可以在 hsf 服务治理上查询到发布的服务了。6 消费 HSF 服务
6.1 配置 Spring
在配置文件 config/applicationContext.xml 添加消费者配置:
consumers-spring.xml 配置:
6.2 编写测试代码
已经完成了消费者的定义,下面创建 servlet 来调用测试代码进行测试:com.taobao.edas.test. HsfServlet
public class HsfServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(req.getServletContext());SampleService sampleService = (SampleService) ctx.getBean("sampleService");resp.getWriter().println(Long.toString(System.currentTimeMillis()));}}
在 web.xml 中添加
hsf com.taobao.edas.test.HsfServlet hsf /hsf.htm
6.3 打包测试
Maven 打包,部署,启动 ali-tomcat,打开浏览器访问:localhost:8080/hsf.htm 。
注意:这里虽然消费成功,但是默认没有走远程调用。就是说,如果相同的 jvm 中提供了服务,默认是不会走网络远程调用了。就是说,即使其他机器提供了相同的服务也永远不会调用。编辑 ali-tomcat/bin/catalina.bat 添加如下参数:set JAVA_OPTS=%JAVA_OPTS% -Dhsf.client.localcall=false这个参数禁用掉了本机优先调用策略。如果这里是使用 Ali-tomcat 插件,直接用插件运行,无需打包。并且,-Dhsf.client.localcall=false把这个参数在 eclipse 中加到 JVM 参数中。