Eureca Ribbon分布負(fù)載均衡的helloworld例子
馬克-to-win @馬克java社區(qū):本節(jié)我們還是拿第一節(jié)helloworld的例子,稍加改進(jìn),即可。思路就是把provider在兩個(gè)不同的端口,甚至不同的機(jī)器上,分別運(yùn)行。而consumer上加上Ribbon特性即可。(參考我的項(xiàng)目目錄:ribbon)
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
1)在provider的代碼上加上一句:System.out.println("I do");這樣當(dāng)consumer調(diào)用哪一個(gè)provider時(shí),你可以知道反饋。
@RequestMapping("/acquire")
public String acquire() {
System.out.println("I do");
return "Hello 馬克-to-win acquire";
}
2)運(yùn)行provider時(shí),第一次像原來(lái)一樣運(yùn)行。第二次運(yùn)行時(shí)把端口從9090變成9092。其他都不變。
3)在consumer的項(xiàng)目中,加上。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
4)運(yùn)行方法和第一節(jié)一樣:
當(dāng)我們不斷用http://192.168.0.101:9000/consumer去刷新時(shí),在兩個(gè)不同的provider的console中打印出I do的機(jī)率是一樣的。
附錄:
1)對(duì)于eureka服務(wù)器的項(xiàng)目,如果你把target目錄下的東西都清除了,會(huì)產(chǎn)生嚴(yán)重的錯(cuò)誤。運(yùn)行時(shí),會(huì)報(bào): 錯(cuò)誤: 找不到或無(wú)法加載主類(lèi) com.EurecaServer3.App。怎么處理呢?因?yàn)閏lass不存在了,所以沒(méi)法運(yùn)行。右鍵擊pom.xml文件,run as/maven install,但會(huì)報(bào)如下錯(cuò)誤:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?這時(shí), 只要重新變一下,java build path/libraries/重刷jdk1.8即可。編譯完,運(yùn)行以后,會(huì)報(bào)com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect,把a(bǔ)pplication.yml,改動(dòng)一點(diǎn)重新存一下即可。消費(fèi)者的項(xiàng)目清空以后, 端口不對(duì)了:Tomcat started on port(s): 8080 (http),解決方法:把a(bǔ)pplication.yml,改動(dòng)一點(diǎn)重新存一下即可。
2)2018-11-22 15:07:36.623 ERROR 12964 --- [ver-bootstrap-0] c.netflix.discovery.TimedSupervisorTask : task supervisor rejected the task。這個(gè)錯(cuò)誤并不影響運(yùn)行,解決方法:
eureka-client1.4版本原因,換成D版本可以解決,D版本的eureka-client升級(jí)到1.6以上了
3)java運(yùn)行jar命令提示沒(méi)有主清單屬性。WinRAR打開(kāi)jar包,找到里面的MANIFEST.MF文件,加一句:Main-Class: 包.主類(lèi)名