创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:http://blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持
发现、配置和管理微服务
特性 服务发现和服务健康监测、动态配置服务动态 DNS 服务服务及其元数据管理 搭建Nacos 安装 压缩包方式[nacos2.0.4 github下载地址]
➜ mkdir nacos-server
➜ cd Downloads && mv nacos-server-2.0.4.tar.gz /Users/cc/nacos-server
➜ cd /Users/cc/nacos-server && tar -zxvf nacos-server-2.0.4.tar.gz
➜ mv nacos nacos204
➜ cd nacos204/bin
➜ ./startup.sh -m standalone # standalone代表着单机模式运行,非集群模式
➜ ps aux | grep nacos-server
➜ ./shutdown.sh # 关闭nacos服务
Docker 方式 - 推荐
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_MAX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest
使用
1. 登陆
浏览器访问: 127.0.0.1:8848/nacos/#/login
账号密码: nacos/nacos
2. 配置 - 新建配置 3. 命名空间可以新建命名空间,也可以使用默认的public
4. 组 - 隔离场景:把不同微服务的开发、测试、生成配置文件隔离(相同名字的配置文件,属于不同的组)
5. Data ID - 配置集一个配置集就是一个配置文件, 还可以将db,server内容等配置分开,实现更灵活的管理
Go集成nacoshttps://github.com/nacos-group/nacos-sdk-go/blob/master/README_CN.md
1. 安装go get -u github.com/nacos-group/nacos-sdk-go
Demo:
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() {
// Note:我们可以配置多个ServerConfig,客户端会对这些服务端做轮询请求
clientConfig := constant.ClientConfig{
TimeoutMs: 5000, // 请求Nacos服务端的超时时间,默认是10000ms
NamespaceId: "", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
CacheDir: "cache", // 缓存service信息的目录,默认是当前运行目录
NotLoadCacheAtStart: false, // 在启动的时候不读取缓存在CacheDir的service信息
LogDir: "log", // 日志存储路径
LogLevel: "debug", // 日志默认级别,值必须是:debug,info,warn,error,默认值是info
}
serverConfigs := []constant.ServerConfig{
{
IpAddr: "127.0.0.1",
ContextPath: "/nacos",
Port: 8848,
Scheme: "http",
},
}
// 创建动态配置客户端的另一种方式 (推荐)
// 创建动态配置客户端的另一种方式 (推荐)
configClient, err := clients.NewConfigClient(
vo.NacosClientParam{
ClientConfig: &clientConfig,
ServerConfigs: serverConfigs,
},
)
if err != nil {
panic(err)
}
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: "config.yaml",
Group: "dev", // 开发环境配置文件
})
if err != nil {
panic(err)
}
fmt.Println(content)
// 监听配置变化
configClient.ListenConfig(vo.ConfigParam{
DataId: "config.yaml",
Group: "dev",
OnChange: func(namespace, group, dataId, data string) {
fmt.Println("配置文件发生了变化...")
fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
},
})
time.Sleep(300 * time.Second)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)