1. 程式人生 > >阿里雲 EDAS-HSF 使用者指南

阿里雲 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