feat(tasks): refactor tiny_log streaming compression to use ZSTD with zstd: prefix

This commit is contained in:
duorameng
2026-07-09 20:25:39 +08:00
parent 290b5a002a
commit 9cc5ff6642
2 changed files with 23 additions and 4 deletions
+4 -4
View File
@@ -265,8 +265,8 @@ func (l *TinyLog) CompressAndCleanup() (string, error) {
b64Writer := base64.NewEncoder(base64.StdEncoding, &buf) b64Writer := base64.NewEncoder(base64.StdEncoding, &buf)
// 使用 Pool 优化压缩 // 使用 Pool 优化压缩
zw := utils.GetZlibWriter(b64Writer) zw := utils.GetZstdWriter(b64Writer)
defer utils.PutZlibWriter(zw) defer utils.PutZstdWriter(zw)
// 获取文件大小 // 获取文件大小
stat, err := f.Stat() stat, err := f.Stat()
@@ -295,7 +295,7 @@ func (l *TinyLog) CompressAndCleanup() (string, error) {
} }
} }
// 流处理: 文件 -> Zlib -> Base64 -> 缓冲区 // 流处理: 文件 -> Zstd -> Base64 -> 缓冲区
if _, err := io.Copy(zw, f); err != nil { if _, err := io.Copy(zw, f); err != nil {
return "", err return "", err
} }
@@ -308,7 +308,7 @@ func (l *TinyLog) CompressAndCleanup() (string, error) {
return "", err return "", err
} }
return buf.String(), nil return "zstd:" + buf.String(), nil
} }
// ReadLastLines 返回日志的最后 n 行 // ReadLastLines 返回日志的最后 n 行
+19
View File
@@ -31,6 +31,25 @@ func PutZlibWriter(zw *zlib.Writer) {
zlibWriterPool.Put(zw) zlibWriterPool.Put(zw)
} }
var zstdEncoderPool = sync.Pool{
New: func() interface{} {
zw, _ := zstd.NewWriter(nil)
return zw
},
}
// GetZstdWriter 从对象池中获取 zstd 写入器并定向到 w
func GetZstdWriter(w io.Writer) *zstd.Encoder {
zw := zstdEncoderPool.Get().(*zstd.Encoder)
zw.Reset(w)
return zw
}
// PutZstdWriter 将 zstd 写入器还回对象池
func PutZstdWriter(zw *zstd.Encoder) {
zstdEncoderPool.Put(zw)
}
var ( var (
zstdEncoder *zstd.Encoder zstdEncoder *zstd.Encoder
zstdDecoder *zstd.Decoder zstdDecoder *zstd.Decoder