高速服務框架HSF(High-speed Service Framework),是在阿里巴巴廣泛使用的分布式RPC服務框架。
概述
HSF連通不同的業務系統,解耦系統間的實現依賴。HSF從分布式應用的層面,統一了服務的發布與調用方式,從而幫助用戶更加方便、快速地開發分布式應用,以及提供或使用公共功能模塊。HSF為用戶屏蔽了分布式領域中的各種復雜技術細節,如遠程通訊、序列化實現、性能損耗、同步與異步調用方式的實現等。
HSF架構
HSF作為一個純客戶端架構的RPC框架,沒有服務端集群,所有HSF服務調用均是通過服務消費方(Consumer)與服務提供方(Provider)點對點進行。為了實現整套分布式服務體系,HSF還需要依賴以下外部系統。
服務提供方
服務提供方綁定了12200端口,用于接收請求并提供服務,同時將地址信息發布到地址注冊中心。
服務消費方
服務消費者通過地址注冊中心訂閱服務,根據訂閱到的地址信息發起調用,地址注冊中心不參與調用。
EDAS地址注冊中心
HSF依賴注冊中心進行服務發現,如果沒有注冊中心,HSF只能完成簡單的點對點調用。
服務提供端無法將服務信息對外暴露,服務消費端可能已經明確了待調用的服務,但是無法獲取該服務。因此注冊中心是服務信息的中介,為服務提供了注冊與發現的功能。
EDAS持久化配置中心
持久化的配置中心用于存儲HSF服務的各種治理規則,HSF客戶端在啟動的過程中向持久化配置中心訂閱服務治理規則,如路由規則、歸組規則、權重規則等,從而根據規則對調用過程的選址邏輯進行干預。
EDAS元數據存儲中心
元數據指HSF服務對應的方法列表以及參數結構等信息。元數據對HSF的調用過程不會產生影響,因此元數據存儲中心是可選的。由于服務運維的便捷性,HSF客戶端在啟動時會將元數據上報到元數據存儲中心,方便服務運維。
EDAS控制臺
EDAS控制臺打通了服務地址注冊中心、持久化配置中心、元數據存儲中心等,為用戶提供了服務運維功能,包括服務查詢、服務治理規則管理等,提高HSF服務研發的效率、運維的便捷性。
功能
HSF作為分布式RPC服務框架,支持多種服務的調用方式。
Dubbo 3.0實現了和HSF框架的技術統一。在EDAS中,可以便捷地將HSF應用升級為Dubbo 3.0應用。升級之后,HSF應用可沿用原有的開發方式,還可以使用EDAS為Dubbo應用提供的更加完善的服務治理功能。
同步調用
HSF客戶端默認以同步調用的方式消費服務,客戶端代碼需要同步等待返回結果。
異步調用
對于服務調用的客戶端,并非所有HSF服務都需要同步等待返回結果。HSF提供異步調用,幫助客戶端無需同步阻塞在HSF調用上。HSF的異步調用有Future調用和Callback調用2種。
Future調用
客戶端在需要獲取調用的返回結果時,通過HSFResponseFuture.getResponse(int timeout)主動獲取結果。
Callback調用
Callback調用利用HSF內部提供的回調機制,在指定HSF服務消費完畢拿到返回結果時,HSF框架會回調用戶實現的
HSFResponseCallback
接口,客戶端通過回調通知的方式獲取結果。
泛化調用
對于一般的HSF調用來說,HSF客戶端需要依賴服務的二方包,通過依賴二方包中的API進行編程調用,獲取返回結果。但是泛化調用不需要依賴服務的二方包,可以發起HSF調用,獲取返回結果。在平臺型的產品中,泛化調用的方式可以有效減少平臺型產品的二方包依賴,實現系統的輕量級運行。
調用鏈路Filter擴展
HSF內部設計了調用過濾器,能夠主動發現用戶的調用過濾器擴展點,將其集成到HSF調用鏈路中,便于擴展方對HSF的請求進行擴展處理。
應用開發方式
使用HSF框架開發應用有Ali-Tomcat和Pandora Boot兩種方式。
Ali-Tomcat:依賴Ali-Tomcat和Pandora,提供了完整的HSF功能,包括服務注冊與發現、隱式傳參、異步調用、泛化調用和調用鏈路Filter擴展。應用程序須以WAR包方式部署。
Pandora Boot:依賴Pandora,提供了比較完整的HSF功能,包括服務注冊與發現、異步調用。應用程序編譯為可運行的JAR包并部署即可。