Nacos使用指南


Nacos使用指南

Nacos的定位是注册中心,支持目前主流的分布式架构K8S/RPC/RESTful。主要功能有

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

构建Nacos

Nacos docker

  • clone项目
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
  • 单机模式 Derby
docker-compose -f example/standalone-derby.yaml up

注意一定要启动docker desktop或者docker进程,然后就经过漫长的编译环节,编译完成后docker镜像会自动启动

/镜像image.jpg

  • 测试服务状态
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

/服务注册.jpg
Nacos提供的服务以RESTful风格进行提供,因此可以直接通过http请求进行操作

Nacos Cons

  • 服务地址
    http://localhost:8848/nacos
  • 账号/密码
    nacos/nacos
    这个账号/密码是存放在数据库中的,可以进行更改

/nacos_admin.jpg

spring boot示例

配置管理

  • ConfigExample
public static void main(String[] args) throws NacosException, InterruptedException {
    String serverAddr = "localhost";
    String dataId = "nacos.cfg.dataId1";
    String group = "test";
    Properties properties = new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
    //创建连接
    ConfigService configService = NacosFactory.createConfigService(properties);
    //获取配置
    String content = configService.getConfig(dataId, group, 5000);
    System.out.println("content1:" + content);
    //设置监听
    configService.addListener(dataId, group, new Listener() {
        @Override
        public void receiveConfigInfo(String configInfo) {
            System.out.println("recieve:" + configInfo);
        }

        @Override
        public Executor getExecutor() {
            return null;
        }
    });
    //推送配置
    boolean isPublishOk = configService.publishConfig(dataId, group, "content");
    System.out.println(isPublishOk);

    Thread.sleep(3000);
    content = configService.getConfig(dataId, group, 5000);
    System.out.println("content2:" + content);
    //移除配置
    boolean isRemoveOk = configService.removeConfig(dataId, group);
    System.out.println(isRemoveOk);
    Thread.sleep(3000);

    content = configService.getConfig(dataId, group, 5000);
    System.out.println("content3:" + content);
    Thread.sleep(300000);
}

注册中心


  TOC