Gorm
- Gorm中struct无法更新零值,会自动忽略,如果想更新零值可以使用map或者select
Kitex
定义IDL
如果我们要进行RPC,就需要知道对方的接口是什么,需要传
什么参数,同时需要知道返回值是什么样的。这时候,就需要
通过IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。
Kitex生成代码
- 使用kitex -module example -service example echo.thrift命令生成代码
桩代码结构
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 发起请求
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复用对象协议层数据解析优化