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) | |
} | |
} |
运行代码结果如下:
可以看到它成功的输出了我的配置,你可以自己修改一下,看看打印的结果会不会监听到并输出不一样的结果。