Nacos - 服務發(fā)現(xiàn)(2)

2.2 搭建Nacos服務端

略...

2.3 創(chuàng)建父工程

為了規(guī)范依賴的版本,這里創(chuàng)建父工程,指定依賴的版本。
父工程pom.xml如下:

<?xml version="1.0" encoding="UTF‐8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven‐4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima.nacos</groupId>
<artifactId>nacos‐discovery</artifactId>
<version>1.0‐SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐alibaba‐dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐maven‐plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

2.4 服務生產(chǎn)者

以下步驟演示了如何將一個服務生產(chǎn)者注冊到 Nacos。
1、pom.xml的配置。
包括Spring Cloud Feign組件、Spring Cloud Alibaba Nacos Discovery組件以及Spring boot web相關組件依賴。

<parent>
<artifactId>nacos‐discovery</artifactId>
<groupId>com.itheima.nacos</groupId>
<version>1.0‐SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>quickstart‐provider</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐openfeign</artifactId>
</dependency>
</dependencies>

2、application.yml配置。一些關于 Nacos 基本的配置也必須在application.yml(也可以是application.properties)配置,如下所示: application.yml

server:
  port: 56010 #啟動端口
spring:
  application:
    name: quickstart‐provider
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848
logging:
  level:
    root: info
    org.springframework: info

Note: spring.cloud.nacos.discovery.server-addr 指定了Nacos Server的網(wǎng)絡地址和端口號。

3、Provider(生產(chǎn)者)服務實現(xiàn)

@RestController
public class ProviderController {
private static final Logger LOG = LoggerFactory.getLogger(ProviderController.class);
@GetMapping("/service")
public String service(){
LOG.info("provider invoke");
return "provider invoke";
}
}

4、啟動Provider(生產(chǎn)者)

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosProviderApp {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApp.class, args);
}
}

Note: @EnableDiscoveryClient 在spring cloud項目中表明此項目是一個注冊發(fā)現(xiàn)客戶端,這里注冊服務發(fā)現(xiàn)使用的是Nacos
Note: @EnableFeignClients 開啟FeignClient

2.5 服務消費者

以下步驟演示了如何結合Nacos對spring cloud rest接口進行消費。
1、pom.xml的配置。

<parent>
<artifactId>nacos‐discovery</artifactId>
<groupId>com.itheima.nacos</groupId>
<version>1.0‐SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>quickstart‐consumer</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring‐cloud‐starter‐openfeign</artifactId>
</dependency>
</dependencies>

2、application.yml配置

server:
  port: 56020 #啟動端口 命令行注入

spring:
  application:
    name: quickstart‐consumer
  cloud:
    nacos:
      discovery:
        server‐addr: 127.0.0.1:8848

3、Provider(生產(chǎn)者)遠程代理定義

@FeignClient(name = "quickstart‐provider")
public interface ProviderClient {
@GetMapping("/service")
String service();
}

4、Consumer(消費者)服務實現(xiàn)

@RestController
public class ConsumerController {
private static final Logger LOG = LoggerFactory.getLogger(ConsumerController.class);
@Autowired
private ProviderClient providerClient;
@GetMapping("/service")
public String service(){
LOG.info("consumer invoke");
String providerResult = providerClient.service();
return "consumer invoke" + "|" + providerResult;
}
}

5、啟動Consumer(消費者)

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApp {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApp.class, args);
}
}

訪問地址:http://127.0.0.1:56020/service

QQ截圖20200102162005.png

瀏覽器訪問 http://127.0.0.1:8848/nacos ,打開nacos控制臺,并點擊菜單服務管理->服務列表,可展示出剛剛注冊的兩個服務:
QQ截圖20200102162051.png

2.6 測試多實例負載均衡

修改quickstart-provider工程的application.yaml,實現(xiàn)port動態(tài)傳入:

server:
  port: ${port:56010} #啟動端口

設置啟動參數(shù):

QQ截圖20200102162239.png

啟動quickstart-provider兩個實例。
QQ截圖20200102162349.png

請求http://127.0.0.1:56020/service測試負載均衡。
跟蹤quickstart-provider兩個實例的控制臺的日志輸出,默認負載均衡策略是輪詢。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容