Spring Cloud版本是
Greenwich.RELEASE
Springboot版本是2.1.9.RELEASE
Spring Cloud Alibaba版本是2.1.0.RELEASE
01 环境准备
需要在启动的机子上安装了jdk8
02 下载nacos的压缩包
下载地址:https://github.com/alibaba/nacos/releases
03 运行nacos服务
当我们把压缩包下载下来后,我们需要先解压该压缩包。
解压过后,我们就进入到bin目录,启动nacos服务
- 在Linux或Mac系统启动
# 单机启动
sh startup.sh -m standalone
-
在Windows系统启动
命令行启动
cmd startup.cmd
或者双击startup.cmd文件
05 查看nacos启动成功
启动nacos
在浏览器输入地址:localhost:8848/nacos
看到上面的页面,说明我们已经成功启动nacos服务。
04 关闭nacos服务
- Linux或Mac系统
sh shutdown.sh
- Windows系统
cmd shutdown.cmd
或者双击shutdown.cmd运行文件。
05 启动provider应用
5.1 在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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.jamie</groupId>
<artifactId>nacos-provider</artifactId>
<version>1.0.0</version>
<name>nacos-provider</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.2 配置application.properties文件
# 应用名,会作为访问的URL的一部分
spring.application.name=nacos-provider
# 应用的端口
server.port=8000
# 配置nacos服务的地址和端口号,这样应用就可以注册在nacos服务上
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
5.3 在启动类添加注解@EnableDiscoveryClient
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
5.4 最后我们再写一个controller用于被消费者调用
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 594781919@qq.com
* @date 2019-10-08
**/
@RestController
public class HelloController {
@Value("${server.port}")
private String port;
@GetMapping("/port")
public String port() {
return port;
}
}
现在,我们可以启动provider应用了。
我们也可以启动多个provider来测试负载均衡。
比如,我在启动时,启动了两个provider,一个端口为8000,一个端口为8001。
06 启动consumer应用
6.1 在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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.jamie</groupId>
<artifactId>nacos-consumer</artifactId>
<version>1.0.0</version>
<name>nacos-consumer</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
6.2 配置application.properties文件
其实跟provider应用的配置差不多
spring.application.name=nacos-consumer
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
6.3 在启动类添加注解和Bean
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
6.4 编写一个controller,调用provider应用
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @author ZhongKai
* @date 2019-10-08
**/
@RestController
public class ConsumerController {
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer")
public String consumer() {
return "consumer --> " + restTemplate.getForObject("http://nacos-provider/port", String.class);
}
}
07 最后,在浏览器进行测试
可能有同学会问:
- nacos服务页面的登录账号是什么?
- nacos持久化的数据怎么存储?
- 怎么在nacos页面查看服务注册情况?
下篇文章将解决这些问题
源码地址:码云
下篇文章:Spring Cloud Alibaba实战(2) - nacos服务的一些细节