SpringCloud學習筆記(三)使用Ribbon進行服務間的調用

Ribbon介紹

Ribbon是Netflix發佈的開源項目,主要功能是提供客戶端的軟件負載均衡算法,將Netflix的中間層服務連接在一起。Ribbon客戶端組件提供一系列完善的配置項如連接超時,重試等。簡單的說,就是在配置文件中列出Load Balancer後面所有的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨機連接等)去連接這些機器。我們也很容易使用Ribbon實現自定義的負載均衡算法。簡單地說,Ribbon是一個客戶端負載均衡器。

Ribbon工作時分爲兩步:第一步先選擇 Eureka Server, 它優先選擇在同一個Zone且負載較少的Server;第二步再根據用戶指定的策略,在從Server取到的服務註冊列表中選擇一個地址。其中Ribbon提供了多種策略,例如輪詢、隨機、根據響應時間加權等。

 

首先按照springcloud學習筆記二新建兩個項目,然後對兩個項目進行接口開發。

項目一:

@RestController
@RequestMapping("/api/v1")
public class TestController {
   @Value("${server.port}")
   private String port;

    /**
     *  
     * @param msg
     * @return
     */
  
    @RequestMapping("test")
    public String selectByProductId(String msg){
       //返回值中加上端口號,便於區分是從那個節點獲取的數據(僅用於測試)
       return msg+" hello world "+port;
    }
}

項目二:

首先在項目二的啓動類中添加一個配置

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

接着進行項目二的接口開發

@RestController
@RequestMapping("/hello")
public class HelloController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("world")
    public String getHelloWorld(String msg){

        String obj = restTemplate.getForObject("http://product-service/api/v1/test?msg="+msg, String.class);
        System.out.println(obj);
        return obj;
    }
}

由於只是做一個簡單的測試寫的比較簡單沒有分的很細,只是在項目裏寫了兩個controller層的接口,你們可以根據你們的業務進行開發。

下面是進行測試,首先啓動註冊中心,接着啓動項目一,我啓動了兩個節點如下 8771和8772

 

想在啓動項目二端口號8781

 

註冊中心,項目一,項目二都啓動成功了

 

我這裏時使用項目二調用項目一的接口,使用瀏覽器訪問

項目二控制檯打印數據

 

以上就是使用ribbon進行服務間的調用的簡單demo,有幫助的幫點個贊吧!!!!!!!!!!!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章