最新微信技术群
院长简介
作者:院长
职位:运维开发工程师
官网:https://deanit.cn
博客:https://blog.deanit.cn
擅长:
【虚拟化,容器化,自动化运维,CICD,监控,日志,中间件,双机热备,分布式存储,数据库,认证,组网隧道,Kali 安全渗透,网络攻击,负载均衡,Html,Css,Js,Jq,Vue3,Shell,Python,Go,前后端框架】
项目地址
官网:https://nacos.io/
项目简介
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
部署安装
安装Docker
curl -sSL https://get.docker.com/ | sh
安装Docker-compose
下载 Docker-Compose 二进制包
curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
给文件增加执行权限
chmod +x /usr/local/bin/docker-compose
检查 Docker-Compose 版本
docker-compose -v
Docker创建服务
[root@VM-24-2-centos ~]# docker run --name nacos-quick -e MODE=standalone -p 8848:8848 -d docker.m.daocloud.io/nacos/nacos-server:2.0.2
Unable to find image 'docker.m.daocloud.io/nacos/nacos-server:2.0.2' locally
2.0.2: Pulling from nacos/nacos-server
5ad559c5ae16: Pull complete
87660f13664e: Pull complete
10ec6d7a8fca: Pull complete
80cdb3124bd7: Pull complete
68111ec3c1e2: Pull complete
da2dd5f79b11: Pull complete
e5d776bff84f: Pull complete
2ae62a61c8c3: Pull complete
ba4ec60b268b: Pull complete
28b6ab459a07: Pull complete
9a03b1668b6d: Pull complete
Digest: sha256:ac66d2fbc1ba432beff88beb165e5012686863d72a5e0f25da06e23c5e7b329d
Status: Downloaded newer image for docker.m.daocloud.io/nacos/nacos-server:2.0.2
5e04c4383ab9936888b6ac24ccbd44bff33f91bb1ce6bc84109c0dd95c0d7279
查看服务
[root@VM-24-2-centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e04c4383ab9 docker.m.daocloud.io/nacos/nacos-server:2.0.2 "bin/docker-startup.…" 39 seconds ago Up 37 seconds 0.0.0.0:8848->8848/tcp, :::8849->8848/tcp nacos-quick
Web访问
http://ip:8848 账号:nacos,密码:nacos
Go代码示例
package main
import (
// 用于格式化输入输出。
"fmt"
// 提供Nacos客户端的接口。
"github.com/nacos-group/nacos-sdk-go/clients"
// 定义了Nacos客户端和服务器配置的常量。
"github.com/nacos-group/nacos-sdk-go/common/constant"
// 定义了Nacos客户端和服务器配置的值对象。
"github.com/nacos-group/nacos-sdk-go/vo"
)
func main() {
// 定义了Nacos服务器的配置,包括IP地址、端口、上下文路径和协议。
serverConfigs := []constant.ServerConfig{
{
IpAddr: "192.168.1.10",
Port: 8848,
ContextPath: "/nacos",
Scheme: "http",
},
}
// 定义了Nacos客户端的配置,包括命名空间ID、超时时间、是否在启动时不加载缓存、日志目录、缓存目录和日志级别。
clientConfig := constant.ClientConfig{
NamespaceId: "public", // we can create multiple namespace and use here
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogDir: "/tmp/nacos/log",
CacheDir: "/tmp/nacos/cache",
LogLevel: "debug",
}
// 创建配置管理客户端
// 使用clients.NewConfigClient函数创建配置管理客户端,如果创建失败,则打印错误信息并退出。
configClient, err := clients.NewConfigClient(
vo.NacosClientParam{
ClientConfig: &clientConfig,
ServerConfigs: serverConfigs,
},
)
if err != nil {
fmt.Printf("创建Nacos客户端时出错: %v", err)
return
}
fmt.Println("连接Nacos成功...")
fmt.Println("")
// 发布配置
// 使用configClient.PublishConfig函数发布配置,如果发布失败,则打印错误信息并退出。
success, err := configClient.PublishConfig(vo.ConfigParam{
DataId: "dean",
Group: "DEFAULT_GROUP",
Content: "示例配置内容",
})
if !success || err != nil {
fmt.Printf("发布配置时出错: %v", err)
return
}
fmt.Println("配置已成功发布.")
fmt.Println("")
// 获取配置
// 使用configClient.GetConfig函数获取配置,如果获取失败,则打印错误信息并退出。
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: "dean",
Group: "DEFAULT_GROUP",
})
if err != nil {
fmt.Printf("获取配置时出错: %v", err)
return
}
fmt.Printf("配置内容如下: \n%s\n", content)
// 监听配置变更
// 使用configClient.ListenConfig函数监听配置变更,当配置发生变化时,会调用OnChange函数,并打印新的配置内容。
err = configClient.ListenConfig(vo.ConfigParam{
DataId: "dean",
Group: "DEFAULT_GROUP",
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("")
fmt.Printf("监测到配置更改 - Group: %s, DataId: %s, 最新配置内容如下: \n%s\n", group, dataId, data)
},
})
if err != nil {
fmt.Printf("创建配置侦听器时出错: %v", err)
return
}
// 保持程序运行以监听配置变更
// 使用select{}保持程序运行,以便持续监听配置变更。
select {}
}
将代码复制到代码编辑器里:通过 go mod tidy 解决依赖
新建一个配置:
运行go代码
修改Nacos里的dean的配置,再次观察代码控制台
招贤纳士
欢迎👏关注《院长技术》,只做原创,干货~~~
更多技术干货持续输出中......
知识星球,试运营中,
原价188¥在不断上涨,
现加入仅需129¥
,文档正逐渐上传!
微信群:如果人数超过200,或者群满,请联系我,邀请进群
欢迎加入
QQ-4
群:【
1群-2群-3群已满