C++GO语言微服务和服务发现②

news2025/5/13 17:02:37

01 创建go-micro项目-查看生成的 proto文件

02 创建go-micro项目-查看生成的main文件和handler

## 创建 micro 服务

命令:micro new --type srv test66

框架默认自带服务发现:mdns。

使用consul服务发现:

    1. 初始consul服务发现: consulReg := consul.NewRegistry()
     2. 在 NewService 中 添加 服务。 micro.Registry(consulReg ),

03 http补充说明知识

# 使用 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 文件,做默认页面。

### go-micro 框架 测试使用 分析图

04 go-micro框架服务端-客户端测试

# gin 框架

go常见的web框架:gin、beego、echo、Iris 。。。

### 实现简单的 web 

http 常用方法与 数据库访问 一一对应。

- GET —— 查 —— 获取数据
- Post —— 增 —— 增加数据
- Put —— 改 —— 更新数据
- Delete —— 删 —— 删除数据

05 gin框架介绍和测试

06 gin框架客户端与micro服务端对接

### 使用 gin 框架创建最简单的web 

```go

func main()  {
    // 1. 初始化路由 -- 官网:初始化 web 引擎
    router := gin.Default()

    // 2. 做路由匹配
    router.GET("/", func(context *gin.Context) {
        context.Writer.WriteString("hello world!")
    })

    // 3. 启动运行
    router.Run(":8080")
}
```

07 使用访问发现consul测试

### 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 main

import (
    "github.com/gin-gonic/gin"
    "fmt"
    test66 "test66web/proto/test66"     // test66 为包的别名.
    "github.com/micro/go-micro/client"
    "context"
)

08 consul使用图解和RESTful

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)
}

func main()  {
    // 1. 初始化路由 -- 官网:初始化 web 引擎
    router := gin.Default()

    // 2. 做路由匹配
    router.GET("/", CallRemote)

    // 3. 启动运行
    router.Run(":8080")
}

09 MVC简介

### 指定 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

10 创建项目-创建目录结构-查看文档-导入错误处理包

#### 修改 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 

![1581922279521](课堂笔记-03.assets/1581922279521.png)
 

11 创建项目-资源目录html介绍

# REST 

REST全称是Representational State Transfer:  表述性 状态 转义

本质:一种代码设计风格。  web开发中常用。——遵循风格!

使用:一般以 http 4 种请求方法, 来确定对某一资源(URI:标识符。名词)的 固定操作。

- 获取数据:GET
- 添加数据:POST
- 修改数据:PUT
- 删除数据:Delete

​        满足 REST 设计风格的, 称之为 “RESTful”

​    

# MVC

- 是一种常见的 “代码组织架构”, 可以在开发中,对数据进行处理并解耦。
    - model:模型。 处理数据库相关的文件。
    - veiw:视图。处理显示相关的文件。 网站:html
    - controller:控制器。处理具体业务!  联动 m 和 v
- MVC 与语言无关!是常见的 代码组织架构。

![1581924280038](课堂笔记-03.assets/1581924280038.png)

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

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

相关文章

【Web前端开发】CSS基础

2.CSS 2.1CSS概念 CSS是一组样式设置的规则,称为层叠样式表,用于控制页面的外观样式。 使用CSS能够对网页中元素位置的排版进行像素控制,实现美化页面的效果,也能够做到页面的样式和结构分离。 2.2基本语法 通常都是&#xff…

Git实战经验分享:深入掌握git commit --amend的进阶技巧

一、工具简介 git commit --amend是Git版本控制系统的核心补救命令,主要用于修正最近一次提交的元数据。该命令不会产生新的提交记录,而是通过覆盖原提交实现版本历史的整洁性,特别适合在本地仓库进行提交优化。 二、核心应用场景 提交信息…

PTA:jmu-ds-最短路径

给定一个有向图&#xff0c;规定源点为0&#xff0c;求源点0到其他顶点最短路径。###你要实现的 函数接口定义&#xff1a; void Dijkstra(MGraph g,int v);//源点v到其他顶点最短路径 裁判测试程序样例&#xff1a; #include <stdio.h> #include <iostream> …

WEB UI自动化测试之Pytest框架学习

文章目录 前言Pytest简介Pytest安装Pytest的常用插件Pytest的命名约束Pytest的运行方式Pytest运行方式与unittest对比主函数运行命令行运行执行结果代码说明 pytest.ini配置文件方式运行&#xff08;推荐&#xff09;使用markers标记测试用例 pytest中添加Fixture&#xff08;测…

深入理解 iOS 开发中的 `use_frameworks!`

在使用 CocoaPods 管理 iOS 项目依赖时&#xff0c;开发者经常会在 Podfile 文件中看到一个配置选项&#xff1a;use_frameworks!。本文将详细介绍这个配置选项的含义&#xff0c;以及如何决定是否在项目中使用它。 一、什么是 use_frameworks! 在 CocoaPods 中引入第三方库时…

矩阵置零算法讲解

矩阵置零算法讲解 一、问题描述 给定一个 (m \times n) 的矩阵,如果一个元素为 (0) ,则将其所在行和列的所有元素都设为 (0) 。要求使用原地算法,即在不使用额外矩阵空间的情况下完成操作。 二、解题思路 暴力解法 最直观的想法是遍历矩阵,当遇到 (0) 元素时,直接将其…

