1. 程式人生 > >Dubbo與springcloud的取捨

Dubbo與springcloud的取捨

從大環境來看,Dubbo是分散式架構比較成熟的體系,社群一直很火,在springcloud出現之前一直都是佔據大部分的主要開發的主線,而Dubbo是就RPC開發,集成了對RPC框架的支援負載均衡,序列化傳輸,但是在鏈路跟蹤相對於springcloud就有所不足,而springcloud目前是集成了所有微服務的元件,包括服務發現,服務註冊,服務熔斷,服務呼叫,鏈路跟蹤等,而springcloud是基於Http協議傳輸,使用的是輕量級的restfulAPI
springcloud的應用之間的呼叫方式 restTemplate或者是是基於okHttp的feign來實現
現在來詳細說說restTemplate的應用的幾種情況

  1. hardcode的方式來使用restTemplate的方式(這種不推薦使用)
    主要是通過在controller層使用@AutoWirte注入restTemplate的方式然後使用它提供的介面來實現服務的呼叫,這裡需要知道服務的詳細的URL才能完成,如果在叢集的環境中這種情況就比較難實現在這裡插入圖片描述

2.使用@AutoWirte的方式使用loadBlanceClient
這種方式是使用了loadBalanceClient的getHost(),以及getPort()的方法來實現動態獲取叢集裡面的服務的ip埠,但是注意這樣就比較冗餘,每次都需要依賴loadBalanceClient的介面
在這裡插入圖片描述


3.另外的一種情況是使用配置類的方法來實現解耦
在設定一個config類,該類的restTemplate使用了註解@LoadBalance來做動態的獲取服務的ip埠,這樣在controller層呼叫的時候就可以使用,只需要呼叫服務的名字即可
在這裡插入圖片描述
在這裡插入圖片描述
這裡的負載均衡策略如果需要重寫策略可以通過重寫IRule這個介面來實現,具體的有輪詢,權重,隨機等。這個就放到以後說Ribbon的時候在詳細說。