• 编解码
    • SerializeNone
    • JSON
    • Protobuf
    • MsgPack
    • 定制编解码器

    编解码

    Example: iterator-go

    当前rpcx提供了四种内置的编解码器,你也可以定义你自己的编解码器, 如Avro等:

    1. // SerializeType defines serialization type of payload.
    2. type SerializeType byte
    3. const (
    4. // SerializeNone uses raw []byte and don't serialize/deserialize
    5. SerializeNone SerializeType = iota
    6. // JSON for payload.
    7. JSON
    8. // ProtoBuffer for payload.
    9. ProtoBuffer
    10. // MsgPack for payload
    11. MsgPack
    12. )

    服务会使用和客户端一样的编解码器,客户端使用JSON, 服务也返回 JSON 格式的数据。 rpcx 默认使用 msgpack 编解码器。

    1. var DefaultOption = Option{
    2. Retries: 3,
    3. RPCPath: share.DefaultRPCPath,
    4. ConnectTimeout: 10 * time.Second,
    5. Breaker: CircuitBreaker,
    6. SerializeType: protocol.MsgPack,
    7. CompressType: protocol.None,
    8. }

    你可以设置你的option, 选择你自己的编解码器:

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

    SerializeNone

    这种编解码器不会对数据进行编解码,并且要求数据是 []byte 类型的数据。

    JSON

    JSON是一个通用的数据交换的格式,可以应用在很多语言中。

    对性能要求不是非常高的场景,可以使用这种编解码。

    Protobuf

    Example: protobuf

    Protobuf 是一个高性能的编解码器, 由google出品, 应用在很多项目中。

    MsgPack

    默认的编解码器

    messagepack 是另外一种高性能的编解码器, 也是跨语言的编解码器。

    定制编解码器

    这个例子 gob 使用 gob作为编解码器。