Eureca Ribbon分布負載均衡的helloworld例子

馬克-to-win @馬克java社區:本節我們還是拿第一節helloworld的例子,稍加改進,即可。思路就是把provider在兩個不同的端口,甚至不同的機器上,分別運行。而consumer上加上Ribbon特性即可。(參考我的項目目錄:ribbon)
馬克- to-win:馬克 java社區:防盜版實名手機尾號: 73203。



1)在provider的代碼上加上一句:System.out.println("I do");這樣當consumer調用哪一個provider時,你可以知道反饋。

         @RequestMapping("/acquire")
        public String acquire() {
             System.out.println("I do");
            return "Hello 馬克-to-win acquire";
        }
2)運行provider時,第一次像原來一樣運行。第二次運行時把端口從9090變成9092。其他都不變。
3)在consumer的項目中,加上。
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
4)運行方法和第一節一樣:




當我們不斷用http://192.168.0.101:9000/consumer去刷新時,在兩個不同的provider的console中打印出I do的機率是一樣的。






附錄:

1)對于eureka服務器的項目,如果你把target目錄下的東西都清除了,會產生嚴重的錯誤。運行時,會報: 錯誤: 找不到或無法加載主類 com.EurecaServer3.App。怎么處理呢?因為class不存在了,所以沒法運行。右鍵擊pom.xml文件,run as/maven install,但會報如下錯誤:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?這時, 只要重新變一下,java build path/libraries/重刷jdk1.8即可。編譯完,運行以后,會報com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect,把application.yml,改動一點重新存一下即可。消費者的項目清空以后, 端口不對了:Tomcat started on port(s): 8080 (http),解決方法:把application.yml,改動一點重新存一下即可。

2)2018-11-22 15:07:36.623 ERROR 12964 --- [ver-bootstrap-0] c.netflix.discovery.TimedSupervisorTask  : task supervisor rejected the task。這個錯誤并不影響運行,解決方法: eureka-client1.4版本原因,換成D版本可以解決,D版本的eureka-client升級到1.6以上了

3)java運行jar命令提示沒有主清單屬性。WinRAR打開jar包,找到里面的MANIFEST.MF文件,加一句:Main-Class: 包.主類名