Go 框架三件套详解(Web/RPC/ORM)

简介: Go 框架三件套详解(Web/RPC/ORM)
+关注继续查看

Gorm

  • Gorm中struct无法更新零值,会自动忽略,如果想更新零值可以使用map或者select

Kitex

定义IDL

如果我们要进行RPC,就需要知道对方的接口是什么,需要传
什么参数,同时需要知道返回值是什么样的。这时候,就需要
通过IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。

image.png

Kitex生成代码

  • 使用kitex -module example -service example echo.thrift命令生成代码

桩代码结构

image.png

build.sh :构建脚本
kitex gen :IDL内容相关的生成代码,主要是基础的Server/Client代码。
main.go程序入口
handler.go用户在该文件里实现IDL service定义的方法

Kitex基本使用

package main
import (
"context
"example/kitex_gen/api"
}
// EchoImpl implements the last service interface defined in the IDL.

type EchoImpl struct{}

// Echo implements the EchoImpl interface.
func (s *EchoImpl) Echo(ctx context.Context,req *api.Request)(resp *api.Response,err error){
    // TOD0: Your code here. . .   
return
}
  • Client 发起请求

image.png

Hertz基本使用

  • Hertz提供了GET、POST、PUT、DELETE、ANY 等方法用于注册路由。
  • Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由
    899
  • Hertz提供了Bind、Validate、BindAndValidate 函数用于进行参数绑定和校验
  • Hertz的中间件主要分为客户端中间件与服务端中间件,如下展示一个服务端中间件。
  • Hertz提供了代码生成工具Hz,通过定义IDL(inteface description language )文件即可生成对应的基础服务代码。

Hertz性能

  • 网络库Netpoll
  • Json编解码Sonic
  • 使用sync.Pool复用对象协议层数据解析优化

Hertz生态

image.png

相关文章
|
15天前
|
SQL 关系型数据库 MySQL
GO web 开发 实战三,数据库预处理
GO web 开发 实战三,数据库预处理
|
15天前
|
SQL 安全 Go
Go ORM 干啥的?
Go ORM 干啥的?
|
15天前
|
关系型数据库 MySQL Go
GO web 开发 实战二,数据库相关
GO web 开发 实战二,数据库相关
|
15天前
|
JSON Cloud Native Go
GO 语言 Web 开发实战一
GO 语言 Web 开发实战一
|
2月前
|
网络协议 应用服务中间件 Linux
Go 语言 Web 应用怎么使用 Nginx 部署?
Go 语言 Web 应用怎么使用 Nginx 部署?
24 0
|
2月前
|
负载均衡 Go 数据库
Go 语言基于 Go kit 开发 Web 项目
Go 语言基于 Go kit 开发 Web 项目
20 0
|
2月前
|
关系型数据库 MySQL Go
Go语言微服务框架 - 8.Gormer迭代-定制专属的ORM代码生成工具
我们对比一下GORM库提供的`gorm.Model`,它在新增、修改时,会自动修改对应的时间,这个可以帮我们减少很多重复性的代码编写。这里,我就针对现有的gormer工具做一个示例性的迭代。
22 0
|
2月前
|
前端开发 JavaScript Go
深入探讨前后端之争:揭秘Go语言在未来全栈Web开发中的关键角色与价值
深入探讨前后端之争:揭秘Go语言在未来全栈Web开发中的关键角色与价值
20 0
|
2月前
|
前端开发 关系型数据库 Go
Go语言学习路线 - 5.基础篇:从一个web项目来谈Go语言的技能点
经过了 入门篇 的学习,大家已经初步了解Go语言的语法,也能写常见的代码了。接下来,我们就从一个Web项目入手,看看一些常见的技能与知识吧。 我们先简单地聊一下这个Web项目的背景:我们要做的是一个简单的web系统 ,有前端同学负责界面的开发,后端不会考虑高并发等复杂情况。
29 0
|
4月前
|
SQL JavaScript 关系型数据库
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多