专栏名称: 院长技术
《院长技术》专注于DevOps技术栈研究,云原生、Istio,CICD、Docker、Prometheus、K8s、ServiceMesh、Jenkins、Linux、微服务、分布式存储、监控、日志收集、安全渗透、虚拟化等技术栈。
目录
相关文章推荐
卢克文工作室  ·  德国爆火的蒸汽清洗机,价格终于被中国人打下来了! ·  16 小时前  
环球网  ·  菲律宾解救一名被绑架的14岁中国公民 ·  20 小时前  
参考消息  ·  美乌矿产协议细节曝光 ·  昨天  
薪人薪事企小薪  ·  降低自己的期望工资,就能快点找到工作吗? ·  昨天  
参考消息  ·  白宫:特朗普有信心本周完成谈判 ·  3 天前  
51好读  ›  专栏  ›  院长技术

手把手教你,快速容器化部署Nacos,并通过Go代码调用Nacos

院长技术  · 公众号  ·  · 2024-08-07 07:00

正文

最新微信技术群

院长简介

作者:院长

职位:运维开发工程师

官网: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群已满







请到「今天看啥」查看全文