什么是lz4
先了解什么是lz4
LZ4是一种无损快速压缩算法,旨在提供非常高的压缩和解压缩速度。
官网:LZ4 - Extremely fast compression
GitHub:[lz4/lz4: Extremely Fast Compression algorithm (github.com)](https://github.com/HardySimpson/zlog)
为什么要使用压缩
为什么需要使用lz4是我们首选需要回答的问题
答案非常简单
请求量过大:当某个时间点(例如开服)配置的请求量过大的时候,造成带宽流量的占用
配置太大:当某个配置数据量太大,造成单个包超过64kb时,可能会出现效率或者其他问题
(这个问题不是很确定,参看《Skynet第三方之:sproto协议》)
云风的 BLOG: 为什么 skynet 提供的包协议只用 2 个字节表示包长度 (codingnow.com)
如何使用lz4压缩
使用lz4压缩和使用zlog的方式差不多,都是需要编译成so库的形式,例如
local lz4 = require "lz4"
-- 但是使用的时候,我们一般用来压缩配置
-- 大体积配置生成 lz4 压缩数据
-- 不走 proto 协议
-- 走 json 格式
-- 压缩后发送给客户端解压
--
-- 即我们需要先把配置转换为json格式
local str = json.encode(conf)
-- 然后我们在压缩配置
local e = lz4.compress(str)
最后客户段收到数据后,在lz4解压,解压完成之后,再用json把str转为lua的table,即最终的conf配置
lz4的使用效果
对于lz4的使用场景,建议对于大的配置文件才使用
对于特别小的文件,不适合,效率并没有很大的提高
在使用的时候,建议经过严格的验证和测试,最后收获的效果来决定要不要使用,值不值得