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,有幫助的幫點個贊吧!!!!!!!!!!!!!!!!!