msgpack
It’s like JSON.but fast and small.
MessagePack 是一种高效的二进制序列化格式。它允许您在多种语言(如 JSON)之间交换数据。但它更快更小。小整数被编码为一个字节,典型的短字符串除了字符串本身之外只需要一个额外的字节
----来自msgpack.org
用途
- 一是Space-efficient storage for Memcache entries (Pinterest),节省空间类型的mamcache应用;
- 另一个是用于RPC传输, This use case is fairly close to my original intent. When one is designing an RPC system, one of the first tasks is to specify and implement a communication protocol. This process can get pretty hairy as you need to worry about a lot of low-level issues like Endian-ness. By using MessagePack, one can skip designing and implementing a communication protocol entirely and accelerate development.
laradock 安装
我想在php cli 的模式下安装msgpack,所以在workspace/Dockerfile 下添加,如果需要在fpm下运行则需要在php-fpm的Dockerfile添加如下代码
###########################################################################
# Msgpack Pack:
###########################################################################
ARG INSTALL_MSGPACK=false
RUN if [ ${INSTALL_MSGPACK} = true ]; then \
pecl install msgpack \
docker-php-ext-enable msgpack \
;fi
docker-compose.yml 添加 - INSTALL_MSGPACK=${WORKSPACE_INSTALL_MSGPACK}
workspace:
build:
context: ./workspace
args:
...
- INSTALL_MSGPACK=${WORKSPACE_INSTALL_MSGPACK}
- http_proxy
- https_proxy
- no_proxy
.env 添加 WORKSPACE_INSTALL_MSGPACK=ture
...
WORKSPACE_INSTALL_MSGPACK=true
...
运行docker-composer up -d --build workspace
执行成功后登录workspace 查看是否安装成功
php -m | grep msgpack
总结
我们主要结合redis 的订阅服务,通过msgpack压缩消息,实现客户端和服务的消息通信有两个好处
1.减少redis的内存占用
2.较少带宽