当前位置: 首页 > news >正文

go集成nacos

1,go集成nacos 注册实例与注销实例

package mainimport ("fmt""github.com/nacos-group/nacos-sdk-go/clients""github.com/nacos-group/nacos-sdk-go/clients/naming_client""github.com/nacos-group/nacos-sdk-go/common/constant""github.com/nacos-group/nacos-sdk-go/vo""io/ioutil""net""net/http""os""os/signal""strconv""syscall"
)var client naming_client.INamingClient/*
*
注册实例
*/
func Init(ip string, port uint64, serviceName string, logDir string, cacheDir string, namespaceId string, ipLocal string) {sc := []constant.ServerConfig{{IpAddr: ip,Port:   8848,},}cc := constant.ClientConfig{NamespaceId:         namespaceId, // 如果有命名空间,填上对应的命名空间IDTimeoutMs:           5000,NotLoadCacheAtStart: true,LogDir:              logDir,CacheDir:            cacheDir,LogLevel:            "error",}var err errorclient, err = clients.CreateNamingClient(map[string]interface{}{"serverConfigs": sc,"clientConfig":  cc,})if err != nil {fmt.Println(err)}// 注册实例instance := &vo.RegisterInstanceParam{Ip:          ipLocal,Port:        port,ServiceName: serviceName,Weight:      10,ClusterName: "DEFAULT",Enable:      true,Healthy:     true,Ephemeral:   true,Metadata:    map[string]string{"version": "1.0"},}success, err := client.RegisterInstance(*instance)if err != nil {fmt.Println("Nacos 注册实例失败 err=", err)return}if success {fmt.Println("Nacos 注册实例成功")}instances, err := client.SelectInstances(vo.SelectInstancesParam{ServiceName: "hall",GroupName:   "DEFAULT_GROUP",HealthyOnly: true, //HealthyOnly参数是一个可选参数,如果设置为true,则表示只返回健康的服务实例})if err != nil {fmt.Println("查询指定服务的实例信息 err=", err)}for _, instance := range instances {fmt.Println(instance.ServiceName + " " + instance.Ip + ":" + fmt.Sprint(instance.Port))}// 模拟服务运行http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Println(w, "Hello, this is my Go service!")})fmt.Println("服务启动成功 port=", port)err = http.ListenAndServe(":"+strconv.FormatUint(port, 10), nil)if err != nil {return}
}/*
*
注销实例
*/
func DeregisterInstance(port uint64, serviceName string, ip string) {// 注销实例instance := &vo.DeregisterInstanceParam{Ip:          ip,Port:        port,ServiceName: serviceName,Cluster:     "DEFAULT",GroupName:   "DEFAULT_GROUP",Ephemeral:   true,}success, err := client.DeregisterInstance(*instance)if err != nil {fmt.Println("Nacos 注销实例失败 err=", err)}if success {fmt.Println("Nacos 注销实例成功")}
}func Exit(port uint64, serviceName string, ip string) {// 创建一个通道来接收信号sigCh := make(chan os.Signal, 1)// 监听指定的信号signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)// 启动一个 goroutine 来处理接收到的信号go func() {// 等待信号sig := <-sigChfmt.Println("接收到信号:", sig)// 在这里执行程序关闭前的清理操作// 在这里编写你的程序逻辑fmt.Println("开始关闭程序")DeregisterInstance(port, serviceName, ip)fmt.Println("关闭程序-end all")// 退出程序os.Exit(0)}()
}func GetIp(local bool) string {var ip = ""if local {ip = nip()} else {ip = wip()}fmt.Println("GetIp=" + ip)return ip
}/*
*
获取内网ip
*/
func nip() string {ifaces, err := net.Interfaces()if err != nil {fmt.Println(err)return ""}for _, iface := range ifaces {addrs, err := iface.Addrs()if err != nil {fmt.Println(err)continue}for _, addr := range addrs {ipnet, ok := addr.(*net.IPNet)if ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {ip := ipnet.IPfmt.Println(ip.String())return ip.String()}}}return ""
}/*
*
获取外网ip
*/
func wip() string {resp, err := http.Get("https://api.ipify.org?format=text")if err != nil {fmt.Println(err)return ""}defer resp.Body.Close()ip, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println(err)return ""}fmt.Println(string(ip))return string(ip)
}func main() {ip := "127.0.0.1"var port uint64 = 8080serviceName := "gs-serviceTest"logDir := "/data/giftpanel/nacosLogs"cacheDir := "/data/giftpanel/nacosCache"namespaceId := "gs-test"//GetIp(false)localIp := GetIp(true)Exit(port, serviceName, localIp)Init(ip, port, serviceName, logDir, cacheDir, namespaceId, localIp)
}

相关文章:

go集成nacos

