Skip to content

yarhoo/ngx_http_pbmsgpack_transfer_module

 
 

Repository files navigation

nginx pbmsgpack transfer module 说明

author : chenjiansen@baidu.com
date : 2014/4/16 18:00


概述

just test, ngx_pbmsgpack_transfer_module 是一个用于支持贴吧客户端长连接迁移项目的nginx扩展,其主要功能是做protobuf和msgpack的格式转换,具体是在请求的时候,将protobuf格式的post body里面的内容转成msgpack格式; 在请求输出的时候将msgpack格式转成protobuf格式。

实现层面的话,主要是设置一个access phase 和 filter phase 的钩子,采用lcs提供的protobuf/msgpack 转换lib。


指令

  1. pbmsgpak_flag : [on | off]
    context : http
    default : off
    说明:控制是否开启该模块

  2. pbmsgpack_buf_size : buffer_size
    context : http
    default : 16k
    说明 : 设置转换时候申请的buffer 大小

  3. pbmsgpack_transfer_flag : [ on | off]
    context : location
    default : off
    说明 : 请求进来的时候是否做 protobuf 到 msgpack 的转换, 需要满足如下条件的时候才会转换:

    1. 请求头部里面 x_bd_data_type 为 msgpack
    2. 请求参数里面含有cmd字段
    3. 请求里面的post body必须存在,且要求 content_type 为 multi-part form 的格式
      处理成功的时候模块会将 x_bd_data_type 设置为 protobuf
  4. pbmsgpack_filter_flag : [on|off]
    context : location
    default : off
    说明 : 请求出去的时候是否做 msgpack 到 protobuf 的转换,需要满足如下条件时候才转换:

    1. 请求返回的x_bd_data_type 必须为 : msgpack,nginx
    2. 请求参数里面含有cmd字段
      处理成功的时候会将返回的 x_bd_data_type 设置为 protobuf,nginx

变量

  1. pbmsgpack_transfer_size : 转换之后的包体大小, 如果没有转换,则为0
  2. pbmsgpack_transfer_cost : 转换包体所用的时间耗时,单位是微秒
  3. pbmsgpack_filter_size : filter(msgpack2protobuf) 之后的包体大小
  4. pbmsgpack_filter_cost : filter(msgpack2protobuf)的耗时,单位是微秒

配置demo

#http context  
pbmsgpack_flag on;  
pbmsgpack_conf_path "./conf/proto.conf";  
pbmsgpack_buf_size 128k;  

#location context  

location = /cjs_test {

pbmsgpack_transfer_flag on;
pbmsgpack_filter_flag on;
fastcgi_pass xxx;
...
}

About

a nginx module that support protobuf & msgpack format transfer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.6%
  • Perl 1.4%