Nacos 的基本使用
# 一、Nacos 的基本介绍
在使用Spring Cloud Alibaba 这套 Java 微服务解决方案时,Nacos 是免不了需要使用的
Nacos可以实现分布式服务注册与发现/分布式配置中心框架。
官网的介绍: https://nacos.io/zh-cn/docs/what-is-nacos.html
# 二、Nacos 的环境搭建
Nacos在linux/windows/Mac版本上都可以安装
具体安装教程地址:https://nacos.io/zh-cn/docs/quick-start.html
# 使用 Docker 安装 Nacos
# 1、下载镜像
docker pull nacos/nacos-server
# 2、运行 Nacos 容器
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server
tips: 进行完上述操作后,一个运行在 8849 端口的 nacos 就启动成功了
打开浏览器,输入 http://localhost:8849/nacos 即可开始访问,默认的账号和密码都为 nacos
根据 Nacos 官网的介绍,能够采用 HTTP 请求的方式来将自己的服务注册到 Nacos 当中,其具体的的介绍如下:
# 服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
# 服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
# 发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
# 获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
# 三、Nacos 整合 Spring Cloud
# 1、创建父工程
打开 IDEA,新建 Maven 工程,并将生成的 src 目录进行删除(因为使用改工程作为父工程),在 pom.xml 当中贴入如下坐标:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- springboot 整合web组件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
</dependencies>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2、创建服务提供者
在父工程当中新增一个 Module,新增如下类:
package top.dimples.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author Dimples_Yj
* @package top.dimples.controller
* @create 2021-07-27
*/
@RestController
public class MemberController {
@Value("${server.port}")
private String port;
/**
* 测试服务
*
* @param id
* @return
*/
@GetMapping("/user")
public String getUser(Long id) {
return "Dimples.top" + port;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
application.yml
配置文件如下:
spring:
application:
name: dimples-member
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8849
server:
port: 8080
2
3
4
5
6
7
8
9
编写 Spring Boot 的启动类后,启动当前的微服务,打开 Nacos 的管理端页面,可以发现我们编写的服务已经注册到 Nacos 当中
# 3、创建消费者
在父工程之下新增一个 Module,编写如下代码:
package top.dimples.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import top.dimples.loadbalancer.RatationLoadBalancer;
import java.util.List;
/**
* @author Dimples_Yj
* @package top.dimples.controller
* @create 2021-07-27
*/
@RestController
public class OrderController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@Autowired
private RatationLoadBalancer ratationLoadBalancer;
@RequestMapping("/orderToMember")
public String orderToMember() {
// 1、从注册中心尚获取集群列表地址
List<ServiceInstance> instances = discoveryClient.getInstances("dimples-member");
// 2、列表中获取一个 实现本地 RPC 调用
String resp = restTemplate.getForObject(instances.get(0).getUri() + "/user", String.class);
return "返回的结果:" + resp;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
application.yml
配置文件如下:
spring:
application:
name: dimples-order
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8849
server:
port: 8090
2
3
4
5
6
7
8
9
编写 Spring Boot 启动类,并启动,随后打开浏览器访问 http://localhost:8090/orderToMember 可以看到 dimples-order
服务调用 dimples-member
成功。
至此,Nacos 的基础使用入门完毕!