tRPC-Go 中的 codec
模块的 FrameHead
的 construct
方法实现了 tRPC 协议栈的构建过程:
// construct 构造整个帧的二进制数据
func (h *FrameHead) construct(header, body []byte) ([]byte, error) {
headerLen := len(header)
if headerLen > math.MaxUint16 {
return nil, errHeadOverflowsUint16
}
// ... 忽略具体代码
return buf, nil
}
图形化,则整个帧的结构设计为:
其中:
trpc.RequestProtocol
;codec.DefaultMaxFrameSize = 10*1024*1024
,即 10MB,但是因为是公开访问的变量,应用可以把这个数值改大,以支持大小超过 10MB 的帧,但是估计实际中,没有多少业务会有这个需要。另外虽然可以调大 DefaultMaxFrameSize
的值,但是也不能突破 32 位长度,亦即 4GB,相信这种可能性几乎没有。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。