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. 实现 回调函数:

  5. 初始化客户端。 microClient := NewTeset66Sevice(服务名,client.DefaultClient)

  6. 调用远程服务。 resp, err := microClient.Call(context.TODO, &test66.Request{

​ })

  1. 将 返回的 数据, 显示到 浏览器。 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"),

)

  1. 在命令行,执行 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)

相关推荐
双叶83611 分钟前
(C++)STL标准库(vector动态数组)(list列表)(set集合)(map键值对)相关对比,基础教程
c语言·开发语言·数据结构·c++·list
爬点儿啥17 分钟前
[爬虫知识] 深入理解多进程/多线程/协程的异步逻辑
开发语言·爬虫·python·多线程·协程·异步·多进程
面朝大海,春不暖,花不开1 小时前
Java进程API详解
java·开发语言·python
亚洲第一中锋_哈达迪1 小时前
详解缓存淘汰策略:LFU
后端·缓存·golang
丁一郎学编程2 小时前
多线程的区别和联系
java·开发语言·jvm
哪里不会点哪里.2 小时前
单例模式:确保全局唯一实例
java·开发语言·单例模式
EutoCool2 小时前
Qt窗口:QToolBar、QStatusBar、QDockWidget、QDialog
开发语言·数据库·c++·嵌入式硬件·qt·前端框架
dudly2 小时前
[python] 数据拷贝浪费内存,原地修改暗藏风险:如何平衡内存使用效率与数据完整性?
开发语言·python·数据完整性·数据拷贝·内存使用率·原地修改
j_xxx404_2 小时前
c语言:字符函数和字符串函数
c语言·开发语言
nextera-void3 小时前
深入浅出 Golang:一次精神之旅
开发语言·golang·go