建立client客戶端,用來連線請求服務消費者。
封裝invoker,裡面主要包含請求的客戶端,服務端位址埠,請求的類以及方法。
在referencebean->getobject()->init()中會呼叫createproxy()方法用來建立**物件。
在createproxy()中會執行乙個refprotocol.refer()方法,這裡refprotocol同樣有兩個實現類,乙個是registryprotocol,乙個是dubboprotocolregistryprotocol負責註冊資訊,訂閱資訊,構造invoker**類,並將消費者對於的invoke快取到註冊列表中。
dubboprotocol主要負責connect/getclients()連線獲取客戶端,等待與服務端通訊
消費者端獲取**類在referencebean類中,而這個類實現類factorybean,這個是個工程bean,通過getobject()方法獲取**類invoker。
進入get()
第一次ref肯定為空,進入init()
這裡面有個重要的方法createproxy(),用來建立**類,進入這個方法看看主要有啥:
這裡有個refprotocol.refer()方法,用來建立invoker,同時這個介面有多個實現類包括,dubboprotocol與registryprotocol,我們分別在這兩個類的refer()方法打上斷點備用。然後我們放開斷點,進入下一步:
如果服務沒有分組的話,會走到這裡執行dorefer()方法,這裡是重點,我們進入這個方法:
如圖所示,進行註冊,訂閱,快取,最後會把建立好的vinoker返回出去,因為invoker肯定包含客戶端相關資訊,不然怎麼連線服務端呢,所以在返回invoker之前會有建立客戶端的操作。這時我們放開第二個斷點會來到如圖:
這裡有個重要的方法,getclients(),點開這個方法:
要初始化乙個client,點開繼續往下
點開connect,繼續:
這裡又到了netty的底層了,客戶端這時候就建立起來了,隨時等待與服務端的連線。
最全最簡單的dubbo教程 集群容錯《十四》
在集群呼叫失敗時,dubbo 提供了多種容錯方案,預設為 failover 重試。dubbo提供了以下幾種集群容錯模式 官方解釋 失敗自動切換,當出現失敗,重試其它伺服器 通常用於讀操作,但重試會帶來更長延遲。可通過 retries 2 來設定重試次數 不含第一次 解釋說明 很好理解,當呼叫失敗的時...
app許可權,最簡單最全
整合步驟 dependenciesxxpermissions.with this constantrequest 可設定被拒絕後繼續申請,直到使用者授權或者永久拒絕 permission permission.system alert window,permission.request instal...
史上最詳細最全面,最聰明的lamp搭配教程
史上最詳細最全面,最聰明的lamp搭配教程,如果通過不了,本作者便去自殺。1.確保安裝如下包 不安裝會提示有錯誤 make b.gcc.c.gcc c 問 如何檢視有無安裝呢?答 rpm q gcc 其他也是同理 問 如果未安裝,如何安裝?答 yum install gcc 一定要聯網,當然也可使用...