Mac 下通过 Docker 安装 Nacos

Mac系统
481
0
0
2022-11-08
标签   Docker

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

Nacos 安装

命令如下:

# intel 处理器安装
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=128m -p 8848:8848  -p 9848:9848 -p 9555:9555 -d nacos-server:lates


#  Apple Silicon 处理器安装
docker run --name nacos-standalone -e MODE=standalone  -p 8848:8848 -p 9848:9848 -p 9555:9555  -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=128m -d nacos/nacos-server:v2.1.0-slim

登录访问

安装成功后,通过浏览器访问 http://127.0.0.1:8848/nacos

初始账号/密码 nacos/nacos

如下图所示:

配置管理 public 之后的 goods、order 等是我本地创建的,你未创建是没有的。

新增配置

选择命名空间新建一个属于自己的空间,命名空间 ID 可以让他自己生成。

点击配置管理里的配置列表,根据自己创建的命名空间,点击 ➕ 号新增配置。

根据自己项目的需求进行增加配置。

创建好了之后,接下来编写一个简单的事例来进行测试吧。

配置 Go 语言客户端

Nacos-sdk-go 是 Nacos 的 Go 语言客户端,它实现了服务发现和动态配置的功能。

安装

使用 go get 安装 SDK:

go get -u github.com/nacos-group/nacos-sdk-go

快速使用

package main

import (
    "fmt" 
    "time"

    "github.com/nacos-group/nacos-sdk-go/clients" 
    "github.com/nacos-group/nacos-sdk-go/common/constant" 
    "github.com/nacos-group/nacos-sdk-go/vo"
)

func main() {
    sc := []constant.ServerConfig{
        {
            IpAddr: "127.0.0.1",
            Port:   8848,
        },
    }
    // 创建clientConfig
    clientConfig := constant.ClientConfig{
        NamespaceId:         "e32e16ee-2bba-4fec-8db3-5466af005380", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
        TimeoutMs:           5000,
        NotLoadCacheAtStart: true,
        LogDir:              "tmp/nacos/log",
        CacheDir:            "tmp/nacos/cache",
        LogLevel:            "debug",
    }

    // 创建动态配置客户端
    configClient, err := clients.NewConfigClient(
        vo.NacosClientParam{
            ClientConfig:  &clientConfig,
            ServerConfigs: sc,
        },
    )
    if err != nil {
        panic(err)
    }
    // 获取配置
    content, err := configClient.GetConfig(vo.ConfigParam{
        DataId: "user-service",
        Group:  "dev"})

    if err != nil {
        panic(err)
    }

    fmt.Println(content)

    // 监听配置更改,key=dataId+group+namespaceId。
    err = configClient.ListenConfig(vo.ConfigParam{
        DataId: "user-service",
        Group:  "dev",
        OnChange: func(namespace, group, dataId, data string) {
            fmt.Println("config changed group:" + group + ", dataId:" + dataId + ", content:" + data)
        },
    })
    // 加入如下代码,修改配置时候的可以监听到
    time.Sleep(3000 * time.Second)
    if err != nil {
        panic(err)
    }
}

运行代码结果如下:

可以看到它成功的输出了我的配置,你可以自己修改一下,看看打印的结果会不会监听到并输出不一样的结果。