阿里雲 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 的執行環境就安裝完畢。
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 引數中。
原文:http://www.mamicode.com/info-detail-1050546.html