阿里巴巴分布式服務框架HSF


 

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

HSF連通不同的業務系統,解耦系統間的實現依賴。HSF從分布式應用的層面,統一了服務的發布與調用方式,從而幫助用戶更加方便、快速地開發分布式應用,以及提供或使用公共功能模塊。HSF為用戶屏蔽了分布式領域中的各種復雜技術細節,如遠程通訊、序列化實現、性能損耗、同步與異步調用方式的實現等。

HSF服務框架包含以下主要組件

服務提供者

在服務框架中真正提供服務功

能實現的應用實例,為了保障服務提供的高可用性,一般均是集群部署。每一個HSF的應用均是以War包的形式存在,運行在阿里巴巴優化定制后的Tomcat容器中,在Tomcat容器層已經集成了HSF服務框架對服務提供者或服務調用者進行配置服務器發現、服務注冊、訂閱、失效轉移等相關功能,所以不管是在服務提供者還是調用者開發時,只需要進行服務相關的配置操作,應用中無需引入任何HSF相關的Jar依賴包。

服務調用者

作為服務的消費者,大多數也是以WAR應用包的方式運行在Tomcat容器中,在阿里巴巴集團內部也有一部分是基於C/C++、PHP、Node.js等語言開發的服務調用者。

地址服務器

在HSF服務框架中肩負着給服務提供者和服務調用者提供部署環境中所有配置服務器和Diamond服務器的服務器列表信息,是由Nginx(是一個高性能的HTTP和反向代理服務

器)提供該服務能力。

配置服務器。

配置服務器主要負責記錄環境內所有服務發布(服務提供者的IP地址和服務端口信息)和服務訂閱(服務調用者的IP地址和服務端口信息)信息,並將服務相關信息推送到服

務節點上。為了追求服務發布和訂閱的推送效率,所有的服務發布和訂閱信息均是保存在內存中。

Diamond服務器

本質上,Diamond服務器是一個通用的統一配置管理服務(類似於Zookeeper),給應用提供統一的配置設置和推送服務,使用場景非常廣泛,在阿里巴巴內部有很多產品在需要進行配置的保存和獲取時都會使用Diamond服務器。

服務節點對配置服務器列表的獲取。

服務調用者和服務提供者在隨着Tomcat容器啟動后,會以域名(比如“xxx.tbsite.net”)的方式獲取到可用的地址服務器,通過向地址服務器分別發送獲取服務器列表的方式,在容器啟動完成后,就已經在該服務節點上獲取到了配置服務器和Diamon服務器的IP列表信息。

服務的注冊發布

作為服務提供者,當獲取到配置服務器的服務器列表后,則向配置服務器發送當前應用中包含的服務提供者相關信息(這些信息均是從應用的配置文件中獲取到的,比如服務的接口類全名、服務版本、所屬服務組等信息),連同當前服務器的IP地址、服務端口等信息進行服務注冊發布.

·服務的訂閱

當作為服務調用者的應用啟動時,同樣在獲取配置服務器列表后,就進行與配置服務器的交互,發送服務消費者相關信息(同樣包含了服務的接口全名,服務版本、所屬服務組)到配置服務器進行服務的訂閱服務規則的推送(如果需要)。

如果沒有上文提到對於服務安全管控、流量控制等需求的時候,對於Diamond服務器的使用並不是必需的,在有這樣的需求場景時,可通過Diamond服務器提供的規則設置界面,對指定服務的服務提供者和調用者設置相關的規則,一旦保存規則后,則此規則配置將會在5秒內推送到與所設置服務相關的服務節點上。

服務交互

在應用進行業務請求處理過程中,出現了服務調用者對服務提供者的調用時,服務調用者會從已經保存在該應用節點上的服務提供者服務器列表中選擇(阿里巴巴內部使用隨機模式)其中一台進行服務請求的發送,服務交互期間完全是服務調用者和服務提供者間兩台服務器間的操作,無需通過中間服務器的中轉。

 

*********************************************************************************************

【如果文字看累了,可b站搜索“沙皮狗2021”,用聽的方式領略知識的魅力】

傳送門 :https://space.bilibili.com/407643589

【微信公眾號】: 沙皮狗2021

*********************************************************************************************


免責聲明!

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



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