05 go performance - xiaoxin01/Blog GitHub Wiki
主要思想为,减少数据库请求。
dataloader会定义一个时间段,在这个时间段内发起的多个请求,经过处理之后会合并为单个请求,比如 getUserByID(1) 和 getUserByID(2) 会合并为一个 getUsersByIDs(1, 2) 请求
go语言实现:
默认的时间段为16毫秒:
func NewBatchedLoader(batchFn BatchFunc, opts ...Option) *Loader {
loader := &Loader{
batchFn: batchFn,
inputCap: 1000,
wait: 16 * time.Millisecond,
}