HSF 开发
?
HSF 簡(jiǎn)介 HSF(High Speed Service Framework),高速服務(wù)框架,是阿里-主要采用的服務(wù)框架,其目的是 作為橋梁聯(lián)通不同的業(yè)務(wù)系統(tǒng),解耦系統(tǒng)之間的實(shí)現(xiàn)依賴。
1: RPC 遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call)是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù)的協(xié) 議,它的特點(diǎn)在于不需要了解底層網(wǎng)絡(luò)技術(shù)。在 OSI 網(wǎng)絡(luò)通信模型中,RPC 跨越了傳輸層和 應(yīng)用層。RPC 使得開(kāi)發(fā)分布式應(yīng)用更加容易
2: ConfigServer(地址注冊(cè)中心) HSF 是一個(gè) RPC 框架,服務(wù)端需要將地址發(fā)送到注冊(cè)中心讓客戶端能夠進(jìn)行服務(wù)發(fā)現(xiàn),客 戶端需要通過(guò)注冊(cè)中心訂閱一個(gè)服務(wù)的地址。服務(wù)與地址的對(duì)應(yīng)關(guān)系是多對(duì)多的關(guān)系,一個(gè) 服務(wù)可以由多個(gè)地址提供,一? ? ? 個(gè)地址可以提供多種服務(wù)。當(dāng)一個(gè)服務(wù)有了新地址(機(jī)器)或 者減少了地址(機(jī)器)時(shí),注冊(cè)中心會(huì)通知這個(gè)服務(wù)的訂閱方將地址增加或者減少,這個(gè)注 冊(cè)中心就是 Configserver,它負(fù)責(zé)存儲(chǔ)地址信息以及地址變更的推送。
3: Diamond(配置中心) HSF 持久化的配置中心是 Diamond。HSF 提供軟負(fù)載服務(wù),其中的路由規(guī)則是在 Diamond 上 進(jìn)行配置,然后推送到客戶端進(jìn)行解析,第二章節(jié)中開(kāi)發(fā)環(huán)境搭建已經(jīng)包含 Diamond。
4: Pandora Pandora 是 HSF 生存的容器,由 pandora 來(lái)管理整個(gè) HSF 的生命周期和二方包的隔離
HSF 標(biāo)簽清單
Provider 配置:
| 屬性 | 描述 |
| interface | interface 必須配置[String],為服務(wù)對(duì)外提供的接口 |
| version | version 為可選配置[String],含義為服務(wù)的版本,默認(rèn)為 1.0.0 |
| group | serviceGroup 為可選配置[String],含義為服務(wù)所屬的組別,以便按 組別來(lái)管理服務(wù)的配置,默認(rèn)為 HSF |
| clientTimeout | 該配置對(duì)接口中的所有方法生效,但是如果客戶端通過(guò) MethodSpecial 屬性對(duì)某方法配置了超時(shí)時(shí)間,則該方法的超時(shí)時(shí)間以客戶端配置為準(zhǔn),其他方法不受影響,還是以服務(wù)端配置為 準(zhǔn) |
| serializeType | serializeType 為可選配置[String(hessian|java)],含義為序列化類 型,默認(rèn)為 hessian |
| corePoolSize | 單獨(dú)針對(duì)這個(gè)服務(wù)設(shè)置核心線程池,是從公用線程池這個(gè)大蛋糕 里切一塊下來(lái) |
| maxPoolSize | 單獨(dú)針對(duì)這個(gè)服務(wù)設(shè)置線程池,是從公用線程池這個(gè)大蛋糕里切 一塊下來(lái) |
| enableTXC | 開(kāi)啟分布式事務(wù) Txc |
| ref | ref 必須配置[ref],為需要發(fā)布為 HSF 服務(wù)的 spring bean id |
| methodSpecials | methodSpecials 為可選配置,用于為方法單獨(dú)配置超時(shí)(單位 ms), 這樣接口中的方法可以采用不同的超時(shí)時(shí)間,該配置優(yōu)先級(jí)高于 上面的 clientTimeout 的超時(shí)配置,低于客戶端的 methodSpecials 配置 |
?
?
?
?
?
?
?
?
?
?
?
標(biāo)簽配置示例:?
?
Consumer 配置 :
| 屬性 | 描述 |
| interface | interface 必須配置[String],為需要調(diào)用的服務(wù)的接口。 |
| version | version 為可選配置[String],含義為需要調(diào)用的服務(wù)的版本,默認(rèn)為 1.0.0 |
| group | group 為可選配置[String],含義為需要調(diào)用的服務(wù)所在 的組,默認(rèn)為 HSF,建議配置。 |
| methodSpecials | methodSpecials 為可選配置,含義為為方法單獨(dú)配置超時(shí) (單位 ms),這樣接口中的方法可以采用不同的超時(shí)時(shí)間, 該配置優(yōu)先級(jí)高于服務(wù)端的超時(shí)配置。 |
| target | 主要用于單元測(cè)試環(huán)境和 hsf.runmode=0 的開(kāi)發(fā)環(huán)境中, 在運(yùn)行環(huán)境下,此屬性將無(wú)效,而是采用配置中心推送回 來(lái)的目標(biāo)服務(wù)地址信息。 |
| connectionNum | connectionNum 為可選配置,含義為支持設(shè)置連接到 server 連接數(shù),默認(rèn)為 1,在小數(shù)據(jù)傳輸,要求低延遲的情況下設(shè) 置多一些,會(huì)提升 tps。 |
| clientTimeout | 客戶端統(tǒng)一設(shè)置接口中所有方法的超時(shí)時(shí)間(單位 ms),超 時(shí)設(shè)置優(yōu)先級(jí)由高到低是:客戶端 MethodSpecial,客戶端 接口級(jí)別,服務(wù)端 MethodSpecial,服務(wù)端接口級(jí)別。 |
| asyncallMethods | asyncallMethods 為可選配置[List],含義為調(diào)用此服務(wù)時(shí)需 要采用異步調(diào)用的方法名列表以及異步調(diào)用的方式。 默認(rèn)為空集合,即所有方法都采用同步調(diào)用。 |
| maxWaitTimeForCsAddress | 配置這個(gè),在服務(wù)訂閱的時(shí)候,會(huì)在指定的時(shí)間內(nèi),等待 地址推送過(guò)來(lái),避免地址為過(guò)來(lái)后,調(diào)用該服務(wù)出現(xiàn)找不 到地址的情況,超過(guò)指定時(shí)間未等到地址,將繼續(xù)初始化 完成。 |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
標(biāo)簽配置示例:?
?
HSF jvm 參數(shù)配置
-Dhsf.server.port
指定 HSF 的啟動(dòng)服務(wù)綁定端口,默認(rèn)為 12200
-Dhsf.serializer
指定 HSF 的序列化方式,默認(rèn)值為 hessian
-DdefaultHsfClientTimeout
指定 HSF 的客戶端超時(shí)時(shí)間 ms,默認(rèn)為 3000
-Dhsf.server.max.poolsize
指定 HSF 的服務(wù)端最大線程池大小,默認(rèn)值為 600
-Dhsf.server.min.poolsize 指定 HSF 的服務(wù)端最小線程池大小。默認(rèn)值為 50
?
HSF 基礎(chǔ)開(kāi)發(fā)
參考下面的 demo 編寫示例,來(lái)快速的開(kāi)發(fā)一個(gè)基礎(chǔ)版的 HSF 應(yīng)用
1 創(chuàng)建 Web 項(xiàng)目
通過(guò)上面第一、二章節(jié)我們已經(jīng)在開(kāi)發(fā)工具中配置好對(duì)應(yīng)的插件,并且搭建了本地服務(wù)注冊(cè) 配置中心,下面我們以一個(gè) demo 展開(kāi)介紹 Hsf 開(kāi)發(fā)的相關(guān)細(xì)節(jié)。
以 eclipse 為例創(chuàng)建一個(gè) maven web 項(xiàng)目。
請(qǐng)點(diǎn)擊 File -> New -> Project -> Maven Project -> maven-archetype-webapp ,在彈 出的界面輸入 groupId、artifactId ,然后連續(xù)點(diǎn)擊 Next,完成項(xiàng)目創(chuàng)建。項(xiàng)目目錄結(jié)構(gòu) 如圖:
2 添加 Maven 依賴
在項(xiàng)目 pom.xml 中添加如下依賴:
3 編寫發(fā)布 HSF 的服務(wù)
創(chuàng)建需要發(fā)布的服務(wù)接口:com.alibaba.edas.SampleService
編寫實(shí)現(xiàn)類:com.alibaba.edas.impl.SampleServiceImpl
4 發(fā)布服務(wù)配置文件
請(qǐng)按照以下步驟配置發(fā)布者的服務(wù)配置文件。
1. 在 web.xml 中配置 spring 的監(jiān)聽(tīng)器:
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 目錄下面添加發(fā)布者的配置文件: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>
到此發(fā)布者就編寫好了。
4. 右鍵點(diǎn)擊創(chuàng)建的項(xiàng)目,點(diǎn)擊 Run As,選擇 Run configuration,在彈出頁(yè)面選擇 AliTomcat Webapp, 右鍵 new 新建,如下圖:
5. 填寫好相關(guān)配置,點(diǎn)擊 Run,啟動(dòng)應(yīng)用,此時(shí)通過(guò)第二章節(jié)建的配置中心可以看到發(fā)布 的服 務(wù),如下圖:
?
5 消費(fèi)服務(wù)配置文件
1. 在配置文件?application-config.xml 添加消費(fèi)者配置:
<?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 目錄下面添加消費(fèi)者的配置文件 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. 已經(jīng)完成了消費(fèi)者的定義
6 Demo 下載地址
通過(guò)如下地址下載: http://edas-public.oss-cn-hangzhou.aliyuncs.com/install_package%2Fedas-app-demo%2Fedas-ap p-demo.zip
將下載下來(lái)的壓縮包解開(kāi)后,可以看到 itemcenter-api,itemcenter 和 detail 三個(gè) Maven 工程。其中 itemcenter-api 工程提供接口定義,detail 工程是消費(fèi)者應(yīng)用,Itemcenter 工程是 服務(wù)提供者應(yīng)用。
轉(zhuǎn)載于:https://www.cnblogs.com/yaweizhang/p/11088552.html
總結(jié)
- 上一篇: 页面元素解析 原
- 下一篇: [原创]浅谈在创业公司对PMF的理解