【SpringCloud】Spring Cloud Alibaba 之 Nacos注册中心(二十七)

  Nacos基本概念,请参考:【SpringCloud】Spring Cloud Alibaba 及 Nacos介绍(二十六) 

  本章介绍,使用搭建以Nacos为注册中心的SpringCloud项目

搭建Nacos服务

  1、下载nacos,地址https://github.com/alibaba/nacos/releases

    本例使用的是nacos 1.2.1版本,下载得到nacos-server-1.2.1.tar.gz压缩包

  2、解压文件nacos-server-1.2.1.tar.gz,进入目录,查看目录内容

    

  3、使用命令启动nacos服务

    命令:sh ./bin/startup.sh -m standalone

  4、浏览器访问地址:http://localhost:8848/nacos

     

  5、输入默认用户名/密码(nacos/nacos)

    

搭建服务提供者

  1、新建一个工程(test-springcloud),导入Spring Cloud Alibaba依赖

1 <!-- spring cloud alibaba -->
2 <dependency>
3     <groupId>com.alibaba.cloud</groupId>
4     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
5     <version>${spring-cloud-alibaba.version}</version>
6     <type>pom</type>
7     <scope>import</scope>
8 </dependency>

  完整pom如下:

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0"
  3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5     <modelVersion>4.0.0</modelVersion>
  6 
  7     <groupId>com.test</groupId>
  8     <artifactId>test-springcloud</artifactId>
  9     <version>1.0-SNAPSHOT</version>
 10     <packaging>pom</packaging>
 11     <!-- 统一管理jar包版本 -->
 12     <properties>
 13         <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
 14         <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
 15         <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
 16         <mybatis-spring-boot.version>2.1.2</mybatis-spring-boot.version>
 17         <mysql.version>8.0.12</mysql.version>
 18         <druid.version>1.1.21</druid.version>
 19         <lombok.version>1.18.12</lombok.version>
 20         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 21         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 22         <java.version>1.8</java.version>
 23     </properties>
 24 
 25 
 26     <!-- 依赖管理:子模块继承后,提供作用:锁定版本 + 子module 不用写 version -->
 27     <dependencyManagement>
 28         <dependencies>
 29             <!-- spring boot -->
 30             <dependency>
 31                 <groupId>org.springframework.boot</groupId>
 32                 <artifactId>spring-boot-dependencies</artifactId>
 33                 <version>${spring-boot.version}</version>
 34                 <type>pom</type>
 35                 <scope>import</scope>
 36             </dependency>
 37             <!-- spring cloud -->
 38             <dependency>
 39                 <groupId>org.springframework.cloud</groupId>
 40                 <artifactId>spring-cloud-dependencies</artifactId>
 41                 <version>${spring-cloud.version}</version>
 42                 <type>pom</type>
 43                 <scope>import</scope>
 44             </dependency>
 45             <!-- spring cloud alibaba -->
 46             <dependency>
 47                 <groupId>com.alibaba.cloud</groupId>
 48                 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
 49                 <version>${spring-cloud-alibaba.version}</version>
 50                 <type>pom</type>
 51                 <scope>import</scope>
 52             </dependency>
 53 
 54             <!-- mybatis -->
 55             <dependency>
 56                 <groupId>org.mybatis.spring.boot</groupId>
 57                 <artifactId>mybatis-spring-boot-starter</artifactId>
 58                 <version>${mybatis-spring-boot.version}</version>
 59             </dependency>
 60 
 61             <!-- mysql -->
 62             <dependency>
 63                 <groupId>mysql</groupId>
 64                 <artifactId>mysql-connector-java</artifactId>
 65                 <version>${mysql.version}</version>
 66             </dependency>
 67 
 68             <!-- druid -->
 69             <dependency>
 70                 <groupId>com.alibaba</groupId>
 71                 <artifactId>druid-spring-boot-starter</artifactId>
 72                 <version>${druid.version}</version>
 73             </dependency>
 74 
 75             <!-- lombok -->
 76             <dependency>
 77                 <groupId>org.projectlombok</groupId>
 78                 <artifactId>lombok</artifactId>
 79                 <version>${lombok.version}</version>
 80             </dependency>
 81 
 82             <!-- test -->
 83             <dependency>
 84                 <groupId>org.springframework.boot</groupId>
 85                 <artifactId>spring-boot-starter-test</artifactId>
 86                 <version>${spring-boot.version}</version>
 87                 <scope>test</scope>
 88                 <exclusions>
 89                     <exclusion>
 90                         <groupId>org.junit.vintage</groupId>
 91                         <artifactId>junit-vintage-engine</artifactId>
 92                     </exclusion>
 93                 </exclusions>
 94             </dependency>
 95         </dependencies>
 96     </dependencyManagement>
 97 
 98     <!-- SpringBoot打包插件,可以将代码打包成一个可执行的jar包 -->
 99     <build>
100         <finalName>${project.artifactId}</finalName>
101         <plugins>
102             <plugin>
103                 <groupId>org.springframework.boot</groupId>
104                 <artifactId>spring-boot-maven-plugin</artifactId>
105                 <version>${spring-boot.version}</version>
106                 <configuration>
107                     <fork>true</fork>
108                     <addResources>true</addResources>
109                 </configuration>
110             </plugin>
111         </plugins>
112     </build>
113 </project>
pom.xml

  2、新建一个模块服务提供者(springcloud-provider-alibaba-payment9001),引入Nacos依赖

1 <!-- alibaba nacos -->
2 <dependency>
3     <groupId>com.alibaba.cloud</groupId>
4     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
5 </dependency>

  完整pom如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>test-springcloud</artifactId>
 7         <groupId>com.test</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>springcloud-provider-alibaba-payment9001</artifactId>
