Docker 安装 Nacos
JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m
如果你的内存足够大则不需要设置,使用默认即可1
| docker run --name nacos-standalone -p 8848:8848 -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -d nacos/nacos-server:latest
|
访问 Nacos
如果访问失败 可尝试重启系统!
http:// 你的 docker ip:8848/nacos
账号:nacos
密码:nacos

持久化的 Mysql 中
简单使用不需要配置,在生产环境中需要配置
环境要求
注意,mysql5.6 版本会报错:Specified key was too long; max key length is 767 bytes,原因是 mysql5.6 最长的索引是 767,要用 Mysql5.7 以上版本解决该问题。
步骤
https://github.com/alibaba/nacos/releases
目前 docker Nacos 版本为 2.3.0
下载 对应版本的 Nacos 获得配置文件中的 conf/nacos-mysql.sql

2.创建数据库 nacos_config
并到导入 nacos-mysql.sql

- 进入容器中修改配置文件
1 2 3
| sudo docker ps -a sudo docker exec -it 0d8 /bin/bash vim conf/application.properties
|
修改以下内容1 2 3 4 5
| spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://likfees.cn:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456
|

登录 Nacos 新建命名空间查看数据库是否成功!

Nacos 的使用
命名空间
可以隔离配置集,将某些配置集放到某一个命名空间之下。
命名空间我们一般用来区分 微服务
组
抛出一个问题: 你现在确实能够隔离微服务,但是不同的微服务的开发、测试、生产环境如何区别,
组可以用来区别区别开发、测试、生产环境
dataid - 配置集
一个配置集就是一个配置文件, 实际上可以更灵活
Python
https://github.com/nacos-group/nacos-sdk-python
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
| def update_cfg(args): print("配置发生了变化") global config config = json.dumps(args) print(config) NACOS = { "host": "172.17.0.1", "port": 8848, "user": "nacos", "password": "000", "name_space": "7319546d-df6f-4366-b1cc-005c41f3e054", "group": "dev", "user_srv_data_id": "user-srv", "db_data_id": "db", }
nacos_client = nacos.NacosClient(f'{NACOS["host"]}:{NACOS["port"]}', namespace=NACOS["name_space"])
config = json.loads(nacos_client.get_config(NACOS["user_srv_data_id"], NACOS["group"]))
print(config)
nacos_client.add_config_watcher(NACOS["user_srv_data_id"], NACOS["group"], update_cfg)
|
Golang
https://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
| clientConfig := constant.ClientConfig{ NamespaceId: 命名空间ID, TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", LogLevel: "debug", }
serverConfigs := []constant.ServerConfig{ { IpAddr: global.NacosConfig.Host, Port: global.NacosConfig.Port, }, } configClient, err := clients.CreateConfigClient(map[string]interface{}{ "serverConfigs": serverConfigs, "clientConfig": clientConfig, }) if err != nil { panic(err) } content, err := configClient.GetConfig(vo.ConfigParam{ DataId: global.NacosConfig.UserApiDataId, Group: global.NacosConfig.Group, }) if err != nil { zap.S().Fatalw("获取 Nacos 配置信息失败", err.Error()) } err = json.Unmarshal([]byte(content), &global.Config) if err != nil { zap.S().Fatalw("解析 Nacos 配置信息失败", err.Error()) }
err = configClient.ListenConfig(vo.ConfigParam{ DataId: global.NacosConfig.UserApiDataId, Group: global.NacosConfig.Group, OnChange: func(namespace, group, dataId, data string) { fmt.Println(global.Config.Services.UserSrvName) err = json.Unmarshal([]byte(data), &global.Config) if err != nil { zap.S().Fatalw("文件发生变化,解析 Nacos 配置信息失败", err.Error()) } fmt.Println(global.Config.Services.UserSrvName) }, }) if err != nil { zap.S().Fatalw("监听配置文件出现异常", err.Error()) }
|