编解码

例程broadcast

当前rpcx支持四种类型的编解码:

// SerializeType defines serialization type of payload.
type SerializeType byte

const (
    // SerializeNone uses raw []byte and don't serialize/deserialize
    SerializeNone SerializeType = iota
    // JSON for payload.
    JSON
    // ProtoBuffer for payload.
    ProtoBuffer
    // MsgPack for payload
    MsgPack
)

服务器和客户端使用相同的编解码协议。客户端可选设置SerializeType,默认的选项是msgpack。

var DefaultOption = Option{
    Retries:        3,
    RPCPath:        share.DefaultRPCPath,
    ConnectTimeout: 10 * time.Second,
    Breaker:        CircuitBreaker,
    SerializeType:  protocol.MsgPack,
    CompressType:   protocol.None,
}

选项在创建XClient的时候被设置:

func NewXClient(servicePath string, failMode FailMode, selectMode SelectMode, discovery ServiceDiscovery, option Option)

SerializeNone

数据没有被编解码,直接使用原始字节切片。

客户端和服务器可以使用自定义的编解码器来编码/解码负载,例如,Avro

JSON

JSON是一个通用的数据格式,可被用于多种编程语言,但是它的效率不如protobuf和messagepack。

Protobuf

Protobuf是Google开源的一个高性能的编解码器,它被用于grpc和很多项目。

MsgPack

messagepack是另一种高性能的编解码器,同时它也是跨平台的。

results matching ""

    No results matching ""