阿里云 EDAS-HSF 用户指南

阿里云 EDAS-HSF 用户指南

针对 EDAS v2.3.0
©Alibaba EDAS 项目组
2015/8/19

1 前言
本文档旨在描述阿里云 EDAS 产品中应用服务化模块的基本概念,以及如何使用。

2 产品背景

HSF(High Speed Framework)是一个高可用、高性能、分布式的服务框架。HSF 可以被看作是人体的血管,
帮助应用轻松实现服务化解耦,是阿里内部各个系统通信的基础软件。

3 专业术语
?  Agent
安装于用于 ECS,负责 EDAS 控制台与用户 ECS 之间的通信,以此来实现对应用的管理。
?  HSF
EDAS 产品中分布式服务化子模块的名字,是一个高性能的服务化框架,全称 High Speed FrameWork。

4 HSF 安装

先了解下 HSF 应用的运行环境。如图:

技术分享

首先,应用运行在潘多拉(Pandora)容器中,容器又通过 Ali-Tomcat 启动。

重要说明: 本地开发,才需要 4.1,4.2,4.3 的步骤.如果已经开发好,则只需要将应用发布到 EDAS 平台上,EDAS 平台
会自动初始化容器环境.

4.1 Tomcat 安装

下载并解压 Tomcat 即可(不可以下载其它 tomcat 包),我们做了定制
下载地址:  http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package/tomcat/taobao-tomcat-dev.gz

4.2 Pandora 安装

下载并解压 Pandora 到 Ali-Tomcat 的 deploy 目录即可。
下载地址:  http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package/pandora/unauth/taobao-hsf.tgz

4.3 环境配置

1.  绑定 jmenv.tbsite.net 域名到对应的地址服务器(没有域名解析的情况下)
在默认情况下,我们在公网有一个测试环境,您可以在本机绑定地址:
182.92.100.65 jmenv.tbsite.net
如果在您的本地安装有地址服务器环境,请绑定本地的地址
2. 可以安装 EdasStudio 开发插件,这样可以在 eclipse 中直接调试程序无需额外的打包
到此,HSF 的运行环境就安装完毕。

参考 EDAS-Studio(开发套件)用户使用指南

5 提供 HSF 服务

5.1 创建 Web 项目

以 eclipse 为例创建一个 maven web 项目。 File -> New -> Project -> Maven Project -> maven-archetype-webapp ->
输入 groupId、artifactId 连续 Next。项目目录结构如图:

技术分享

5.2 添加 Maven 依赖

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

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>

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 的监听器:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

在 resources 目录下面添加 spring 配置文件:config/applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 3.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<import resource="classpath:config/providers-spring.xml"/>
</beans>

这里配置文件中包含了发布者的配置文件:config/providers-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 3.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="target" class="com.taobao.edas.test.impl.SampleServiceImpl"/>
<beanid="sampleServiceProvider"
class="com.taobao.hsf.app.spring.util.HSFSpringProviderBean" init-method="init">
<property name="serviceInterface" value="com.taobao.edas.test.SampleService"/>
<property name="serviceVersion" value="1.0.0"/>
<property name="serviceGroup" value="HSF"/>
<property name="target" ref="target"/>
</bean>
</beans>

到此发布者就编写好了,运行 Maven 打包,生成项目 war 包。部署到 ali-tomcat 的 deploy 目录下。运行
ali-tomcat/bin/startup.bat,就可以在 hsf 服务治理上查询到发布的服务了。

6 消费 HSF 服务

6.1 配置 Spring

在配置文件 config/applicationContext.xml 添加消费者配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 3.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<import resource="classpath:config/providers-spring.xml"/>
<import resource="classpath:config/consumers-spring.xml"/>
</beans>

consumers-spring.xml 配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 3.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="sampleService" class=
"com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
<property name="interfaceName" value="com.taobao.edas.test.SampleService"/>
<property name="version" value="1.0.0"/>
<property name="group" value="HSF"/>
</bean>
</beans>

6.2 编写测试代码

已经完成了消费者的定义,下面创建 servlet 来调用测试代码进行测试:com.taobao.edas.test. HsfServlet

public class HsfServlet extends HttpServlet {
@Override
protected 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 中添加

<servlet>
<servlet-name>hsf</servlet-name>
<servlet-class>com.taobao.edas.test.HsfServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hsf</servlet-name>
<url-pattern>/hsf.htm</url-pattern>
</servlet-mapping>

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 参数中。

阿里云 EDAS-HSF 用户指南


原文:http://www.mamicode.com/info-detail-1050546.html





猜你喜欢

转载自blog.csdn.net/xiaohei5188/article/details/70685687