geeRPC

通信格式

1
| Option{MagicNumber: xxx, CodecType: xxx} | Header{ServiceMethod ...} | Body interface{} || <------      固定 JSON 编码      ------>  | <-------   编码方式由 CodeType 决定   ------->|

ast的作用 abstract Synctax tree

bufio.Writer 的作用

bufio.Writer 是 Go 语言标准库 bufio 包中的一个类型,它提供了带缓冲的写操作。使用缓冲区可以减少实际的 I/O 操作次数,从而提高性能,特别是在涉及大量小数据块的写操作时。

详细解释

1
2
3
4
5
6
type GobCodec struct {
conn io.ReadWriteCloser // 底层连接,用于实际的读写操作
buf *bufio.Writer // 缓冲写入器,提高写操作性能
dec *gob.Decoder // 解码器,用于解码 gob 数据
enc *gob.Encoder // 编码器,用于编码 gob 数据
}

buf *bufio.Writer

buf 是一个 bufio.Writer,它包装了 conn 的写操作。通过 bufio.Writer,数据首先写入到内存缓冲区,当缓冲区满时或调用 Flush 方法时,数据才会实际写入到底层连接中。这种做法有以下几个优点:

  • 减少系统调用次数:写入缓冲区比直接写入底层连接更快,因为减少了系统调用的次数。
  • 提高写操作效率:在需要频繁写入小块数据时,缓冲区可以合并多个小块数据进行一次写入,减少了网络传输的开销。
  • 改善性能:通过减少实际的 I/O 操作次数,提高了整体性能。

geeRPC
http://example.com/2024/05/16/geeRPC/
作者
Forrest
发布于
2024年5月16日
许可协议