阿里雲 EDAS-HSF 用戶指南

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 參數中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章