go 学习 之 HTTP微服务示例

1. 背景

学习ing

2. 创建文件:server.go


```go
package mainimport ("github.com/gogf/gf/contrib/registry/file/v2""github.com/gogf/gf/v2/frame/g""github.com/gogf/gf/v2/net/ghttp""github.com/gogf/gf/v2/net/gsvc""github.com/gogf/gf/v2/os/gfile"
)func main() {gsvc.SetRegistry(file.New(gfile.Temp("gsvc")))s := g.Server(`hello.svc`)s.BindHandler("/", func(r *ghttp.Request) {g.Log().Info(r.Context(), `request received`)r.Response.Write(`Hello world`)})s.Run()
}

由此可见,一个HTTP的微服务端和一个普通的Web Server端没什么差异,但是顶部多了一行代码:

gsvc.SetRegistry(file.New(gfile.Temp("gsvc")))
  • gsvc 是 GF (Go Frame) 框架中的微服务治理模块,用于处理服务注册、发现、负载均衡等功能。

  • SetRegistry 是一个全局函数,用于设置微服务的注册中心。这意味着所有后续创建的服务实例将使用这个注册中心来注册自己,以便于服务发现和治理。

  • file.New(gfile.Temp(“gsvc”))是基于本地系统文件的服务注册发现组件,其中的gfile.Temp(“gsvc”)指定的是存放服务文件的路径,例如在Linux/MacOS系统下,指向的是/tmp/gsvc目录。基于文件系统的注册发现仅用于本地微服务示例,不能用于跨节点通信。

在该示例中,给Server设置了一个名字hello.svc,该名字表示该Server绑定的微服务的名称,服务名称作为微服务的唯一标识,用于服务间的识别通信。当服务注册组件注册启用时,HTTP Server在运行时将会把自己的访问地址注册到服务注册组件中,方便其他服务通过相同组件按照服务名称进行访问。

3. 创建文件:server.go

package mainimport ("time""github.com/gogf/gf/contrib/registry/file/v2""github.com/gogf/gf/v2/frame/g""github.com/gogf/gf/v2/net/gsvc""github.com/gogf/gf/v2/os/gctx""github.com/gogf/gf/v2/os/gfile"
)func main() {gsvc.SetRegistry(file.New(gfile.Temp("gsvc")))client := g.Client()for i := 0; i < 10; i++ {ctx := gctx.New()res, err := client.Get(ctx, `http://hello.svc/`)if err != nil {panic(err)}g.Log().Debug(ctx, res.ReadAllString())res.Close()time.Sleep(time.Second)}
}

客户端通过g.Client()创建一个HTTP Client,并通过http://hello.svc/地址访问服务端,其中的hello.svc即先前的Server端绑定的微服务名称。当客户端通过微服务名称访问的时候,服务注册发现组件将会在底层进行检索,并找到对应的服务端地址进行通信。

4. 执行结果

  • 先执行server.go服务端运行一个简单的服务,随后再执行client.go通过服务名称请求服务。

执行后

  • 客户端输出:
    在这里插入图片描述

  • 服务端输出:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.4G无线通信芯片数据手册解读:Ci24R1南京中科微

今天&#xff0c;我非常荣幸地向您介绍这款引领行业潮流的2.4G射频芯片&#xff1a;Ci24R1。这款芯片&#xff0c;不仅是我们技术的结晶&#xff0c;更是未来无线通信的璀璨明星。 首先&#xff0c;让我们来谈谈Ci24R1的“速度”。2.4G射频芯片&#xff0c;凭借其卓越的数据传输…

“论云上自动化运维及其应用”写作框架,软考高级,系统架构设计师

论文真题 云上自动化运维是传统IT运维和DevOps的延伸&#xff0c;通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本&#xff0c;提升系统的灵活度&#xff0c;以及系统的交付速度&#xff0c;增强系统的可靠性&#xff0c;构建更加安全、可信、…

虹科技术丨Linux环境再升级:PLIN驱动程序正式发布

来源&#xff1a;虹科技术丨Linux环境再升级&#xff1a;PLIN驱动程序正式发布 原文链接&#xff1a;https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员&am…

湖北大学2024年成人高考函授报名专升本汉语言文学专业介绍

湖北大学&#xff0c;这所历史底蕴深厚的学府&#xff0c;自创办以来&#xff0c;始终致力于为社会各界人士提供高质量的成人高等继续教育。而今&#xff0c;为了满足广大成年人对于知识更新的渴求&#xff0c;学校特别开放了专升本汉语言文学专业的报名通道&#xff0c;为那些…

