likes
comments
collection
share

SpringClouldAlibaba 之 初识 Nacos

作者站长头像
站长
· 阅读数 18

SpringClouldAlibaba 之 初识 Nacos

什么是Nacos

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现丶配置管理和服务管理平台,是使用java编写 需要依赖java环境.。

官方文档地址:nacos.io/zh-cn/docs/…

SpringClouldAlibaba 之 初识 Nacos 那么下面我们集成使用一下

第一步下载 nacos

下载nacos-server :地址 github.com/alibaba/nac…

直接下载zip那个包 当然liunx的话直接docker在线安装也没问题

SpringClouldAlibaba 之 初识 Nacos 将下载下来的文件解压进入到 bin目录双击于 startup.cmd启动注册中心

SpringClouldAlibaba 之 初识 Nacos 启动成功后 访问地址 nacos可视化界面 账号密码默认都是nacos http://localhost:8848/nacos/#/login

SpringClouldAlibaba 之 初识 Nacos

第二步 我们在微服务中引入下依赖

//这里的版本和自己的一致就行 这是作为注册中心的
<cloud-alibaba.version>2.1.0.RELEASE</cloud-alibaba.version>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${cloud-alibaba.version}</version>
</dependency>

在配置文件中设置nacos的地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.12:8848 //nacos的地址
 application:
   name: bugvip-boss //服务的名称 注意不设置 name不会注册到nacos

在启动类上添加 注解开启服务的发现和注册 @EnableDiscoveryClient

最后我们启动服务进行测试

SpringClouldAlibaba 之 初识 Nacos 可以在服务列表看到 bugvip-boss 服务已经成功注册到nacos 下面将其他服务也注册到nacos 中去进行调用测试(这里我们远程调用使用的也是阿里巴巴维护 openFeign)

SpringClouldAlibaba 之 初识 Nacos 可以看到 网关 和 DB 服务也已经注册进来了 直接操作登录可以看到成功调用

SpringClouldAlibaba 之 初识 Nacos 这里的远程调用 简单说一下 这里 @FeignClient(value = "bugvip-base")value就是服务的名称也就是注册到nacos中服务名称(我这个项目中所有的 远程调用抽离到了公共模块)

SpringClouldAlibaba 之 初识 Nacos

nacos 第三步作为配置中心

第一步还是引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步 在项目 resources 下创建 bootstrap.properties 文件 这个文件会优先于yml文件执行 在文件中添加 服务名称和nacos的地址

spring.application.name=bugvip-boss //服务的地址
spring.cloud.nacos.config.server-addr=192.168.1.12:8848 //nacos地址

使用测试属性在配置文件中

xk:
  name: xkk
  age: 10

下面我们在nacos 中创建一个此服务的配置文件 首先先创建一个dev的命名空间

SpringClouldAlibaba 之 初识 Nacos 在配置管理中创建配置文件

SpringClouldAlibaba 之 初识 Nacos

SpringClouldAlibaba 之 初识 Nacos 下面我们使用一下代码测试

/**
 * @Author:  Mr_xk
 * @Description: 平台登陆处理类
 * @Date:  2021/8/1
 **/
@RestController
@RequestMapping("boss/acl")
@RefreshScope
public class LoginController {
    @Value("${xk.name}")
    private String name;
    @Value("${xk.age}")
    private String age;
    @RequestMapping("test")
    public R test(){
       Map<String,Object> map = new HashMap<>();
        map.put("name",name);
        map.put("age",age);
        return R.ok().data(map);
    }

注意: @RefreshScope 是动态刷新配置文件里的值 即在nacos中更新配置文件后 代码可以获取到最新的

初始数据:

SpringClouldAlibaba 之 初识 Nacos

动态更新后:

SpringClouldAlibaba 之 初识 Nacos

SpringClouldAlibaba 之 初识 Nacos

那么我们可以使用命名空间 和 配置分组 来进行 配置隔离(环境隔离以及服务隔离)

下面我们演示下 服务分组

先创建服务命名空间

SpringClouldAlibaba 之 初识 Nacos 然后在每个服务的命名空间下创建自己的 配置文件 并以group 为 环境隔离

SpringClouldAlibaba 之 初识 Nacos 然后在项目中配置多个配置文件的加载以及 自动刷新

spring.profiles.active=dev 设置启动加载配置文件
spring.application.name= bugvip-boss 
spring.cloud.nacos.config.server-addr= 192.168.1.12:8848
spring.cloud.nacos.config.namespace= 120694d7-9815-4d3d-8150-d9c8bac82c11
spring.cloud.nacos.config.group= dev

spring.cloud.nacos.config.ext-config[0].data-id= spring.yml 
spring.cloud.nacos.config.ext-config[0].group= dev
spring.cloud.nacos.config.ext-config[0].refresh= true

spring.cloud.nacos.config.ext-config[1].data-id= other.yml
spring.cloud.nacos.config.ext-config[1].group= dev
spring.cloud.nacos.config.ext-config[1].refresh= true

SpringClouldAlibaba 之 初识 Nacos ok 当然隔离的方式有很多这里只是简单的示范一下。

注意:nacos中有的配置文件是优先加载的nacos没有再加载项目中的配置文件 实践是检验真理的唯一标准,明天见咯。

转载自:https://juejin.cn/post/7127691869936418829
评论
请登录