java B2B2C Springboot多租戶電子商城系統-spring-cloud-eureka-consumer

it小飛俠的微博發表於2019-04-10

介紹

電子商務平臺原始碼請加企鵝求求:一零三八七七四六二六。spring-cloud-eureka,更加具體的內容,這裡將會介紹遠端服務呼叫和及其負載均衡。

我們將我們的服務註冊在我們的服務中心裡,那麼如何去呼叫這些服務呢?我們可以用使用遠端服務呼叫來解決,順帶還有方便的負載均衡功能。

如何使用

建立服務中心

註冊幾個被呼叫服務

註冊一個consumer

測試consumer與負載均衡

  1. 建立服務中心

上一篇文章,我們已經學會了使用單機或者叢集的方式來建立服務中心,這裡我們使用簡單的單機方式來建立!

在 spring-cloud-eureka-server 裡啟動採用這個profile檔案:

server:
  port: 8761

spring:
  application:
    name: eureka-server

eureka:
  instance:
    lease-expiration-duration-in-seconds: 6
    lease-renewal-interval-in-seconds: 2
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
複製程式碼

這個是單機版的。並將自己註冊到了服務裡。

  1. 註冊幾個被呼叫服務

我們啟動了這三個profile檔案。

配置檔案中,server.port 分別是 8083,8084,8085,其他引數完全一致!同時,我們在controller中設定了這樣一個rest服務。

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String hi() {
        return port+" 埠為您服務!";
    }
複製程式碼

這樣方便知道我們具體呼叫了哪個服務。

  1. 註冊一個consumer

需要額外的依賴,使用了feign來進行遠端呼叫。

pom.xml :

        <!--遠端呼叫-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
複製程式碼

建立一個介面:

@Component
@FeignClient(name = "eureka-client-1")
public interface HelloRemoteInterface {

    @RequestMapping(value = "/hi")
    public String hi();
}
複製程式碼

這裡的name就是你的那個服務的application.name。根據名字來呼叫,才能實現負載均衡嘛。

使用介面,建立一個測試的controller:

@RestController
public class ConsumerController {

    @Autowired
    HelloRemoteInterface helloRemoteInterface;

    @RequestMapping("/hello")
    public String hello() {
        return helloRemoteInterface.hi();
    }
}
複製程式碼

同時,將我們的這個服務也註冊到服務中心。

配置檔案:

server:
  port: 8086

spring:
  application:
    name: eureka-consumer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
複製程式碼

啟動方法:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class SpringCloudEurekaConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaConsumerApplication.class, args);
    }
}
複製程式碼

到這裡,我們已經啟動了好多個服務,如上圖所示,在IDEA中,採用不同的profile來啟動的方式,有一個單機的server,三個普通的服務(埠號不一樣),還有我們的消費服務,下一節,你可以從截圖中看的更明白。

  1. 測試consumer與負載均衡

到上一步為止,我們已經可以看到在Eureka的dashboard中已經有了好多個服務,如下圖,主要包括:

一個服務註冊server

一個消費者,用來進行遠端呼叫

三個普通的client(其埠不一樣,來模擬分散式)

這時候,我們呼叫我們的consumer服務,瀏覽器裡輸入 http://localhost:8086/hello

得到的結果是不一樣的,一共有三個:

8083 埠為您服務!

8084 埠為您服務!

8085 埠為您服務!

正好就是我們想要的結果。

不斷的進行測試下去會發現3種結果交替出現,說明服務中心自動提供了服務均衡負載的功能。如果我們將服務提供者的數量在提高為N個,測試結果一樣,請求會自動輪詢到每個服務端來處理。java B2B2C Springboot多租戶電子商城系統 

相關文章