HSF 開發

 

HSF 簡介 HSF(High Speed Service Framework),高速服務框架,是阿里-主要採用的服務框架,其目的是 做爲橋樑聯通不一樣的業務系統,解耦系統之間的實現依賴。java

1: RPC 遠程過程調用(Remote Procedure Call)是一種經過網絡從遠程計算機程序上請求服務的協 議,它的特色在於不須要了解底層網絡技術。在 OSI 網絡通訊模型中,RPC 跨越了傳輸層和 應用層。RPC 使得開發分佈式應用更加容易web

2: ConfigServer(地址註冊中心) HSF 是一個 RPC 框架,服務端須要將地址發送到註冊中心讓客戶端可以進行服務發現,客 戶端須要經過註冊中心訂閱一個服務的地址。服務與地址的對應關係是多對多的關係,一個 服務能夠由多個地址提供,一      個地址能夠提供多種服務。當一個服務有了新地址(機器)或 者減小了地址(機器)時,註冊中心會通知這個服務的訂閱方將地址增長或者減小,這個注 冊中心就是 Configserver,它負責存儲地址信息以及地址變動的推送。spring

3: Diamond(配置中心) HSF 持久化的配置中心是 Diamond。HSF 提供軟負載服務,其中的路由規則是在 Diamond 上 進行配置,而後推送到客戶端進行解析,第二章節中開發環境搭建已經包含 Diamond。api

4: Pandora Pandora 是 HSF 生存的容器,由 pandora 來管理整個 HSF 的生命週期和二方包的隔離網絡

HSF 標籤清單app

Provider 配置:框架

屬性 描述
interface interface 必須配置[String],爲服務對外提供的接口
version version 爲可選配置[String],含義爲服務的版本,默認爲 1.0.0
group serviceGroup 爲可選配置[String],含義爲服務所屬的組別,以便按 組別來管理服務的配置,默認爲 HSF
clientTimeout 該配置對接口中的全部方法生效,可是若是客戶端經過 MethodSpecial 屬性對某方法配置了超時時間,則該方法的超時時間以客戶端配置爲準,其餘方法不受影響,仍是以服務端配置爲 準
serializeType serializeType 爲可選配置[String(hessian|java)],含義爲序列化類 型,默認爲 hessian
corePoolSize 單獨針對這個服務設置核心線程池,是從公用線程池這個大蛋糕 裏切一塊下來
maxPoolSize 單獨針對這個服務設置線程池,是從公用線程池這個大蛋糕裏切 一塊下來
enableTXC 開啓分佈式事務 Txc
ref ref 必須配置[ref],爲須要發佈爲 HSF 服務的 spring bean id
methodSpecials methodSpecials 爲可選配置,用於爲方法單獨配置超時(單位 ms), 這樣接口中的方法能夠採用不一樣的超時時間,該配置優先級高於 上面的 clientTimeout 的超時配置,低於客戶端的 methodSpecials 配置

 

 

 

 

 

 

 

 

 

 

 

標籤配置示例:  eclipse

 

Consumer 配置 :
webapp

屬性 描述
interface interface 必須配置[String],爲須要調用的服務的接口。
version version 爲可選配置[String],含義爲須要調用的服務的版本,默認爲 1.0.0
group group 爲可選配置[String],含義爲須要調用的服務所在 的組,默認爲 HSF,建議配置。
methodSpecials methodSpecials 爲可選配置,含義爲爲方法單獨配置超時 (單位 ms),這樣接口中的方法能夠採用不一樣的超時時間, 該配置優先級高於服務端的超時配置。
target 主要用於單元測試環境和 hsf.runmode=0 的開發環境中, 在運行環境下,此屬性將無效,而是採用配置中心推送回 來的目標服務地址信息。
connectionNum connectionNum 爲可選配置,含義爲支持設置鏈接到 server 鏈接數,默認爲 1,在小數據傳輸,要求低延遲的狀況下設 置多一些,會提高 tps。
clientTimeout 客戶端統一設置接口中全部方法的超時時間(單位 ms),超 時設置優先級由高到低是:客戶端 MethodSpecial,客戶端 接口級別,服務端 MethodSpecial,服務端接口級別。
asyncallMethods

