• SpringClouldAlibaba 之 初识 Nacos


    什么是Nacos

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

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

    那么下面我们集成使用一下

    第一步下载 nacos

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

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

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

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

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

    1. //这里的版本和自己的一致就行 这是作为注册中心的
    2. <cloud-alibaba.version>2.1.0.RELEASEcloud-alibaba.version>
    3. <dependency>
    4. <groupId>com.alibaba.cloudgroupId>
    5. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    6. <version>${cloud-alibaba.version}version>
    7. dependency>
    8. 复制代码

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

    1. spring:
    2. cloud:
    3. nacos:
    4. discovery:
    5. server-addr: 192.168.1.12:8848 //nacos的地址
    6. application:
    7. name: bugvip-boss //服务的名称 注意不设置 name不会注册到nacos
    8. 复制代码

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

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

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

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

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

    nacos 第三步作为配置中心

    第一步还是引入依赖

    1. <dependency>
    2. <groupId>com.alibaba.cloudgroupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    4. dependency>
    5. 复制代码

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

    1. spring.application.name=bugvip-boss //服务的地址
    2. spring.cloud.nacos.config.server-addr=192.168.1.12:8848 //nacos地址
    3. 复制代码

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

    1. xk:
    2. name: xkk
    3. age: 10
    4. 复制代码

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

    在配置管理中创建配置文件

    下面我们使用一下代码测试

    1. /**
    2. * @Author: Mr_xk
    3. * @Description: 平台登陆处理类
    4. * @Date: 2021/8/1
    5. **/
    6. @RestController
    7. @RequestMapping("boss/acl")
    8. @RefreshScope
    9. public class LoginController {
    10. @Value("${xk.name}")
    11. private String name;
    12. @Value("${xk.age}")
    13. private String age;
    14. @RequestMapping("test")
    15. public R test(){
    16. Map map = new HashMap<>();
    17. map.put("name",name);
    18. map.put("age",age);
    19. return R.ok().data(map);
    20. }
    21. 复制代码

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

    初始数据:

    动态更新后:

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

    下面我们演示下 服务分组

    先创建服务命名空间

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

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

    1. spring.profiles.active=dev 设置启动加载配置文件
    2. spring.application.name= bugvip-boss
    3. spring.cloud.nacos.config.server-addr= 192.168.1.12:8848
    4. spring.cloud.nacos.config.namespace= 120694d7-9815-4d3d-8150-d9c8bac82c11
    5. spring.cloud.nacos.config.group= dev
    6. spring.cloud.nacos.config.ext-config[0].data-id= spring.yml
    7. spring.cloud.nacos.config.ext-config[0].group= dev
    8. spring.cloud.nacos.config.ext-config[0].refresh= true
    9. spring.cloud.nacos.config.ext-config[1].data-id= other.yml
    10. spring.cloud.nacos.config.ext-config[1].group= dev
    11. spring.cloud.nacos.config.ext-config[1].refresh= true
    12. 复制代码

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

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

  • 相关阅读:
    7-VMware Horizon 2203 虚拟桌面-事件数据库配置(七)
    C++设计模式|创建型 4.建造者模式
    收集灵感都有哪些网站推荐?
    21.Node-RESTful API的用法
    猿创征文|瑞吉外卖——管理端_订单明细
    sovits远程访问设置
    【Web开发】使用Apache搭建Http下载服务器
    【Azure 应用服务】Azure Function 启用 Managed Identity后, Powershell Funciton出现 ERROR: ManagedIdentityCredential authentication failed
    LeetCode·每日一题·779.第K个语法符合·递归
    useEffect
  • 原文地址:https://blog.csdn.net/YYniannian/article/details/126263394