背景闡述
前幾天,有位同窗問我一個關於 Dubbo 的問題。他的訴求是這樣子的:html
訴求一
第一個訴求是本地開發的時候想本身調用本身的服務,好比本身在改 A 服務,而後出問題了,本地再啓動一個 B 服務,A 服務調用 B 服務直接排查問題。apache
目前的問題是用的同一個註冊中心,因此會調用到其餘的服務實例。api
還有就是去網上找了一些文章的資料,按照資料上的配置沒有效果,也就是在@Reference 配置 url 來指定調用的服務地址。負載均衡
配置以下:框架
@Reference(url="dubbo://localhost:20880")
訴求二
目前他們的測試環境沒有使用 Docker 來部署,並且每一個服務只部署了一個實例。問題就是當一個項目並行開發時有多個分支,這些分支得合併後一塊兒部署測試。常常會出現代碼衝突等問題。異步
還有就是快要上線時,須要下掉其餘的分支作迴歸測試。可是會出現其餘團隊也要同一天上線,就只能協商等待來解決。分佈式
最好的方式就是能夠實現一個分支部署一個實例,對於他們目前的這個規模和投入這個暫時作不了。因此他向我請教,有沒有什麼更好更快的方式。ide
解決方案
既然找了我,我仍是給出一些建議吧,不必定很好,僅供參考。微服務
訴求一解決方案br/>@Reference
在@Reference 中指定 url 是能夠的,只是那位同窗配置的地址有問題,在地址後面應該加上接口和版本的信息。學習
@Reference(url="dubbo://localhost:20880/com.xxx.xxx:1.0")
本地配置文件
在@Reference 中指定 url 很差的方式就是跟代碼耦合了,很容易出現將這種代碼提交的狀況。因此咱們介紹另外一種方式。
在本身電腦的用戶目錄下建一個 dubbo-resolve.properties 文件,路徑是 ${user.home}/dubbo-resolve.properties ,而後文件裏配置好須要直連的服務信息,不須要修改本地工程的其餘配置信息。
dubbo-resolve.properties
com.xxx.xxx=dubbo://localhost:20880/com.xxx.xxx:1.0.0
com.xxx.xxx 是接口的全路徑,等於號後面就是服務的地址了。
訴求二解決方案
既然短期內不太可能去改造部署系統,那麼能夠先簡單的處理。目前他們就兩個團隊共用一套測試環境,我認爲能夠再新增一套環境來進行團隊間的隔離。
對於入口處的 Web 程序或者網關,能夠弄兩個域名解決。主要是內部服務的調用須要進行隔離,好比我 A 團隊部署的服務不能讓 B 團隊調用到,由於分支不同會出問題。
註冊隔離
註冊隔離指的是在服務註冊的時候就將兩個團隊的測試服務分別註冊,好比各自使用一個獨立的註冊中心。
獨立的註冊中心確定能夠解決問題,可是徹底不必這麼麻煩。他們註冊中心用的 Nacos,可使用 Nacos 的 namespace 來隔離便可。
-Ddubbo.registry.address=nacos://api.nacos.beta.xxx.com:8848?namespace=xxx
本地配置文件
一樣也能夠用本地配置文件的方式來指定調用的服務,這個方式的前提是部署的機器是獨立的,不能共用。若是新增了新的接口須要修改配置文件。
控制 Dubbo 路由或者負載均衡
控制路由或者負載均衡都是爲了實現一樣的效果,也就是把全部的服務提供者信息給你,你本身選擇一個去調用。
官方文檔:
http://dubbo.apache.org/zh-cn/docs/dev/impls/router.html[1]
http://dubbo.apache.org/zh-cn/docs/dev/impls/load-balance.html[2]
總結
對於訴求一的解決方案,建議使用本地配置文件的方式。不須要改動代碼,比較方便。
對於訴求二的解決方案,建議使用註冊隔離的方式。這是最完全的方式,用了註冊隔離,也就不用在想辦法去控制路由了,由於註冊上來的服務就是我這套環境須要的,不須要的要註冊信息在另外一個命名空間裏面,相互不影響。
關於做者:尹吉歡,簡單的技術愛好者,《Spring Cloud 微服務-全棧技術與案例解析》, 《Spring Cloud 微服務 入門 實戰與進階》做者, 公衆號 猿天地 發起人。
參考資料
[1]
router.html: http://dubbo.apache.org/zh-cn/docs/dev/impls/router.html
[2]
load-balance.html: http://dubbo.apache.org/zh-cn/docs/dev/impls/load-balance.html
相關推薦
Kitty中的動態線程池支持Nacos,Apollo多配置中心
噓!異步事件這樣用真的好麼?
一時技癢,擼了個動態線程池,源碼放Github了
熬夜之做:一文帶你瞭解Cat分佈式監控
笑話:大廠都在用的任務調度框架我能不知道嗎???
後臺回覆 學習資料 領取學習視頻
若有收穫,點個在看,誠摯感謝
尹吉歡我不差錢啊