13 
14     <dependencies>
15 
16         <!-- alibaba nacos -->
17         <dependency>
18             <groupId>com.alibaba.cloud</groupId>
19             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
20         </dependency>
21 
22         <!-- spring boot -->
23         <dependency>
24             <groupId>org.springframework.boot</groupId>
25             <artifactId>spring-boot-starter-web</artifactId>
26         </dependency>
27         <dependency>
28             <groupId>org.springframework.boot</groupId>
29             <artifactId>spring-boot-starter-actuator</artifactId>
30         </dependency>
31         <dependency>
32             <groupId>org.springframework.boot</groupId>
33             <artifactId>spring-boot-devtools</artifactId>
34             <scope>runtime</scope>
35             <optional>true</optional>
36         </dependency>
37         <dependency>
38             <groupId>org.projectlombok</groupId>
39             <artifactId>lombok</artifactId>
40             <optional>true</optional>
41         </dependency>
42         <dependency>
43             <groupId>org.springframework.boot</groupId>
44             <artifactId>spring-boot-starter-test</artifactId>
45             <scope>test</scope>
46         </dependency>
47 
48     </dependencies>
49 
50 </project>
pom.xml

  3、新建一个配置文件appliction.yml

 1 # 端口
 2 server:
 3   port: 9001
 4 
 5 spring:
 6   application:
 7     name: nacos-payment-provider
 8   cloud:
 9     nacos:
10       discovery:
11         server-addr: localhost:8848

  4、新建启动类

1 @EnableDiscoveryClient
2 @SpringBootApplication
3 public class PaymentMain9001 {
4     public static void main(String[] args) {
5         SpringApplication.run(PaymentMain9001.class, args);
6     }
7 }

  5、新建一个Controller,如下:

 1 @RestController
 2 public class PaymentController {
 3 
 4     @Value("${server.port}")
 5     private String serverPort;
 6 
 7     @GetMapping(value = "/payment/nacos/{id}")
 8     public String getPayment(@PathVariable("id") Integer id) {
 9         return "nacos registry, serverPort: " + serverPort + "\t id: " + id;
10     }
11 }

  6、测试

    1)启动Nacos服务,启动服务提供者模块

    2)访问地址:http://localhost:9001/payment/nacos/11,正常获取内容

      

    3)访问Nacos的Web界面,查看服务列表菜单

      

      可以看到服务列表中,有nacos-payment-provider服务

搭建服务消费者

  1、在父工程(test-springcloud)中,新建服务消费者模块(springcloud-consumer-alibaba-order7001)

  2、引入nacos依赖,同上

    完整pom如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>test-springcloud</artifactId>
 7         <groupId>com.test</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>springcloud-consumer-alibaba-order7001</artifactId>
13 
14     <dependencies>
15 
16         <!-- alibaba nacos -->
17         <dependency>
18             <groupId>com.alibaba.cloud</groupId>
19             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
20         </dependency>
21 
22         <!-- spring boot -->
23         <dependency>
24             <groupId>org.springframework.boot</groupId>
25             <artifactId>spring-boot-starter-web</artifactId>
26         </dependency>
27         <dependency>
28             <groupId>org.springframework.boot</groupId>
29             <artifactId>spring-boot-starter-actuator</artifactId>
30         </dependency>
31         <dependency>
32             <groupId>org.springframework.boot</groupId>
33             <artifactId>spring-boot-devtools</artifactId>
34             <scope>runtime</scope>
35             <optional>true</optional>
36         </dependency>
37         <dependency>
38             <groupId>org.projectlombok</groupId>
39             <artifactId>lombok</artifactId>
40             <optional>true</optional>
41         </dependency>
42         <dependency>
43             <groupId>org.springframework.boot</groupId>
44             <artifactId>spring-boot-starter-test</artifactId>
45             <scope>test</scope>
46         </dependency>
47 
48     </dependencies>
49 </project>
View Code

  3、编写配置文件,如下:

 1 # 端口
 2 server:
 3   port: 7001
 4 
 5 spring:
 6   application:
 7     name: nacos-order-consumer
 8   cloud:
 9     nacos:
10       discovery:
11         server-addr: localhost:8848

  4、编写启动类,如下:

1 @EnableDiscoveryClient
2 @SpringBootApplication
3 public class OrderMain7001 {
4     public static void main(String[] args) {
5         SpringApplication.run(OrderMain7001.class, args);
6     }
7 }

  5、编辑配置类,代码如下,注入RestTemplate

 1 @Configuration
 2 public class AppConfig {
 3 
 4     @Bean
 5     @LoadBalanced
 6     public RestTemplate restTemplate(){
 7         return new RestTemplate();
 8     }
 9 
10 }

   6、编写一个Controller用于访问

@RestController
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Integer id) {
        return restTemplate.getForObject("http://nacos-payment-provider" + "/payment/nacos/" + id, String.class);
    }

}

  7、测试

    1)启动Nacos服务,启动服务提供者模块,启动服务消费者模块

    2)访问地址:http://localhost:9001/payment/nacos/11,正常获取内容

       访问地址:http://localhost:7001/consumer/payment/nacos/11,正常获取内容

      

    3)访问Nacos的Web界面,查看服务列表菜单,分别可以看到一个nacos-payment-provider服务,一个nacos-order-consumer服务

    4)在搭建一个(springcloud-provider-alibaba-payment9002)服务提供者模块,与9001模块内容相同,只有端口的区别

    5)启动9002模块,使用地址:http://localhost:7001/consumer/payment/nacos/11,访问获取内容

      获取的内容,是轮流从9001与9002这两个节点上获取

    6)访问Nacos的Web界面,查看服务列表菜单

      

猜你喜欢

转载自www.cnblogs.com/h--d/p/12913518.html