返回介绍

3.1 编解码

发布于 2020-10-24 07:04:29 字数 3810 浏览 1094 评论 0 收藏 0

Example: iterator-go

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

// 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
)

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

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

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

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作为编解码器。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文