msgpack-svrkit简介
msgpack-svrkit是一个用来生成cpp、python等多语言服务框架(skeleton)的工具,主要为了提升后台工程师的开发效率,特点如下:
基于msgpack的rpc :msgpack是一个快速精巧的二进制打包协议,支持超过50种开发语言,基于msgpack可以容易的跨语言开发
IDL描述文件 :使用msgpack-svrkit生成服务代码前,需书写IDL文件,定义服务名称、服务工作模式、rpc接口和协议、客户端分布方式等等
两种服务模式 :支持rpc和普通服务两种服务模式
多种工作模式 :支持多进程、多线程、协程工作模式
多种客户端分布方式:暂时只支持分片、一致性哈希两种分布方式
IDL描述文件
IDL描述文件是一个json文件,主要包括rpc协议、客户端分布、rpc服务描述、普通服务描述四部分:
1. rpc协议
定义rpc协议数据结构,对应描述文件中的protos字段
name:定义数据结构的名称
fields:定义数据结构包含的字段
fields.name:定义一个字段的名称
fields.type:定义一个字段的数据类型,支持类型有string、bool、int、float、list、dict、自定义数据结构
fields.subtype:定义一个字段数据类型的子类型,支持子类型有string、bool、int、float、自定义数据结构
如下json片段定义了包含3个字段、名叫echomsg的数据结构,其中vec_string是个字符串数组、dict_float是key为整形、value为浮点型的字典
另外一个数据结构response支持数据结构嵌套,内部嵌套了之前定义的echomsg
"protos": [{
"name": "echomsg",
"fields": [{
"name": "my_bool",
"type": "bool"
},{
"name": "vec_string",
"type": "list",
"subtype": "string"
},{
"name": "dict_float",
"type": "dict",
"subtype": "int:float"
}]
},{
"name": "response",
"fields": [{
"name": "echo",
"type": "echomsg"
},{
"name": "vec_echo",
"type": "list",
"subtype": &#