Dimples's blog Dimples's blog
首页
  • 前端随笔

    • React
  • 系列文章

    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript》笔记
  • 后端文章

    • Java
    • Python
    • 数据库
  • 学习笔记

    • 《Rust》笔记
    • 《SpringBoot》笔记
    • 《Django》笔记
    • 《Docker》笔记
    • 《Python爬虫》笔记
技术分享
友情链接
索引
关于
GitHub (opens new window)

DimplesY

不会写代码
首页
  • 前端随笔

    • React
  • 系列文章

    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript》笔记
  • 后端文章

    • Java
    • Python
    • 数据库
  • 学习笔记

    • 《Rust》笔记
    • 《SpringBoot》笔记
    • 《Django》笔记
    • 《Docker》笔记
    • 《Python爬虫》笔记
技术分享
友情链接
索引
关于
GitHub (opens new window)
  • Java

  • Python

  • 数据库

  • SpringCloud

    • SpringCloud项目父工程搭建
    • Nacos 的基本使用
      • 一、Nacos 的基本介绍
      • 二、Nacos 的环境搭建
        • 使用 Docker 安装 Nacos
      • 三、Nacos 整合 Spring Cloud
        • 1、创建父工程
        • 2、创建服务提供者
        • 3、创建消费者
  • 学习笔记

  • 后端
  • SpringCloud
DimplesY
2021-07-27

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
1

# 2、运行 Nacos 容器

docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server
1

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'
1

# 服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
1

# 发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
1

# 获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
1

# 三、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>
1
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;
    }
}
1
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
1
2
3
4
5
6
7
8
9

编写 Spring Boot 的启动类后,启动当前的微服务,打开 Nacos 的管理端页面,可以发现我们编写的服务已经注册到 Nacos 当中

image-20210727180702622

# 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;
    }

}
1
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
1
2
3
4
5
6
7
8
9

编写 Spring Boot 启动类,并启动,随后打开浏览器访问 http://localhost:8090/orderToMember 可以看到 dimples-order 服务调用 dimples-member 成功。

image-20210727181346652

至此,Nacos 的基础使用入门完毕!

帮助我修改此页面 (opens new window)
#微服务
上次更新: 2022/11/20, 18:28:09
SpringCloud项目父工程搭建
《SpringBoot》笔记

← SpringCloud项目父工程搭建 《SpringBoot》笔记→

最近更新
01
使用 strapi 快速构建 API 和 CMS 管理系统
03-03
02
Rust 开发环境
11-26
03
使用 paka.dev 为 npm 包生成文档
11-24
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Dimples YJ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式