Soul閘道器中的Sofa外掛程式執行原理(二)

2021-10-18 22:56:29 字數 2246 閱讀 4945

本文的分析思路和之前的apache dubbo是一樣的。

public mono

genericinvoker

(final string body,

final metadata metadata,

final serverwebexchange exchange)

throws soulexception

//獲取**物件

genericservice genericservice = reference.

refer()

;//省略了其他**

genericservice.$invoke

(metadata.

getmethodname()

, pair.

getleft()

, pair.

getright()

);return mono.

fromfuture

(future.

(ret -

>))

.onerrormap

(soulexception:

:new);

}

整個流程涉及到的類和方法如下:

soul-admin端:

soul-bootstrap閘道器端:

在本文的測試中,soul-admin端和soul-bootstrap閘道器端之間的資料同步是通過websocket進行。所以在閘道器啟動的時候會進行資料同步操作。

public consumerconfig

build

(final metadata metadata)

optional.

ofnullable

(sofaparamextinfo.

gettimeout()

).ifpresent

(reference:

:settimeout)

; optional.

ofnullable

(sofaparamextinfo.

getretries()

).ifpresent

(reference:

:setretries);}

//從註冊中心獲取**服務

object obj = reference.

refer()

;if(obj != null)

", metadata.

tostring()

);cache.

put(metadata.

getpath()

, reference)

;//將服務資訊放到cache中去

}return reference;

}

在同步過程中,將所有的元資料資訊及註冊中心的服務放到了cache中,在使用的時候,就會到這個cache中去拿。就是在文章開始的地方提到的泛化呼叫。

public mono

genericinvoker

(final string body,

final metadata metadata,

final serverwebexchange exchange)

throws soulexception

//獲取**物件

genericservice genericservice = reference.

refer()

;//省略了其他**

genericservice.$invoke

(metadata.

getmethodname()

, pair.

getleft()

, pair.

getright()

);return mono.

fromfuture

(future.

(ret -

>))

.onerrormap

(soulexception:

:new);

}

小結:本文再次梳理了soul閘道器中sofa外掛程式裡面的服務是如何被載入的,包括服務的配置資訊和 **物件的生成。

soul閘道器 17 sofa外掛程式

之前的筆記裡面介紹過soul閘道器的dubbo外掛程式,它是靠dubbo的泛化呼叫來實現將http協議轉成dubbo協議。這次來看下soul閘道器的sofa外掛程式,首先把soul admin sofa示例專案 soul bootstrap依次啟動起來,看下效果。在soul admin裡面開啟sof...

soul閘道器學習sofa 外掛程式體驗(下)

首先回憶下程式沒有進入sofaplugin的可能原因 外掛程式狀態沒有開啟直接沒有執行直接 首先確認了狀態已經開啟,debug發現我的外掛程式鏈裡面並沒有sofa外掛程式 懷疑沒有初始化sofaplugin 再次看了波官網檢查了下閘道器日誌 發先輸出日誌裡面sofa外掛程式沒有被載入 找到原因 在閘...

soul閘道器原始碼解析 sofa接入 sofa外掛程式

執行結果 遇到的問題 需要啟動乙個zookeeper 單機就行了 檢查下 soul bootstrap 的pom檔案下是否存在以下配置 com.alipay.sofa sofa rpc all 5.7.6 org.apache.curator curator client 4.0.1 org.apa...