高速服務架構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包並部署即可。