Mac 通过 Docker 安装 Nacos

本文最后更新于:1 个月前

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

Nacos 安装

命令如下:

1
2
3
4
5
6
7
# 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

快速使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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)
}
}

运行代码结果如下:

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

关注我获取更新