Nacos入门
- 1 安装和运行Nacos
-
- 2 Nacos入门:服务提供者
-
- 2.1 编写一个服务,并成功注册到nacos中
-
- 2.1.1 打开Idea创建一个maven父项目,在pom文件中导入以下坐标
- 2.1.2 创建服务提供者模块,在pom文件中导入以下坐标
- 2.1.3 然后编写application.yml文件
- 2.1.4 然后创建启动类和contller方法
- 2.1.5 运行
- 3 Nacos入门:服务消费者
-
- 3.1 编写一个服务,并成功注册到nacos中
-
- 3.1.1 创建服务消费者模块,并导入pom坐标
- 3.1.2 编写yml文件
- 3.1.3 创建启动类,RestTemplate方法和controller方法
- 3.1.4 运行
- 4 后续还有进阶版本
1 安装和运行Nacos
1.1 安装Nacos
- nacos是一个独立的软件,需要下载与安装,自行去官网安装,官网地址:https://nacos.io/zh-cn/docs/quick-start.html。附带安装方法。
1.2 运行Nacos
- 打开nacos所安装的文件夹,进入bin目录,双击startup.cmd来运行cmd
- 如果上述启动方法报错,那么在bin目录直接打开cmd输入指令startup.cmd -m standalone
- 看到此日式信息即为启动成功,注意:cmd命令框不可关闭,也可以把nacos注册成服务
- 启动成功后去登录Nacos,登录地址:http://192.168.98.227:8848/nacos/index.html
- 账号和密码均为:nacos
2 Nacos入门:服务提供者
2.1 编写一个服务,并成功注册到nacos中
2.1.1 打开Idea创建一个maven父项目,在pom文件中导入以下坐标
<!-- 1 确定spring boot的版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!--2 确定版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud-release.version>Hoxton.SR3</spring-cloud-release.version>
<nacos.version>1.1.0</nacos.version>
<alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
</properties>
<!-- 3 锁定版本-->
<dependencyManagement>
<dependencies>
<!-- sprig cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-release.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--nacos -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos.version}</version>
</dependency>
<!--nacos cloud 发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!--nacos cloud 配置 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2.1.2 创建服务提供者模块,在pom文件中导入以下坐标
<dependencies>
<!-- web 启动类 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 客户端 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
2.1.3 然后编写application.yml文件
server:
port: 8070
spring:
application:
name: service-provider #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
2.1.4 然后创建启动类和contller方法
- 服务提供者启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: Kj
* @Date: 2021/4/19 17:14
*/
@SpringBootApplication
@EnableDiscoveryClient
public class TestNacosProViderApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosProViderApplication.class,args);
}
}
- 服务提供者controller方法
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@RestController
public class EchoController {
@Resource
private HttpServletRequest request;
@GetMapping("/echo/{str}")
public String echo(@PathVariable("str") String str){
int serverPort = request.getServerPort();
return "hello : " + str + " , " + serverPort;
}
}
2.1.5 运行
- 运行启动类,运行成功后登录nacos查看注册的服务
- 然后在浏览器输入地址:http://localhost:8070/echo/123查看效果
3 Nacos入门:服务消费者
3.1 编写一个服务,并成功注册到nacos中
3.1.1 创建服务消费者模块,并导入pom坐标
<dependencies>
<!-- web 启动类 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 客户端 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- openfeign 远程调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
3.1.2 编写yml文件
#端口号
server:
port: 8071
spring:
application:
name: service-consumer #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服务地址
3.1.3 创建启动类,RestTemplate方法和controller方法
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@SpringBootApplication
@EnableDiscoveryClient //服务发现
public class TestNacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosConsumerApplication.class, args);
}
}
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced // 支持负载均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@RestController
@RequestMapping("/rest")
public class TestRestController {
@Resource
private RestTemplate restTemplate;
@GetMapping("/echo/{str}")
public String echo(@PathVariable("str") String str) {
// 方案1:访问完整路径
//return restTemplate.getForObject("http://localhost:8070/echo/" + str, String.class);
// 方案2:通过服务名访问
return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
}
}
3.1.4 运行
- 运行启动类,登录nacos查看服务
- 然后在浏览器输入地址:http://localhost:8071/rest/echo/123查看效果
4 后续还有进阶版本