1,go集成nacos 注册实例与注销实例 package mainimport ("fmt""github.com/nacos-group/nacos-sdk-go/clients""github.com/nacos-group/nacos-sdk-go/clients/naming_client""github.com/nacos-group/nacos-sdk-go/common/constant"…...

NLP项目实战01--电影评论分类

介绍&#xff1a; 欢迎来到本篇文章&#xff01;在这里&#xff0c;我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言&#xff0c;我们将关注情感分析任务&#xff0c;即通过分析电影评论的情感来判断评论是正面的、负面的。 展示&#xff1a; 训练展示如下…...

Linux vmstat命令:监控系统资源

vmstat命令&#xff0c;是 Virtual Meomory Statistics&#xff08;虚拟内存统计&#xff09;的缩写&#xff0c;可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。此命令的基本格式有如下 2 种&#xff1a; [rootlocalhost ~]# vmstat [-a…...

php爬虫规则与robots.txt讲解

在进行网页爬虫时&#xff0c;有一些规则需要遵守&#xff0c;以避免违反法律&#xff0c;侵犯网站隐私和版权&#xff0c;以及造成不必要的麻烦。以下是一些常见的PHP爬虫规则&#xff1a; 1. 尊重网站的使用条款&#xff1a;在开始爬取之前&#xff0c;请确保你阅读并理解了…...

Ray使用备注

Ray使用备注 框架介绍 Ray是一种python分布式任务调度框架其支持 无状态的任务并发执行,也支持 有状态的任务按照一定顺序执行其支持 分布式调度器,在一个节点上创建的任务先给本节点的局部调度器,并让本节点自己处理,当资源不够时,再将任务发给全局调度器供其他节点处理其支…...

个人介绍以及毕业去向

CSDN陪伴我从大一到大四&#xff0c;后面也会接着用 写一点大学四年的总结 #总结#理工科#留学 211大学 弃保出国 智能科学与技术 均分88.9 EI论文一篇 数学竞赛和数学建模均为省二 大创评为国家级 全国大学生计算机设计大赛国家三等奖 百度Paddle、大疆RoboMaster、Phytium Te…...

原创度检测,在线文章原创度检测

原创度检测&#xff0c;作为数字时代中内容创作者和学术界广泛关注的话题&#xff0c;正逐渐成为保障知识产权、促进创新发展的不可或缺的工具。今天&#xff0c;我们将深入介绍原创度检测的定义、意义、技术原理、应用领域以及未来趋势。 一、什么是原创度检测&#xff1f; 原…...

windows下安装git中文版客户端

下载git Windows客户端 git客户端下载地址&#xff1a;Git - Downloads 我这里下载的是Git-2.14.0-64-bit.exe版本 下载TortoiseGit TortoiseGit客户端下载地址&#xff1a;Download – TortoiseGit – Windows Shell Interface to Git TortoiseGit客户端要下载两个&#…...

短视频怎么批量添加水印logo

在现代数字化时代&#xff0c;视频内容已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;当我们辛辛苦苦制作的视频在网络上分享时&#xff0c;常常会遇到被他人盗用或未经授权使用的情况。为了保护我们的创作成果&#xff0c;给视频添加水印logo成为了一种常见的手段…...

一文入门 UUID

UUID简介 UUID代表Universally Unique Identifier&#xff0c;译为全局一标识符。它是一种由软件构建的标准化身份验证方案&#xff0c;用于确保跨多个上下文中的对象都具有唯一性。UUID在各种系统之间确保了严格的唯一性&#xff0c;因此即使在大型分布式环境中&#xff0c;也…...

kafka学习笔记--broker工作流程、重要参数

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…...

多合一iPhone 解锁工具:iMyFone LockWiper iOS

多合一iPhone 解锁工具 无需密码解锁 iPhone/iPad/iPod touch 上所有类型的屏幕锁定 在几分钟内解锁 iPhone Apple ID、Touch ID 和 Face ID 立即绕过 MDM 并删除 iPhone/iPad/iPod touch 上的 MDM 配置文件 支持所有 iOS 版本和设备&#xff0c;包括最新的 iOS 17 和 iPhone 1…...

在设计和考虑建造室外雨水收集池时需要注意的因素

在设计和建造室外雨水收集池时&#xff0c;需要考虑以下因素&#xff1a; 地质条件&#xff1a;建造雨水收集池需要考虑到地质条件&#xff0c;例如土壤类型、地基承载能力等。这些因素可能对水池的建造和结构产生影响。 气候条件&#xff1a;不同地区的降雨量、湿度、气温等…...

C_5练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 下列叙述中错误的是(D)。A.计算机不能直接执行用C语言编写的源程序 B.C程序经C编译程序编译后,生成扩展名为obj的文件是一个二…...

使用 Axios 进行网络请求的全面指南

使用 Axios 进行网络请求的全面指南 本文将向您介绍如何使用 Axios 进行网络请求。通过分步指南和示例代码&#xff0c;您将学习如何使用 Axios 库在前端应用程序中发送 GET、POST、PUT 和 DELETE 请求&#xff0c;并处理响应数据和错误。 准备工作 在开始之前&#xff0c;请…...

已解决java.lang.exceptionininitializererror异常的正确解决方法,亲测有效!!!

已解决java.lang.exceptionininitializererror异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 报错问题解决思路解决方法交流 报错问题 java.lang.exceptionininitializererror 解决思路 java.lang.ExceptionInInitializerError 是一…...

深度学习 Day10——T10数据增强

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;3.导入数据4.查…...

ky10 x86 一键安装wvp gb28181 pro平台

下载代码 git clone https://gitcode.net/zengliguang/ky10_x86_wvp_record_offline_install.gitfinalshell mobaxterm 修改服务器ip 查看服务器ip ip a 在脚本文件中修改服务器ip 执行安装脚本 切换到root用户 sudo su cd ky10_x86_wvp_record_of...

FPGA时序分析与约束(0)——目录与传送门

一、简介 关于时序分析和约束的学习似乎是学习FPGA的一道分水岭&#xff0c;似乎只有理解了时序约束才能算是真正入门了FPGA&#xff0c;对于FPGA从业者或者未来想要从事FPGA开发的工程师来说&#xff0c;时序约束可以说是一道躲不过去的坎&#xff0c;所以这个系列我们会详细介…...

Linux 驱动开发需要掌握哪些编程语言和技术?

Linux 驱动开发需要掌握哪些编程语言和技术&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&a…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...