HSF 概述


HSF 概述

高速服務框架 HSF (High-speed Service Framework),是在阿里巴巴內部廣泛使用的分布式 RPC 服務框架。

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 服務框架,支持多種服務的調用方式。

  • 同步調用

HSF客戶端默認以同步調用的方式消費服務,客戶端代碼需要同步等待返回結果。

  • 異步調用

對於服務調用的客戶端來說,並不是所有的 HSF 服務都需要同步等待返回結果的。對於這些服務,HSF 提供異步調用的形式,讓客戶端不必同步阻塞在 HSF 調用操作上。HSF 的異步調用,有 2 種:

  • Future 調用:客戶端在需要獲取調用的返回結果時,通過 HSFResponseFuture.getResponse(int timeout) 主動獲取結果。
  • Callback 調用:Callback 調用利用 HSF 內部提供的回調機制,當指定的 HSF 服務消費完畢拿到返回結果時,HSF 框架會回調用戶實現的 HSFResponseCallback 接口,客戶端通過回調通知的方式獲取結果。
  • 泛化調用

對於一般的 HSF 調用來說,HSF 客戶端需要依賴服務的二方包,通過依賴二方包中的 API 進行編程調用,獲取返回結果。而泛化調用是指不需要依賴服務的二方包,從而發起 HSF 調用、獲取返回結果的方式。在一些平台型的產品中,泛化調用的方式可以有效減少平台型產品的二方包依賴,實現系統的輕量級運行。

  • HTTP 調用

HSF 支持將服務以 HTTP 的形式暴露出來,從而支持非 Java 語言的客戶端以 HTTP 協議進行服務調用。

  • 調用鏈路 Filter 擴展

HSF 內部設計了調用過濾器,並且能夠主動發現用戶的調用過濾器擴展點,將其集成到 HSF 調用鏈路中,使擴展方能夠方便的對 HSF 請求進行擴展處理。

應用開發方式

使用 HSF 框架開發應用包含 Ali-Tomcat 和 Pandora Boot 兩種方式。

  • Ali-Tomcat: 依賴 Ali-Tomcat 和 Pandora,可以提供完整的 HSF 功能,包括服務注冊與發現、隱式傳參、異步調用、泛化調用和調用鏈路 Filter 擴展。應用程序需要以 WAR 包方式部署。
  • Pandora Boot:依賴 Pandora,可以提供比較完整的 HSF 功能,包括服務注冊與發現和異步調用。應用程序可以打包成獨立運行的 JAR 包並部署。


免責聲明!

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



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