nacos学习笔记一:nacos做注册中心和配置中心

利用nacos做注册中心

#1、下载nacos server端

https://github.com/alibaba/nacos/releases

2、启动服务

sh startup.sh -m standalone

3、配置父类项目

3.1配置pom

父类项目pom文件
<?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>
    <groupId>com.example</groupId>
    <artifactId>demo-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo-nacos</name>
    <packaging>pom</packaging>
    <description>demo-nacos</description>
    <!-- 指定父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- 选择SpringCloud和Alibaba版本的时候,一定要参考官网的建议,否则会有问题 -->
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>
    <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.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

4、注册服务提供者【可拓展多个,过程类似】

4.1 pom.xml

<parent>
        <groupId>com.example</groupId>
        <artifactId>demo-nacos</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

4.2 配置文件

# 服务名
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=7001

4.3启动类

添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider7001Application {
    public static void main(String[] args) {
        SpringApplication.run(NacosProvider7001Application.class, args);
    }
}

4.4 对外接口

@RestController
public class ProviderController {
    @GetMapping("/login")
    public String login(String name) {
        return "欢迎您 " + name + " 这里是7001";
    }
}

5注册服务消费者【使用ribbon做负载均】

5.1 pom.xml

<parent>
        <groupId>com.example</groupId>
        <artifactId>demo-nacos</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

5.2 配置文件

# 服务名
spring.application.name=nacos-client-ribbon-8001
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=8001

5.3启动类

添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class NacosClientRibbon8001Application {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(NacosClientRibbon8001Application.class, args);
    }

}

5.4 调用服务

@RestController
public class GetProviderController {
    @Resource
    RestTemplate restTemplate;
    private static final String URL = "http://nacos-provider/";

    @GetMapping("/login")
    public String login(String name) {
        return restTemplate.getForObject(URL + "login?name=" + name, String.class);
    }
}

6 利用nacos做注册中心

6.1 添加依赖

<properties>
  <java.version>1.8</java.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!--引入config依赖-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

6.2配置文件

注意配置文件最好先设置多环境,因为nacos的文件名命名规范为 applicationName-环境.文件后缀 比如【aaa-dev.properties】

如果不指定环境可能会有问题

  • application.properties
spring.profiles.active=dev
  • application-dev.properties

    spring.application.name=nacos-config
    server.port=6001
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.file-extension=properties
    
    

6.3 获取配置

@RestController
@RefreshScope//动态更新
public class DemoController {
    @Value("${name}")
    String name;
    @GetMapping("getName")
    public String getName() {
        return name;
    }
}
  • 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfig6001Application {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfig6001Application.class, args);
    }

}

6.4 macos配置

配置管理–》配置列表—》右上角加号-》

Data ID: nacos-config-dev.properties

文件类型选properties

配置内容:

name=test_nacos_config

点击发布启动并访问项目

http://localhost:6001/getName

6.5 nacos的namespace、dataid、group

dataid 和服务实例对应 格式固定【applicationName-环境.文件后缀】

namespace、group :可添加多个通过配置文件划分

spring.cloud.nacos.config.namespace=80986fb8-24c0-4d3d-b1ff-84da7fba4394
spring.cloud.nacos.config.group=dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值