Go微服务二 Go+nacos 实现配置共享

1,676 次浏览次阅读
没有评论

Nacos

简介

作用

发现、配置和管理微服务

特性

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 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

Go 微服务二   Go+nacos 实现配置共享

2. 配置 – 新建配置

Go 微服务二   Go+nacos 实现配置共享

3. 命名空间

可以新建命名空间,也可以使用默认的 public

Go 微服务二   Go+nacos 实现配置共享

4. 组 – 隔离

场景:把不同微服务的开发、测试、生成配置文件隔离(相同名字的配置文件,属于不同的组)

Go 微服务二   Go+nacos 实现配置共享

5. Data ID – 配置集

一个配置集就是一个配置文件, 还可以将 db,server 内容等配置分开,实现更灵活的管理

Go 集成 nacos

https://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)
}

Go 微服务二   Go+nacos 实现配置共享

正文完
 0
评论(没有评论)