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

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

2.6 測試多實例負載均衡
修改quickstart-provider工程的application.yaml,實現(xiàn)port動態(tài)傳入:
server:
port: ${port:56010} #啟動端口
設置啟動參數(shù):

啟動quickstart-provider兩個實例。

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