網路協定

對於 Dubbogo 微服務框架來說,網路協定是遠端程序呼叫中負責網路通訊的模組,負責從應用層到網路層的資料序列化、打包、請求發起、網路埠監聽等功能。Dubbogo 對協定抽象出一組介面如下:

type Protocol interface {
// Export service for remote invocation
Export (invoker Invoker) Exporter
// Refer a remote service
Refer(url *common.URL) Invoker
// Destroy will destroy all invoker and exporter, so it only is called once.
Destroy()
}

這個介面包含三個方法。其中,Export 方法負責服務的暴露過程。輸入參數 invoker 是 dubbo 的概念,它封裝了一個可呼叫的實例。在具體網路協定(例如 Triple)實現的 Export 方法中,對於特定的協定,會將用一定邏輯封裝的可呼叫實例 Invoker 以網路埠監聽的形式暴露給外部服務,外部對此網路埠的請求會被 Export 方法開啟的監聽協程獲取,然後會根據網路協定進行拆包反序列化,得到解析後的請求資料。

Refer 方法負責服務的引用過程。輸入參數 url 是 dubbo 框架的通用結構,可以描述一個想要引用的服務。url 參數包含了想要引用服務的多個參數,例如對應服務的介面名稱、版本號(version)、使用協定(protocol)等等。在具體網路協定(例如 Triple)實現的 Refer 方法中,會將具體的網路協定封裝到 Invoker 可呼叫實例的方法中,使用者層發起的 RPC 呼叫可以直接通過返回的 Invoker 物件發起特定協定的網路請求。

Destroy 方法用於銷毀當前暴露的服務,用於服務下線的場景。Dubbogo 框架有優雅下線機制,可以在服務程序終止前以監聽訊號的形式將所有已啟動的服務下線。


最後更新日期:2023 年 1 月 2 日:增強 Dubbogo 文件 (#1800) (71c8e722740)