asyncallMethods 爲可選配置[List],含義爲調用此服務時需 要採用異步調用的方法名列表以及異步調用的方式。 異步

默認爲空集合,即全部方法都採用同步調用。

maxWaitTimeForCsAddress 配置這個,在服務訂閱的時候,會在指定的時間內,等待 地址推送過來,避免地址爲過來後,調用該服務出現找不 到地址的狀況,超過指定時間未等到地址,將繼續初始化 完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

標籤配置示例: 

 

HSF jvm 參數配置

-Dhsf.server.port

指定 HSF 的啓動服務綁定端口,默認爲 12200

-Dhsf.serializer

指定 HSF 的序列化方式,默認值爲 hessian

-DdefaultHsfClientTimeout

指定 HSF 的客戶端超時時間 ms,默認爲 3000

-Dhsf.server.max.poolsize

指定 HSF 的服務端最大線程池大小,默認值爲 600

-Dhsf.server.min.poolsize 指定 HSF 的服務端最小線程池大小。默認值爲 50

 

HSF 基礎開發

參考下面的 demo 編寫示例,來快速的開發一個基礎版的 HSF 應用

1 建立 Web 項目

經過上面第1、二章節咱們已經在開發工具中配置好對應的插件,而且搭建了本地服務註冊 配置中心,下面咱們以一個 demo 展開介紹 Hsf 開發的相關細節。

以 eclipse 爲例建立一個 maven web 項目。

請點擊 File -> New -> Project -> Maven Project -> maven-archetype-webapp ,在彈 出的界面輸入 groupId、artifactId ,而後連續點擊 Next,完成項目建立。項目目錄結構 如圖:

2 添加 Maven 依賴

在項目 pom.xml 中添加以下依賴:

3 編寫發佈 HSF 的服務

建立須要發佈的服務接口:com.alibaba.edas.SampleService

編寫實現類:com.alibaba.edas.impl.SampleServiceImpl

4 發佈服務配置文件

請按照如下步驟配置發佈者的服務配置文件。

  1. 在 web.xml 中配置 spring 的監聽器:

  

  2. 在 resources 目錄下面添加 spring 配置文件:application-config.xml

    

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<import resource="hsf-provider-beans.xml"/>
<!--<import resource="hsf-consumer-beans.xml"/>-->

  </beans>

  3. 在 resources 目錄下面添加發布者的配置文件:hsf-provider-beans.xml

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="http://www.taobao.com/hsf"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.taobao.com/hsf
http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">

  <bean id="stationService" class="com.sgcc.echarge.stationserver.service.StationServiceHsfImpl"/>
   <hsf:provider version="1.0.0" group="grp_sgcc_xpcz_app" ref="stationService"
id="stationSP" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/>

  </beans>

  到此發佈者就編寫好了。

4. 右鍵點擊建立的項目,點擊 Run As,選擇 Run configuration,在彈出頁面選擇 AliTomcat Webapp, 右鍵 new 新建,以下圖:

  

5. 填寫好相關配置,點擊 Run,啓動應用,此時經過第二章節建的配置中心能夠看到發佈 的服 務,以下圖:

   

5 消費服務配置文件

1. 在配置文件 application-config.xml 添加消費者配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<import resource="hsf-consumer-beans.xml"/>

</beans>
2. 在 resources 目錄下面添加消費者的配置文件 hsf-consumer-beans.xml 配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hsf="http://www.taobao.com/hsf"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.taobao.com/hsf
http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName">

<hsf:consumer version="1.0.0" group="grp_sgcc_xpcz_app" clientTimeout="1000000"
id="helloServiceConsumer" interface="com.sgcc.echarge.proxy_hsfapi.station.iface.StationService"/>

</beans>
3. 已經完成了消費者的定義

6 Demo 下載地址
經過以下地址下載: http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package%2Fedas-app-demo%2Fedas-ap p-demo.zip 將下載下來的壓縮包解開後,能夠看到 itemcenter-api,itemcenter 和 detail 三個 Maven 工程。其中 itemcenter-api 工程提供接口定義,detail 工程是消費者應用,Itemcenter 工程是 服務提供者應用。
相關文章
相關標籤/搜索