【Netty基础】protobuf详解

本文详细介绍了protobuf协议,包括数据类型、用法、实例,并探讨了protobuf在Netty中的应用。讲解了Netty中如何使用protobuf进行编解码,通过示例展示了protobuf在实际项目中的运用,以及在Netty框架下的工作原理。
摘要由CSDN通过智能技术生成

前言

我在上篇博文中简单介绍了一下protobuf,由于protobuf是Netty默认的序列化协议,再说它的性能也很高,接下来就详细的说一下protobuf协议!

引入

Netty为什么要提供编解码框架

作为一个高性能的异步、NIO通信框架,编解码框架是Netty的重要组成部分。

Netty逻辑架构图

这里写图片描述

  • 从网络读取的inbound消息,需要经过解码,将二进制的数据报转换成应用层协议消息或者业务消息,才能够被上层的应用逻辑识别和处理;同理,用户发送到网络的outbound业务消息,需要经过编码转换成二进制字节数组(对于Netty就是ByteBuf)才能够发送到网络对端。

  • 编码和解码功能是NIO框架的有机组成部分,无论是由业务定制扩展实现,还是NIO框架内置编解码能力,该功能是必不可少的。

  • 为了降低用户的开发难度,Netty对常用的功能和API做了装饰,以屏蔽底层的实现细节。编解码功能的定制,对于熟悉Netty底层实现的开发者而言,直接基于ChannelHandler扩展开发,

  • Netty针对编解码功能,它既提供了通用的编解码框架供用户扩展,又提供了常用的编解码类库供用户直接使用。在保证定制扩展性的基础之上,尽量降低用户的开发工作量和开发门槛,提升开发效率。

Netty预置的编解码功能列表如下:base64、Protobuf、JBoss Marshalling等。

下图来自Netty官网:GitHub地址—>codec源码

这里写图片描述

注:Netty默认的编解码协议是protobuf


protobuf的数据类型

protobuf 数据类型 描述 Java 类型
bool 布尔类型 boolean
double 64位浮点数 double
float 32为浮点数 float
int32 32位整数 int
int64 无符号32位整数 long
uint32 64位整数 int
uint64 64为无符号整 long
sint32 32位整数,处理负数效率更高 int
sint64 64位整数 处理负数效率更高 long
fixed32 32位无符号整数 int
fixed64 64位无符号整数 long
sfixed32 32位整数、能以更高的效率处理负数 int
sfixed64 64为整数 long
string 只能处理 ASCII字符 String
bytes 用于处理多字节的语言字符、如中文 ByteString
enum 可以包含一个用户自定义的枚举类型uint32 enum
message
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值