SCI二区复现|体育场观众优化算法(SSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;M Nemati受到体育场观众的行为对比赛中球员行为的影响启发&#xff0c;提出了体育场观众优化算法&#xff08;Stadium Spectators Optimizer, SSO&#xff09;。 2.算法…

unity使用XR插件开发SteamVR项目,异常问题解决方法

一、unity使用XR插件开发SteamVR项目&#xff0c;运行后相机高度异常问题解决方法如下操作 &#xff08;一&#xff09;、开发环境 1、Unity 2021.3.15f 2、XR Interaction Toolkit Version 2.5.2 &#xff08;com.unity.xr.interaction.toolkit&#xff09; 3、OpenXR Pl…

Nature子刊 | 基于遥感和U-Net绘制6亿棵树木,并发现过去十年印度农田树木严重减少

题目:Severe decline in large farmland trees in India over the past decade 期刊:Nature Sustainability 论文:https://www.nature.com/articles/s41893-024-01356-0 结果数据: https://rs-cph.projects.earthengine.app/view/tree https://zenodo.org/records/10978…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中&#xff0c;我们将学习&#xff1a; How to use key…

VUE大屏的开发过程(纯前端)

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;工作多年做过各类项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何想要讨论和学习的问题可联系我&#xff1a;1…

tauri使用github action实现跨平台编译并解决编译错误等问题

正常编译为跨平台结果就像上面的&#xff0c;有mac/windows/linux的安装程序&#xff0c;直接下载就可以安装使用&#xff0c;我的这个livebox桌面端仓库地址&#xff1a;GitHub - Sjj1024/LiveBox: livebox&#xff0c;里面有编译文件可以参考。今天主要讲一下遇到的问题。 官…

一投就中,收稿范围大,1个月内录用,国人发文最多,无风险预警

别人费心费力投个一年都不一定有结果&#xff0c;您直接坐上”直升飞机”&#xff0c;1个月录用。下面老毕分享1本超快录用EI期刊&#xff0c;工程电气方向的学者抓紧投稿。 抢占版面&#xff0c;下方【扫一扫】直接安排&#xff0c;1个月内录用&#x1f308; Journal of Elect…

快递大件多少算超重物品?

在快递大件物品时&#xff0c;我们经常听到“超重”这个词&#xff0c;但究竟多重才算超重呢&#xff1f;今天&#xff0c;就让我们来探讨一下快递大件的超重标准&#xff0c;以及如何更经济地快递这些超重物品。 1. 祺祺寄快递&#xff1a; “祺祺寄快递”是一个便捷的快递服…

在开发板上抓包的方法

1.tcpdump tcpdump -i lo -s0 -w /user/lo.pcap tcpdump: 启动 tcpdump 工具&#xff0c;用于捕获网络数据包。-i lo: 指定监听的网络接口为 lo&#xff0c;这里的 lo 是本地回环接口&#xff08;loopback interface&#xff09;&#xff0c;用于本机内部通信。-s0: 设置抓取…

绿盟又行了,漏管市场占有率第一

漏洞管理平台 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 今天看到不少朋友圈在转发&#xff…

使用Python实现深度学习模型通常涉及以下几个步骤

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

亚马逊测评干货分享:跨境卖家店铺测评技巧

测评在亚马逊、etsy、temu、速卖通、vinted、ebay、allegro、Jumia、Fruugo、敦煌、shopee、ozon、阿里国际站、沃尔玛、newegg等跨境平台中扮起着重要的方式&#xff0c;卖家们了解到测评可以快速增加产品的销量、评论数量&#xff0c;提升排名&#xff0c;从而打造爆款产品。…

Python基于逻辑回归分类模型、决策树分类模型、随机森林分类模型和XGBoost分类模型实现乳腺癌分类预测项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 在当今医疗健康领域&#xff0c;乳腺癌作为威胁女性健康的主要恶性肿瘤之一&#xff0c;其早期诊断与精…

Ollama qwen2:7b

简介 一个简明易用的本地大模型运行框架&#xff0c;Ollama官网&#xff1a;Ollama ollama命令 ollama有类似docker的命令。下面是一些模型(large language models)的操作命令: ollama list&#xff1a;显示模型列表ollama show&#xff1a;显示模型的信息ollama pull&#…

2024年【建筑电工(建筑特殊工种)】模拟试题及建筑电工(建筑特殊工种)作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)模拟试题为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题&#xff0c;每个月更新的建筑电工(建筑特殊工种)作业考试题库祝您顺利通过建筑电工(建筑特殊工种)考试。 1、…

visual studio2022配置和使用protobuf

上图证明&#xff0c;我真的测了好多遍&#xff0c;测了好多版本的protobuf&#xff0c;花了很多时间。不过好在最后在vs2022上测通了。 下载protobuf 这里是protobuf下载的地址。 Releases protocolbuffers/protobuf GitHub 个人使用的3.21.9这个版本才跑通的。 1、首先…