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

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

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)

相关文章:

  • 【Bootstrap V4系列】学习入门教程之 组件-表单(Forms)高级用法(二)
  • Java数据结构——二叉树
  • 封装 RabbitMQ 消息代理交互的功能
  • 【C++ Qt】容器类(GroupBox、TabWidget)内附思维导图 通俗易懂
  • 【算法-哈希表】常见算法题的哈希表套路拆解
  • 【Linux系列】跨平台安装与配置 Vim 文本编辑器
  • SierraNet协议分析使用指导[RDMA]| 如何设置 NVMe QP 端口以进行正确解码
  • Eclipse 插件开发 6 右键菜单
  • Web自动化测试入门详解
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)27
  • 使用谱聚类将相似度矩阵分为2类
  • OpenAI的商业化之路:从非营利到盈利的转型
  • 【金仓数据库征文】金仓数据库KingbaseES: 技术优势与实践指南(包含安装)
  • 蓝牙SDP协议概述
  • 5.8线性动态规划2
  • gitkraken 使用教程
  • JS逆向-7881游戏平台Lb-Sign参数和Lb-Timestamp参数
  • 【SpringBoot】从环境准备到创建SpringBoot项目的全面解析.
  • 数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall
  • 基础语法(二)
  • 婚姻登记“全国通办”首日观察:数据多跑路,群众少跑腿
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 《中国人民银行业务领域数据安全管理办法》发布,6月30日起施行
  • 开局良好,我国第一季度广告业务收入保持较快增速
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话