05 go performance - xiaoxin01/Blog GitHub Wiki

dataloader

主要思想为,减少数据库请求。

dataloader会定义一个时间段,在这个时间段内发起的多个请求,经过处理之后会合并为单个请求,比如 getUserByID(1) 和 getUserByID(2) 会合并为一个 getUsersByIDs(1, 2) 请求

dataloader github

go语言实现:

dataloader.v5

默认的时间段为16毫秒:

func NewBatchedLoader(batchFn BatchFunc, opts ...Option) *Loader {
	loader := &Loader{
		batchFn:  batchFn,
		inputCap: 1000,
		wait:     16 * time.Millisecond,
	}
⚠️ **GitHub.com Fallback** ⚠️