Netty核心——Google Protobuf篇(十九)

编码和解码的基本介绍

  1. 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时需要解码。
  2. codec(编解码器)的组成部分有两个: decoder(解码器)和encoder(编码器)。decoder(解码器)负责把字节码数据转换成业务数据,(编码器)encoder负责把业务数据转换成字节码数据。

Netty本身的编码解码的机制和问题分析

  1. Netty提供了一些codec(编解码器)
    • 编码器
      1. StringEncoder,对字符串数据进行编码
      2. ObjectEncoder,对Java对象进行编码
    • 解码器
      1. StringDecoder,对字符串数据进行解码
      2. ObjectDecoder,对Java对象进行解码
  2. Netty自带的ObjectDecoder和ObjectEncoder可以用来实现POJO对象或各种业务对象的编码和解码,底层使用的仍是Java序列化技术,而Java序列化技术本身效率就不高,存在如下问题
    • 无法跨语言
    • 序列化后的体积太大,是二进制编码的5倍多。
    • 序列化性能太低

Protobuf

  1. Protobuf是Google的开源项目,全称Google Protocol Buffers,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC[远程过程调用 remote procedure call] 数据交换格式。
  2. 目前很多公司 http+json  tcp+protobuf
  3. 以message的方式管理数据
  4. 支持跨平台、跨语言,即[客户端和服务器端可以是不同的语言编写的] (支持目前绝大多数语言,例如 C++、C#、Java、python 等)
  5. 高性能,高可靠性
  6. 使用protobuf编译器能自动生成代码,Protobuf是将类的定义使用 .proto文件进行描述。说明,在idea 中编写 .proto 文件时,会自动提示是否下载 ptotot 编写插件,可以让语法高亮。

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值