四、dubbo的執行分爲幾個步驟?
答:
①服務裝載:將服務裝載在容器中,而後開始準備註冊服務。讀配置文件解析服務。
②解析服務:過程咱就不瞭解了,反正就是講Bean屬性轉成url的參數,而後將Url傳給Protocol擴展點
③暴露服務:基於擴展點的Adaptive機制,根據URL的協議頭,進行不一樣協議的服務暴露和引用,分爲兩種方式:
(1)直接暴露服務端口(通常在開發過程當中,就不用麻煩的去使用註冊中心了)
服務調用和提供在同一個電腦上,只須要打開服務的端口就行。
(2)向註冊中心暴露服務(須要將服務的IP和端口一同暴露給註冊中心)
將export參數中的提供者URL先註冊到註冊中心,再從新傳給Protocol擴展點進行暴露: Dubbo://service-host/com.xxx.TxxService?version=1.0.0
④引用服務:由於暴露服務的方式有兩種,所以引用服務也對應的有兩種
(1)直接引用服務
(2)從註冊中心發現引用服務
五、嗶嗶賴賴,能耐你講講什麼是暴露服務?
答:不服現實碰一碰,你看我扎不扎你就完了!
【1】ServiceConfig類拿到對外提供服務的實際類ref
【2】ProxyFactory類的getInvoker方法使用ref生成一個AbstractProxyInvoker實例,完成具體服務到invoker的轉化。
【接下來就是Invoker轉換到Exporter的過程】
【3】在DubboProtocol類的export方法,它主要是打開socket偵聽服務,並接收客戶端發來的各類請求,通信細節由dubbo本身實現。
六、請問SBDZ(springBoot+Dubbo+Zookeeper)是怎麼利用RPC調用服務的?
答:既然是引用服務,那麼就要從註冊中心拿到服務的接口,因此這個客戶端項目必須聯通Zookeeper註冊中心。使用Dubbo的reference獲取註冊中心的interface指定的接口服務,經過ID屬性值進行匹配dubbo的service中的ref。在消費端consumer消費端建立controller來調用接口,使用註解注入實體節課完成調用。
七、如今能夠說說Dubbo的執行流程了吧?
答:我以爲分爲6步執行
【1啓動】啓動時先啓動Provider,雖然啓動Spring容器時,自動啓動dubbo的Provider。
spring
【2註冊】註冊:Provider在啓動後自動會去註冊內容。
註冊的內容包括:Provider的IP、Provider的端口、Provider對外提供的接口、方法、dubbo版本號、訪問Provider的協議
【3訂閱】當Consumer啓動時,自動去Registry獲取到全部已註冊的服務信息
【4通知】當Provider的信息發生變化時,自動由Registry向Consumer推送通知
【5調用】Consumer調用Provider中的方法,是同步請求。
【6次數】每隔2分鐘,Provider和Consumer自動向Monitor發送訪問次數,Monitor進行統計。socket