第五篇:RestTemplate訪問服務叢集
在生產環境,為了防止單節點故障,服務應用往往要搭建服務叢集,而咱們上一講使用的遠端呼叫方式是沒法對叢集進行訪問的,只能對某個應用節點進行訪問。
程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
( "/findOne" )
|
這種遠端呼叫方式缺點有兩方面:
1:無法在服務叢集中均衡訪問,因為ip和埠寫死了
2:如果服務遷移到其他伺服器,比如從開發環境遷移到生產環境,程式碼要修改,因為ip和埠寫死了
Resttemplate訪問服務叢集
步驟一:在restTemplate模板物件上加@LoadBalanced註解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
步驟二:在需要遠端呼叫的地方使用@Autowired註解注入restTemplate模板物件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
上面程式碼在進行遠端呼叫的時候不是寫的ip和埠而是應用名,一個服務叢集他們的應用名就只有一個。通過訪問應用名,就可以在叢集中均衡訪問。
完成上面兩個步驟就可以在服務叢集中均衡訪問服務節點,為什麼加上@LoadBalanced註解,就能均衡訪問叢集呢?
這裡面的功勞歸根ribbon元件,當我們應用依賴了eureka-client的時候,eureka-client依賴了ribbon,雖然看是ribbon沒有存在感,但是ribbon默默的發揮著自己的負載均衡能力。