Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 安装
命令如下:
1 2 3 4 5 6 7
| 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
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 := constant.ClientConfig{ NamespaceId: "e32e16ee-2bba-4fec-8db3-5466af005380", 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)
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) } }
|
运行代码结果如下:
可以看到它成功的输出了我的配置,你可以自己修改一下,看看打印的结果会不会监听到并输出不一样的结果。
关注我获取更新