压缩格式选择摘要

为了在RPC的传输中减少传输的数据大小,对net.TCPConn进行了封装,实现了压缩/解压缩功能的net.Conn,可以有效的减少带宽,提升传输效率。

压缩格式选择摘要

常用的两种压缩格式:

zip 是常用的一种压缩格式,Go标准库中提供了它的实现。

snappy 是Google基于LZ77的思路用C++语言编写的非常高的速度和合理的压缩率 数据压缩与解压程序库。

定义压缩类型:

type CompressType byte

const (

// CompressNone represents no compression

CompressNone CompressType = iota

// CompressFlate represents zip

CompressFlate

// CompressSnappy represents snappy

CompressSnappy

)

重新定义net.Conn

type CompressConn struct {

net.Conn

r io.Reader

w io.Writer

compressType CompressType

}

重写方法:

func (c *CompressConn) Read(b []byte) (n int, err error) {

return c.r.Read(b)

}

func (c *CompressConn) Write(b []byte) (n int, err error) {

return c.w.Write(b)

}

小结:简单的串下压缩使用,涉及到具体的zip和snappy使用请查看以前的文章。在压缩比和速度的权衡中你可以选择zip格式压缩或者snappy格式压缩。

更多内容请关注每日编程,每天进步一点。


分享到:


相關文章: