- Part Ⅰ 开发起步
- Part Ⅱ 注册中心
- Part Ⅲ 特性
- Part Ⅳ 插件
- Part Ⅴ 其它
- Part Ⅵ 网关
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.1 编解码
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论