1.nacos学习-快速开始

1.什么是Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以**“服务”**为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos 支持几乎所有主流类型的**“服务”**的发现、配置和管理:

2.下载

1. 下载地址:Nacos Server 下载 | Nacos 官网
2. 我使用的是windows版本:下载稳定版

3.使用

1. 解压

linux:

unzip nacos-server-$version.zip

# 或者 tar -xvf nacos-server-$version.tar.gz

cd nacos/bin

windows:直接解压

2.启动服务:

启动命令(standalone代表着单机模式运行,非集群模式):

进入:bin目录

linux:

sh startup.sh -m standalone

验证Nacos服务是否启动成功:进入${nacos.home}/logs/ 目录下, 使用tail -f start.out 查看日志,如果看到如下日志,说明服务启动成功。

Nacos started successfully in stand alone mode. use embedded storage

windows:

startup.cmd -m standalone

启动成功

3.Nacos控制台页面

打开任意浏览器,输入地址:http://127.0.0.1:8848/nacos,即可进入Nacos控制台页面。

4.注册服务

linux:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

5.服务发现

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

6.发布配置

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

7.获取配置

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

8.关闭服务

linux:

sh shutdown.sh

windwos:

shutdown.cmd

或者双击shutdown.cmd运行文件。

4.Nacos Java SDK 使用

1. maven引用

<dependency>

<groupId>com.alibaba.nacos</groupId>

<artifactId>nacos-client</artifactId>

<version>${version}</version>

</dependency>

注意:由于Nacos Java SDK在2.0版本后引入了gRPC,为了避免用户业务引入的gRPC版本不同导致冲突,使用了shaded技术将部分依赖直接封装进nacos-client中,导致nacos-client较大。 如果用户未自行引入gRPC或确认版本无冲突,希望使用纯净版的nacos-client以减小依赖,可以使用classifier来指定使用纯净版。

<properties>

<!-- 2.1.2版本以上支持纯净版客户端 -->

<nacos.version>2.4.2</nacos.version>

</properties>

<dependencies>

<dependency>

<groupId>com.alibaba.nacos</groupId>

<artifactId>nacos-client</artifactId>

<version>${nacos.version}</version>

<!-- 指定纯净版SDK -->

<classifier>pure</classifier>

</dependency>

<!-- 使用纯净版时必须要引入同版本nacos-api和nacos-common,否则可能出现运行时找不到类的问题 -->

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>nacos-common</artifactId>

<version>${nacos.version}</version>

</dependency>

<dependency>

<groupId>${project.groupId}</groupId>

<artifactId>nacos-api</artifactId>

<version>${nacos.version}</version>

</dependency>

</dependencies>

2.初始化

Nacos 初始化SDK仅需要使用 NacosFactory 类进行不同模块的创建即可:

public static void main(String[] args) {
    try {

        String serverAddr = "localhost:8000";
        //初始化配置中心的Nacos Java SDK
        ConfigService configService = NacosFactory.createConfigService(serverAddr);
        NamingService namingService = NacosFactory.createNamingService(serverAddr);

    } catch (NacosException e) {
        throw new RuntimeException(e);
    }
}

通过配置文件加载

Properties properties = new Properties();

# 指定Nacos-Server的地址

properties.setProperty(PropertyKeyConst.SERVER_ADDR, "localhost:8848");

# 指定Nacos-SDK的命名空间

properties.setProperty(PropertyKeyConst.NAMESPACE, "${namespaceId}");

# 初始化配置中心的Nacos Java SDK

ConfigService configService = NacosFactory.createConfigService(properties);

# 初始化配置中心的Nacos Java SDK

NamingService namingService = NacosFactory.createNamingService(properties);

注意:一个Nacos Java SDK实例只能用于获取同一个命名空间下的配置和服务,如果要获取不同的命名空间下的配置或服务,需要创建不同的Nacos Java SDK实例。

3.发布配置

用于通过程序自动发布 Nacos 配置,以便通过自动化手段降低运维成本。

注意:创建和修改配置时使用的同一个发布接口,当配置不存在时会创建配置,当配置已存在时会更新配置。

public boolean publishConfig(String dataId, String group, String content) throws NacosException;

public boolean publishConfig(String dataId, String group, String content, String type) throws NacosException;

请求参数

参数名 参数类型 描述
dataId string 配置 ID,采用类似 package.class(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。建议根据配置的业务含义来定义 class 部分。全部字符均为小写。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 256 字节。
group string 配置分组,建议填写产品名:模块名(如 Nacos:Test)来保证唯一性。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 128 字节。
content string 配置内容,不超过 100K 字节。
type string @Since 1.4.1. 配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为TEXT

返回参数

参数类型 描述
boolean 是否发布成功

请求示例

public static void main(String[] args) {
    //发布配置
    publishConfig();
}


public static ConfigService createConfigService(){
    try {

        String serverAddr = "localhost:8848";
        //初始化配置中心的Nacos Java SDK
        ConfigService configService = NacosFactory.createConfigService(serverAddr);
        return configService;
    } catch (NacosException e) {
        throw new RuntimeException(e);
    }
}
/**
 * 发布配置
 */
public static void publishConfig(){
    try {
        ConfigService configService = createConfigService();
        String dataId = "com.example.nacos-demo";
        String group = "nacos-demo";
        String content = "测试";
        boolean isPublishOk = configService.publishConfig(dataId, group, content );
        System.out.println(isPublishOk);
    } catch (NacosException e) {
        e.printStackTrace();
    }
}

返回:true

4.获取配置

用于服务启动的时候从 Nacos 获取配置。

public String getConfig(String dataId, String group, long timeoutMs) throws NacosException

请求参数

参数名 参数类型 描述
dataId string 配置 ID,采用类似 package.class(如com.t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值