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

相关文章
|
2天前
|
缓存 监控 测试技术
【Go语言专栏】使用Go语言构建高性能Web服务
【4月更文挑战第30天】本文探讨了使用Go语言构建高性能Web服务的策略,包括Go语言在并发处理和内存管理上的优势、基本原则(如保持简单、缓存和并发控制)、标准库与第三方框架的选择、编写高效的HTTP处理器、数据库优化以及性能测试和监控。通过遵循最佳实践,开发者可以充分利用Go语言的特性,构建出高性能的Web服务。
|
2天前
|
中间件 Go API
【Go 语言专栏】Go 语言中的 Web 框架比较与选择
【4月更文挑战第30天】本文对比了Go语言中的四个常见Web框架:功能全面的Beego、轻量级高性能的Gin、简洁高效的Echo,以及各自的性能、功能特性、社区支持。选择框架时需考虑项目需求、性能要求、团队经验和社区生态。开发者应根据具体情况进行权衡,以找到最适合的框架。
|
3天前
|
机器学习/深度学习 前端开发 数据可视化
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
|
3天前
|
开发框架 前端开发 JavaScript
学会Web UI框架--Bootstrap,快速搭建出漂亮的前端界面
学会Web UI框架--Bootstrap,快速搭建出漂亮的前端界面
|
3天前
|
缓存 前端开发 安全
Python web框架fastapi中间件的使用,CORS跨域详解
Python web框架fastapi中间件的使用,CORS跨域详解
|
3天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
3天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
3天前
|
Python
python web框架fastapi模板渲染--Jinja2使用技巧总结
python web框架fastapi模板渲染--Jinja2使用技巧总结
|
1天前
|
安全 Go 开发者
Golang深入浅出之-Go语言中的CSP模型:深入理解并发哲学
【5月更文挑战第1天】Go语言基于CSP理论,借助goroutines和channels实现独特的并发模型。Goroutine是轻量级线程,通过`go`关键字启动,而channels提供安全的通信机制。文章讨论了数据竞争、死锁和goroutine泄漏等问题及其避免方法,并提供了一个生产者消费者模型的代码示例。理解CSP和妥善处理并发问题对于编写高效、可靠的Go程序至关重要。
7 2