首先,我們都知道 Dubbo 調用api 需要提供暴露 接口, 消費端才通過 ZK 可以調用
通常我們都會使用 提供 api jar包 的方式 使用 這樣既方便又快捷 簡單
只需要在spring中配置就ok了.
可與此同時,也會有一個問題存在.
那就是 api jar 強依賴, 也就是說 一旦有新的api 需要添加的時候 就需要更新jar包
那么如何避免這樣的問題.
基於使用的gateway 的思想 闡述一下:
其實很簡單. 那就服務提供者還是一樣的暴露接口. 這個不變.
但 服務端需要提供一個入口, 也就是我們說的controller 參數請求 分別為 group api method
這里使用 @PathVariable 傳遞 這樣服務端其實就已經知道我們需要調用的接口api 及 method
然后 再通過 Dubbo 提供的 (ReferenceBean) 創建消費 並將我們傳遞的參數設置給 ReferenceBean 最后調用 genericService.$invoke(method, types, args) 執行請求
這個就相當於我們消費端 在 spring application中配置的消費端一樣
消費端 使用HttpClient 也就是http請求 請求服務端 這樣就可以避免Duboo api jar包強依賴的問題了!
同樣存在問題 http請求 相對dubbo請求 效率一定不如dubbo;