C++GO语言微服务和服务发现
目录
01 03-go-micro简介
02 04-服务发现的简单认识
03 05-consul的安装
04 06-consul常用的命令
05 07-注册服务到consul并验证
06 08-consul健康检查
07 09-consul结合grpc使用-上(只实现grpc远程调用)
08 10-consul结合grpc使用-中(注册服务到consul)
09 11-consul结合grpc使用-下(client从consul获取服务
10 12-consul结合grpc使用-小结
11 13-服务注销
01go-micro简介
# go-Micro 框架## 创建 micro 服务命令:micro new --type srv test66框架默认自带服务发现:mdns。使用consul服务发现:1. 初始consul服务发现: consulReg := consul.NewRegistry()2. 在 NewService 中 添加 服务。 micro.Registry(consulReg ),## 使用 go-micro框架 创建 客户端命令:micro new --type web test77### 补充 http 相关知识:- 路由器:资源分发 - 路由:请求分发。- service.HandleFunc("/test77/call", handler.Test77Call)- 将 /test77/call 这个请求,通过 回到函数 Test77Call() 处理。 - URL:- 组成:https://ip+port/资源路径- https://ip+port/ 找到 pc机,找到 对应进程- 资源路径:在代码中,称之为路由。- “/ ” : 代表 主机上进程 对应的默认资源。- http协议,自动找当前目录下的 index.html 文件,做默认页面。
02 服务发现的简单认识
### go-micro 框架 测试使用 分析图# gin 框架go常见的web框架:gin、beego、echo、Iris 。。。### 实现简单的 web http 常用方法与 数据库访问 一一对应。- GET —— 查 —— 获取数据 - Post —— 增 —— 增加数据 - Put —— 改 —— 更新数据 - Delete —— 删 —— 删除数据
03 consul的安装
### 使用 gin 框架创建最简单的web ```gofunc main() {// 1. 初始化路由 -- 官网:初始化 web 引擎router := gin.Default()// 2. 做路由匹配router.GET("/", func(context *gin.Context) {context.Writer.WriteString("hello world!")})// 3. 启动运行router.Run(":8080") } ```### gin 框架的客户端 与 微服务 对接1. 封装回调函数, 给 router.Get() 设置2. 拷贝 微服务的 “ 密码本” protobuf 到 web 中3. 修改 protobuf文件的 包名。 test66别名 “test66web/proto/test66”4. 实现 回调函数:1. 初始化客户端。 microClient := NewTeset66Sevice(服务名,client.DefaultClient)2. 调用远程服务。 resp, err := microClient.Call(context.TODO, &test66.Request{ })3. 将 返回的 数据, 显示到 浏览器。 context.Writer.WriteString(resp.Msg);```go package mainimport ("github.com/gin-gonic/gin""fmt"test66 "test66web/proto/test66" // test66 为包的别名."github.com/micro/go-micro/client""context" )func CallRemote(ctx *gin.Context) {// 1. 初始化客户端microClient := test66.NewTest66Service("go.micro.srv.test66", client.DefaultClient)fmt.Println()// 2. 调用远程服务resp, err := microClient.Call(context.TODO(), &test66.Request{Name:"xiaowang",})if err != nil {fmt.Println("call err:", err)return}// 为了方便查看, 在打印之前将结果返回给浏览器ctx.Writer.WriteString(resp.Msg)fmt.Println(resp, err) }
04 consul常用的命令
func main() {// 1. 初始化路由 -- 官网:初始化 web 引擎router := gin.Default()// 2. 做路由匹配router.GET("/", CallRemote)// 3. 启动运行router.Run(":8080") }```### 指定 consul 服务发现到 go-micro 服务和 gin 框架客户端中- mdns服务发现: (组播)支持的服务,必须是本地服务, 局域网内的服务。#### 修改 go-micro 微服务1. consulReg := consul.NewRegistry() 初始化 consul服务发现 2. 添加 服务 service := micro.NewService(micro.Name("go.micro.srv.test66"),micro.Registry(consulReg),micro.Version("latest"),)3. 在命令行,执行 consul agent -dev
05 注册服务到consul并验证
#### 修改 gin 框架 web服务 (客户端)1. consulReg := consul.NewRegistry() 初始化 consul服务发现 2. microClinet := micro.NewService( micro.Registry(consulReg ) ) 3. test66.NewTest66Service(“服务名”,microClinet.Client() )测试:浏览器键入: 192.168.6.108:8080 ——> hello xiaowang # REST REST全称是Representational State Transfer: 表述性 状态 转义本质:一种代码设计风格。 web开发中常用。——遵循风格!使用:一般以 http 4 种请求方法, 来确定对某一资源(URI:标识符。名词)的 固定操作。- 获取数据:GET - 添加数据:POST - 修改数据:PUT - 删除数据:Delete 满足 REST 设计风格的, 称之为 “RESTful”
06 consul健康检查
# MVC- 是一种常见的 “代码组织架构”, 可以在开发中,对数据进行处理并解耦。- model:模型。 处理数据库相关的文件。- veiw:视图。处理显示相关的文件。 网站:html- controller:控制器。处理具体业务! 联动 m 和 v - MVC 与语言无关!是常见的 代码组织架构。# 项目准备1. 准备项目环境。1. 创建项目目录 web、service2. 在 web 端 使用 MVC3. 创建项目常用目录: conf 配置文件、utils 工具类、bin可执行文件、test测试目录4. 导入 异常处理error.go5. 导入前端资源 html/ 到 view/ 中2. 开发项目1. 开发 微服务端2. 开发 web 服务(客户端)### http协议错误5 类:1. 1xx 100 请求成功,需要继续发送请求 2. 2xx 200 201 202 请求被成功接收。 3. 3xx 300 301 请求的资源,指定到对应的 URI上 4. 4xx 404 403 请求端错误 5. 5xx 500 501 502 服务端错误### 网站开发形式:1. 前后端不分离- 前端只负责页面创建,不负责加载数据。- 后台负责主要业务书写,数据操作、加载。—— 需要后端会 web。 css 、js、h5 2. 前后端分离- 前端负责页面创建 和 数据的加载。- 后端只负责数据处理。 —— 节省时间:服务器优化 1)健壮性 2)并发性。
07 consul结合grpc使用-上(只实现grpc远程调用)
# 获取 session 1. 在 web/main.go 中 , 跟据 gin 框架 使用static() , 设置访问路径 2. F12 浏览器中,查看 NetWork 中 Headers 和 Respose。 得到 url 3. 查看 《接口文档.doc》, 获取 url 、错误码、错误处理函数。 4. 在 web/ 下 遵循 MVC 设计模式创建 controller 目录。添加 user.go 5. 根据 《接口文档.doc》实现错误函数。1. resp[“errno”]2. resp[“errmsg”]3. ctx.Json(200, resp) // 将 错误消息,进行序列化。返回给浏览器。 6. url寻址时,都是从 “/‘’ 开始, 产生歧义- router.Static(“/”) --- 修改为: router.Static(“/home”)7. 浏览器测试: IP:8080/home
08 consul结合grpc使用-中(注册服务到consul)
09 consul结合grpc使用-下(client从consul获取服务
10 consul结合grpc使用-小结
11 服务注销
相关文章:
C++GO语言微服务和服务发现
目录 01 03-go-micro简介 02 04-服务发现的简单认识 03 05-consul的安装 04 06-consul常用的命令 05 07-注册服务到consul并验证 06 08-consul健康检查 07 09-consul结合grpc使用-上(只实现grpc远程调用) 08 10-consul结合grpc使用-中(…...
【随笔】Google学术:but your computer or network may be sending automated queries.
文章目录 一、问题复述二、问题原因三、解决 前提:你的xxx是自己做的,你自己可以管理,而不是用的那些劣质✈场。 一、问题复述 🟢如下图所示:可以打开谷歌学术,但是一搜索就是这个界面。 二、问题原因 …...
JavaSE核心知识点02面向对象编程02-02(封装、继承、多态)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点02面向对象编程02-02&#…...
Ubuntu 服务器管理命令笔记
这份命令笔记涵盖了 Ubuntu 服务器管理的各个方面,包括系统更新、用户管理、安全配置、网络诊断等,适合日常使用与技术分享。 系统管理命令 sudo apt update && sudo apt upgrade -y # 更新系统 sudo reboot …...
航电系统之数据传输与交换篇
航电系统的数据传输与交换是航空电子领域的核心技术,直接关系到飞行安全、效率及任务执行能力。以下从技术架构、关键协议、应用场景、发展趋势与挑战四个维度进行系统阐述: 一、技术架构与核心组件 航电系统数据传输与交换采用分层化、模块化设计&…...
MATLAB 在医疗行业的应用
MATLAB 在医疗行业的应用 MATLAB 是一种强大的技术计算和模拟平台,在医疗行业中有着广泛的应用。日益处于数字化和智能化进程中的医疗行业,需要应用很多高性能的工具来支撑设备设计,信号分析,AI 项目开发等。本文将全面介绍 MATL…...
基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】
基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】 一、引言 在当今数据驱动的时代,机器学习和深度学习技术被广泛应用于各类预测任务中。其中,卷积神经网络(CNN)因其在处理具有空间结构的数据方面表现出色࿰…...
第一次被AI指点出文章的问题
二十年,几乎从未收到过这种程度的反馈。大部分意见都是有效的批评。 1.前言 关于链家左晖的一篇评论稿 这篇文章有什么问题吗?所有方面都可以谈,包括叙述,用词,重复,真实性,偏见,…...
红黑树的应用场景 —— 进程调度 CFS 与内存管理
一、红黑树在操作系统中的“实战”应用 📌 1. 进程调度器:CFS(Completely Fair Scheduler) CFS 是 Linux 的默认调度器(从 2.6.23 起),它使用红黑树维护就绪队列。 ✨ 为什么用红黑树&#x…...
RHEL8搭建FOU隧道
RHEL8搭建FOU隧道 搭建FOU隧道升级内核装载模块启用 IPv4 数据包转发功能升级iproute 配置 FOU 隧道k2接收端配置k1发送端配置双向配置k1 作为接收端配置一次。k2 作为发送端配置一次。配置接口状态配置路由的下一跳IP配置路由隧道测试 参考链接: 搭建FOU隧道 FOU是…...
单片机自动排列上料控制程序 下
/***************上料时间参数显示******************/ void dis_timea(uchar s) { uchar x,y; uint i0; A1s/100; A2(s-A1*100)/10; A3s-A1*100-A2*10; …...
科技成果鉴定测试有哪些内容?又有什么作用?
科技成果鉴定测试是评价科技成果质量和水平的方法之一,通过测试,可以对科技成果的技术优劣进行评估,从而为科技创新提供参考和指导。 一、科技成果鉴定测试的内容 1.技术评审:通过技术专家对项目进行详细的技术分析ÿ…...
【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)
目录 一、HTTP负载均衡简介 (一)、概述 (二)、upstream模块核心参数 1、server指令参数 2、负载均衡策略指令参数 (1)、轮询(Rond Robin) (2)、最少连接(least_conn) (3)、一致性哈希(Consistent Hash) (4)、IP哈希(IP Hash) 3、长连接指令参数 二、环境规划 三、N…...
【LeetCode】删除排序数组中的重复项 II
题目 链接 思路 双指针 我好聪明啊,自己想出了这个双指针的办法,哈哈哈哈哈哈哈,太高兴了 代码 class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""nlen…...
vite 初始化react项目
一. 初始化 npm create vitelatestProject name 项目名,例如:todo-listSelect a framework 选:ReactSelect a variant 选:TypeScript npm install //安装依赖 npm run dev //启动项目这样一个简单的react项目就实现了。 二.…...
LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
目录 问题描述解决思路 回溯法剪枝优化 代码实现复杂度分析示例测试总结与扩展 1. 问题描述 给定两个整数 k 和 n,要求找出所有满足以下条件的组合: 组合包含 k 个不同的数字。组合中数字的和等于 n。组合中的数字范围为 [1, 9],且每个数字…...
【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)高级用法
Bootstrap V4系列 学习入门教程之 组件-下拉菜单(Dropdowns)高级用法 下拉菜单(Dropdowns)高级用法一、Directions 方向1.1 Dropup1.2 Dropright1.3 Dropleft 二、Menu items 菜单项2.1 Active 活动2.2 Disabled 禁用 三、Menu co…...
xiaopiu原型设计工具笔记
文章目录 有没有行组件是否支持根据图片生成原型呢? 其他官网 做项目要用到原型设计,还是那句话,遇到的必须会用,走起。 支持本地也支持线上。 有没有行组件 是这样,同一行有多个字段,如何弄的准确点呢? 目前只会弄…...
【hadoop】案例:Sqoop迁移仓库数据
1 数据导出:Hive导入MySQL [hadoophadoop1 sqoop]$ bin/sqoop export \ > --connect jdbc:mysql://localhost/weather \ > --username root \ > --password 123456 \ > --table mean_temperature \ > --export-dir /user/hive/warehouse/mydb/mean…...
南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案
第五次课测试 题量: 16 满分: 100 一. 单选题(共10题,62.2分) 1. (单选题)下列哪个电路是基本的组合逻辑电路? A. 触发器B. 计数器C. 半加器D. 积分器 我的答案:C:半加器;正确答案:C:半加器; 6.2分 知识点: 组合…...
基于PyQt5的报警器实现说明
基于PyQt5的报警器实现说明 一、概述 本程序是一个基于PyQt5框架实现的报警器控制程序,通过串口与外部设备进行通信,向设备发送特定的十六进制指令来实现报警器的不同功能。PyQt5是Python中用于创建图形用户界面(GUI)的强大工具…...
pyorch中tensor的理解与操作(一)
tensor 是PyTorch 中一个最基本的数据集合类型, 本文注意针对该结构类型,说明它的存储方式以及主要的操作方法。 tensor其实是一个多维数组(元素的数据类型需一致),类似于 NumPy 的 ndarrays,但可以在 GPU …...
用react实现一个简单的三页应用
下面是一个使用 React Router 的简单示例,演示了如何在 React 应用中实现页面之间的导航。 🛠️ 第一步:使用 Vite 创建项目 npm create vitelatest my-router-app -- --template react cd my-router-app npm install🚀 第二步&a…...
OCCT中的布尔运算
OCCT 中的布尔运算是其几何建模的核心功能之一,主要用于实体的合并、切割和相交操作。以下是详细介绍及经典示例程序: 一、OCCT布尔运算的核心类 OCCT 通过 BRepAlgoAPI 命名空间下的类实现布尔运算,主要包括: BRepAlgoAPI_Fus…...
SpringBoot的自动配置和起步依赖原理
关于Spring Boot的自动配置和起步依赖,我想结合最新的实现机制来展开说明。先说自动配置——这是Spring Boot最核心的"约定优于配置"思想的落地体现。举个例子,当我们创建一个新的Spring Boot项目时,只要在pom.xml里添加了spring-b…...
沃伦森电气高压动态无功补偿装置助力企业电能优化
在工业生产的复杂电能环境中,电能质量直接影响企业的生产效率和运营成本。XX光伏科技有限公司作为一家快速发展的制造企业,随着生产规模的不断扩大,其内部电网面临功率因数过低、电压波动频繁等问题,导致供电部门罚款增加、设备故…...
VUE——自定义指令
Vue自定义指令概述 Vue自定义指令可以封装一些 dom 操作,扩展额外功能。它们允许开发者直接对DOM元素进行低层次操作,自定义指令可以响应Vue的响应式系统,从而在数据变化时触发相应的DOM更新。 自定义指令语法 自定义指令的常用钩子函数&am…...
Redis协议与异步方式
1.redis pipeline 通过一次发送多次请求命令,为了减少网络传输时间。 注意:pipeline 不具备事务性。 2.redis 事务 事务:用户定义一系列数据库操作,这些操作视为一个完整的逻辑处理工作单元,要么全部执行,…...
systemd vs crontab:Linux 自动化运行系统的全面对比
在 Linux 系统运维和开发中,任务调度与服务管理 是不可或缺的一环。无论是定期备份、日志轮转,还是启动后台服务,自动化机制都能极大地提高系统的可靠性与效率。两种最常用的自动化工具是: crontab:传统的基于时间的任…...
Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案
Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案 引困境yum-utils破局 引 前段时间,有个项目有边缘部署的需求,一台没有的外网的Centos系统服务器,需要先安装jdk,node,mysql,reids…...
观测云:安全、可信赖的监控观测云服务
引言 近日,“TikTok 遭欧盟隐私监管机构调查并处以 5.3 亿欧元”一案,再次引发行业内对数据合规等话题的热议。据了解,仅 2023 年一年就产生了超过 20 亿美元的 GDPR 罚单。这凸显了在全球化背景下,企业在数据隐私保护方面所面临…...
el-table计算表头列宽,不换行显示
1、在utils.js中封装renderHeader方法 2、在el-table-column中引入: 3、页面展示:...
多智能体学习CAMEL-调用api
可选模型范围 在ModelScope中的模型库中选择推理 API-Inference ,里面的模型都可以选择,我们可以体验到最新的使用DeepSeek-R1数据蒸馏出的Llama-70B模型。 1.2.2 使用API调用模型 这里我们使用CAMEL中的ChatAgent模块来简单调用一下模型,…...
奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆
在数字化浪潮席卷全球的今天,企业正面临着前所未有的数据挑战与机遇。如何高效、精准地挖掘数据价值,已成为推动业务增长、提升竞争力的核心议题。奥威BI,作为智能AI数据分析领域的领军者,凭借其创新的AIBI融合模式,正…...
SM2Utils NoSuchMethodError: org.bouncycastle.math.ec.ECFieldElement$Fp.<init
1,报错图示 2,报错原因: NoSuchMethodError 表示运行时找不到某个方法,通常是编译时依赖的库版本与运行时使用的库版本不一致。 错误中的 ECFieldElement$Fp. 构造函数参数为 (BigInteger, BigInteger),说明代码期望使…...
Spring Boot 中 MongoDB @DBRef注解适用什么场景?
在 Spring Boot 中使用 MongoDB 时,DBRef 注解提供了一种在不同集合(collections)的文档之间建立引用关系(类似于关系型数据库中的外键)的方式。它允许你将一个文档的引用存储在另一个文档中,并在查询时自动…...
PDF生成模块开发经验分享
在日常的项目开发中,PDF文档的生成是一个常见的需求。无论是用于申报单、审批结果通知书还是其他业务相关的文档输出,一个高效且灵活的PDF生成功能都是不可或缺的。本文将基于我使用Java(Spring Boot)和iText库开发PDF生成模块的经…...
Music AI Sandbox:打开你的创作新世界
AI 和音乐人的碰撞 其实,Google 早在 2016 年就启动了一个叫 Magenta 的项目,目标是探索 AI 在音乐和艺术创作上的可能性。一路走来,他们和各种音乐人合作,终于在 2023 年整出了这个 Music AI Sandbox,并且通过 YouTub…...
RISC-V入门资料
以下是获取 RISC-V 相关资料的权威渠道和推荐资源,涵盖技术文档、开发工具、社区支持等: 1. 官方资料 RISC-V 国际基金会官网 https://riscv.org 核心文档:ISA 规范(包括基础指令集(RV32I/RV64I)、扩展指令…...
私服与外挂:刑事法律风险的深度剖析
首席数据官高鹏律师团队编著 在当今数字化时代,网络游戏产业蓬勃发展,然而与之相伴的私服与外挂现象却屡禁不止,且其背后隐藏着严重的刑事法律风险。作为一名律师,有必要在此对私服与外挂相关的刑事问题进行深入解读,以…...
sherpa-ncnn:Endpointing(断句规则)
更多内容:XiaoJ的知识星球 目录 1. Endpointing (端点)1.1 规则11.2 规则21.3 规则3 1. Endpointing (端点) 我们有三条端点检测规则。如果激活了其中任何一个,我们假设检测到终端节点。 . 1.1 规则1 规则 1 计算尾随静默的持续时间。如果大于用户指…...
谷云科技iPaaS技术实践:集成平台如何解决库存不准等问题
在当今竞争激烈的商业环境中,电商平台、仓库系统以及门店系统之间的数据不同步问题,如同一颗隐形的 “定时炸弹”,严重威胁着企业的生存与发展。尤其是在库存管理方面,订单系统显示商品已售出,但仓库却无货可发&#x…...
负载均衡算法解析(一)NGINX
文章目录 1. 核心数据结构:算法的基石1.1 负载均衡节点结构:定义服务器实体1.2 关键概念阐述:权重 (Weight) 2. NGINX加权轮询算法旨在解决的具体问题深度分析2.1 应对后端服务器间的负载不均衡问题2.2 后端服务健康状态的动态感知与自适应调…...
计算机网络笔记(十六)——3.3使用广播信道的数据链路层
3.3.1局域网的数据链路层 一、核心逻辑架构(拓扑结构演变) 二、MAC层核心机制 MAC地址结构 以太网帧格式 CSMA/CD工作机制流程 三、关键功能对比表 功能集线器(Hub)交换机(Switch)网桥(Bridge)工作层级物理层数据链路层数据链路层冲突域处理全广播&…...
STM32-模电
目录 一、MOS管 二、二极管 三、IGBT 四、运算放大器 五、推挽、开漏、上拉电阻 一、MOS管 1. MOS简介 这里以nmos管为例,注意箭头方向。G门极/栅极,D漏极,S源极。 当给G通高电平时,灯泡点亮,给G通低电平时&a…...
单片机 + 图像处理芯片 + TFT彩屏 指示灯控件
指示灯控件使用说明 简介 这是一个基于单片机 RA8889/RA6809图形处理芯片的指示灯的控件库,用于在TFT显示屏上显示各种状态的指示灯。该控件支持多种状态显示,包括正常、警告、错误和停止等状态,并支持自定义标签显示。 功能特点 支持多…...
73页最佳实践PPT《DeepSeek自学手册-从理论模型训练到实践模型应用》
这份文档是一份关于 DeepSeek 自学手册的详细指南,涵盖了 DeepSeek V3 和 R1 模型的架构、训练方法、性能表现以及使用技巧等内容。它介绍了 DeepSeek V3 作为强大的 MoE 语言模型在数学、代码等任务上的出色表现以及其训练过程中的创新架构如多头潜在注意力和多 To…...
Python自动化-python基础(上)
一.魔法方法 在 Python 中,魔法方法(Magic Methods)是一类特殊的方法,以双下划线 __ 开头和结尾 ,它们在特定的场景下会被 Python 解释器自动调用,用于实现一些内置的操作行为。 1. 初始化与构造相关 __…...
mysql数据库体验
目录 数据库简介 使用数据库 数据库的基本概念 数据 数据库和数据库表 数据库管理系统和数据库系统 数据库系统发展史 经典数据库 网状模型 层次模型 关系模型 当今主流数据库介绍 关系数据库 非关系型库的基本概念 关系数据库的基本结构 主键与外键 主键 外…...