HSF 開發


 

HSF 簡介 HSF(High Speed Service Framework),高速服務框架,是阿里-主要采用的服務框架,其目的是 作為橋梁聯通不同的業務系統,解耦系統之間的實現依賴。

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

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

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

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

HSF 標簽清單

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 配置

 

 

 

 

 

 

 

 

 

 

 

標簽配置示例: 

 

Consumer 配置 :

屬性 描述
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 項目

通過上面第一、二章節我們已經在開發工具中配置好對應的插件,並且搭建了本地服務注冊 配置中心,下面我們以一個 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 工程是 服務提供者應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM