SOFARPC 提供應用之間的點對點服務調用功能。
產品特性
高可用
SOFARPC 提供軟件負載均衡的能力,它是對等服務調用的調度器,會幫助服務消費方在這些對等的服務提供方中合理地選擇一個來執行相關的業務邏輯。
高容錯
一切服務調用的容錯機制均由軟負載和配置中心控制,這樣可以在應用系統無感知的情況下,幫助服務消費方正確選擇健康的服務提供方,保障全站的穩定性。
基本功能
主要為用戶提供下述功能:
多種服務路由方式:包括軟負載、硬負載、直連等。
負載均衡:支持隨機策略、考慮長連接、權重等負載均衡策略。
多種調用方式:支持同步、單向、回調、泛化等多種調用方式。
多種編程界面:支持 XML、動態客戶端、Standalone 模式等多種編程界面。
流量轉發:支持應用之間的流量轉發。
鏈路追蹤:支持網格外部應用調用網格內部應用并形成一個完整的鏈路追蹤信息
鏈路數據透傳:支持應用調用上下文中存放數據,達到整個鏈路上的應用都可以操作該數據。
故障剔除:目前支持 bolt 協議。它會自動監控 RPC 調用的情況。
協議支持
SOFARPC 支持不同的通訊協議,目前主要包括:
BOLT:是螞蟻集團開放的,基于 Netty 開發的網絡通信框架。
RESTful:基于 HTTP 一種設計框架。
Dubbo:開源分布式服務框架
H2C:開放的網絡通信框架。
實現原理
SOFARPC 中的遠程調用是通過服務模型來定義服務調用雙方的。服務分為:
服務消費方:對應 RPC 的調用端,可以理解為調用客戶端,即 “引用 (Reference)”。
服務提供方:對應 RPC 的被調用端,可以理解為調用服務端。即 “服務 (Service)”。
SOFARPC 實現原理示意圖
上述原理說明如下:
register service:當一個 SOFARPC 的應用啟動的時候,如果發現當前應用需要發布 RPC 服務的話,那么 SOFARPC 會將這些服務注冊到服務注冊中心上,如上圖中 Service 指向 SOFARegistry。
subscribe service:當引用這個服務的 SOFARPC 應用啟動時,會從服務注冊中心訂閱到相應服務的元數據信息。
notify service:服務注冊中心收到訂閱請求后,會將發布方的元數據列表實時推送給服務引用方,如上圖中 Registry 指向 Reference。
invoke:當服務引用方拿到地址以后,就可以從中選取地址發起調用了,如上圖中 Reference 指向 Service。