二本计算机,毕业=失业?

我嘞个豆&#xff0c;二本计算机&#xff0c;毕业即失业&#xff1f;&#xff01; 今天咱们聊聊普通院校计算机专业的学生未来的发展方向。有些话可能不太中听&#xff0c;但希望大家能理性看待。 首先得承认&#xff0c;对于普通双非和二本的学生来说&#xff0c;就业率加上…

[docker基础二]NameSpace隔离实战

目录 一 实战目的 二 基础知识 1)dd 命令详解 2)mkfs命令详解 3)df命令详解 4)mount 命令详解 5)unshare命令详解 三 实战操作一(PID隔离) 四 实战操作二(MOunt隔离) 1&#xff09;创建 Mount 隔离进程 2&#xff09;在新进程里边&#xff0c;创建空白文件&#…

Day22打卡-复习

复习日 仔细回顾一下之前21天的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a; 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 泰坦尼克号人员生还预测https://www.kaggle.com/competitions/titanic/overview K…

uniapp + vue3 + 京东Nut动作面板组件:实现登录弹框组件(含代码、案例、小程序截图)

uniapp + vue3 + 京东Nut动作面板组件:实现登录弹框组件(含代码、案例、小程序截图) 代码示下,不再赘述。 动作面板组件:https://nutui-uniapp.netlify.app/components/feedback/actionsheet.html 项目背景 业务需求 描述: uniapp + vue3 + 京东Nut框架:实现登录弹框组…

C++类和对象--中阶

C类和对象中阶 01. 类的6个默认成员函数 在 C 中&#xff0c;类有 6 个特殊的默认成员函数&#xff08;不是 6 个构造函数&#xff09;&#xff0c;它们会在特定情况下由编译器自动生成。包括构造函数&#xff0c;析构函数&#xff0c;拷贝构造和赋值运算符重载&#xff0c;取…

数据签名在区块链中的独特应用与挑战

随着信息技术的飞速发展&#xff0c;分布式系统因其高效、可靠、可扩展等显著优点&#xff0c;在众多领域得到了极为广泛的应用。分布式系统通过网络将多个独立的计算节点连接在一起&#xff0c;协同完成复杂的任务&#xff0c;这种架构使得系统具备了强大的容错能力和负载均衡…

数据可视化大屏——物流大数据服务平台(二)

代码分析&#xff1a; 物流大数据平台代码分析 这是一个基于 Bootstrap 和 ECharts 构建的物流大数据平台前端页面&#xff0c;设计采用了经典的三栏布局&#xff0c;主要展示河南省及全国的物流数据可视化内容。下面从多个维度进行分析&#xff1a; 1. 页面结构分析 整体采…

Maven 处理依赖冲突

Maven处理依赖冲突 什么是依赖冲突&#xff1f;如何解决&#xff1f;Maven自动处理依赖冲突的规则路径优先原则第一声明优先原则注意 子模块覆盖父模块父模块声明dependency子模块覆盖dependency父模块声明dependencyManagement 子模块覆盖dependency父模块声明dependencyManag…

5.12第四次作业

实验要求&#xff1a;完成上图内容&#xff0c;要求五台路由器的环回地址均可以相互访问 AR1 AR2 AR3 AR4 AR5 AS 200 ospf配置 AR2 AR3 AR4 BGP配置 AR1&#xff08;AS100&#xff09; AR2&#xff08;AS200&#xff09; AR4 AR5&#xff08;AS300&#xff09; 结果

【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决

在Vivado中在always块中写逻辑时如果出现always块中的异步复位敏感词在块内部未使用的情况&#xff0c;如下例的rst&#xff1a; always (posedge clk or posedge rst) begin if(~tx_sense_flag)o_rd_adr < d1;else if((o_rd_adr d94) & (bit_cnt d7))o_rd_adr <…

Go语言——kratos微服务框架使用

文章目录 一、安装依赖二、创建项目三、初始化项目四、使用git_bash命令终端运行命令五、创建自己的项目1、修改app.proto3、internal/service/app.go4、修改internal/service/service.go文件5、创建internal/biz/content.go文件6、修改internal/biz/biz.go文件7、创建internal…

hiveserver2与beeline进行远程连接hive配置及遇到的问题

1、hiveserver2 参与用户模拟功能&#xff0c;因为开启后才能保证各用户之间的权限隔离。 1.1、配置 $HADOOP_HOME/etc/hadoop/core-site.xml <!--配置所有节点的root用户都可作为代理用户--> <property><name>hadoop.proxyuser.root.hosts</name>&…

Stable Diffusion进阶之Controlnet插件使用

前面已经对Stable Diffusion的文生图和图生图的操作界面做了详细的介绍&#xff0c;接下来会介绍Stable Diffusion的进阶部分Controlnet插件的使用。往期文章详见&#xff1a; 爆肝整理&#xff01;Stable Diffusion的完全使用手册&#xff08;一&#xff09;爆肝整理&#xff…

Multisim14使用教程详尽版--(2025最新版)

一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim&#xff1a;NI开发的SPICE标准仿真工具&#xff0c;支持模拟/数字电路混合仿真&#xff0c;内置丰富的元件库和虚拟仪器&#xff08;示波器、频谱仪等&#xff09;&#xff0c;适合教学和竞赛设计。官网&#xff1a;艾…