1. 程式人生 > >學習springcloud的Eureka(註冊和呼叫服務)。記錄其中遇見的問題(參考純潔的微笑)

學習springcloud的Eureka(註冊和呼叫服務)。記錄其中遇見的問題(參考純潔的微笑)

開發十年,就只剩下這套架構體系了! >>>   

下午有時間,繼續接著,上次的看。

上次已經完成了Eureka的搭建,和叢集,今天開始研究服務的註冊和釋出

建立一個工程,為註冊服務,向Eureka服務中心,進行註冊

選擇好以後,建立成功註冊服務工程

開始進行配置

application.properties配置檔案 裡面,增加服務配置

spring.application.name=spring-cloud-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

spring.application.name 服務名稱,使用者服務之間,進行呼叫

port埠    eureka.client.serviceUrl.defaultZone設定與Eureka Server互動的地址,查詢服務和註冊服務都需要依賴這個地址。多個地址可使用 , 分隔。

Springboot的啟動檔案增加配置註解,讓Eureka發現此服務,進行註冊

@EnableDiscoveryClient//啟用服務註冊與發現

啟動專案,訪問Eureka8000埠,發現,新增了一個服務,服務名,與配置檔案相同

建立controller

package com.example.democloudserver.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    /**
     * 測試服務註冊
     * @param name
     * @return
     */
    @GetMapping("/hello")
    public String index(@RequestParam String name){
        return "hello-2:"+ name;
    }
}

好了,這一步,已經說明,服務註冊成功,下面,建立呼叫服務,用過Eureka呼叫,剛才註冊的服務

建立呼叫服務和之前基本相同,idea建立工程,就可以,唯一不同的是,呼叫服務,需要Feign,所有,在這裡,還要進行勾選這個

建立成功專案,開始配置

spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

啟動項配置

@EnableDiscoveryClient//啟用服務註冊與發現
@EnableFeignClients//啟用feign進行遠端呼叫

開啟feign的作用,是進行遠端呼叫,開啟EnableDiscoveryClient,是為了讓Eureka發現

建立一個介面,通過註解,遠端呼叫剛才的註冊服務

package com.example.servicefeign.interfaceServer;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name= "spring-cloud-producer")
//name:遠端服務名,及spring.application.name配置的名稱
public interface HelloRemote {

    @RequestMapping(value = "/hello")
    public String hello(@RequestParam(value = "name") String name);

}

定義好了以後,可以注入controller,進行呼叫

package com.example.servicefeign.controller;

import com.example.servicefeign.interfaceServer.HelloRemote;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @Autowired
    HelloRemote hello;//註冊介面層

    @RequestMapping("/hello/{name}")
    public String index(@PathVariable("name") String name) {
        return hello.hello(name);
    }
}

啟動服務呼叫層,訪問controller進行訪問,調動註冊的服務,成功

這裡,我也順便測試了,服務中心提供的服務均衡負載

註冊服務,設定不同的埠,相同的服務名,進行啟動,修改輸出controller輸出為

"hello-2:"+ name
"hello-1:"+ name

頁面多次請求,發現兩種