应用层协议设计ProtoBuf/Thrift

简介: 应用层协议设计ProtoBuf/Thrift

json序列化和反序列化

       将xml,json文本反序列化为类对象或结构体对象;xml本地用得比较多,json比较通用;通用json库如cjson,rapidjson,jsoncpp;

判断消息的完整性,区分消息的边界

       1、以固定大小字节数目来分界,如每个消息100字节,对端收起100字节,就当成一个消息来解析;

       2、以特定符号来分界,如每个消息都以特定的字符如\r\n来结尾,当在字节流中读取到该字符时,则表明上一消息到此为止;

       3、固定消息头+消息体结构,这种结构中一般消息头部分是一个固定字节长度的结构,并且消息头中会有一个特定的字段指定消息体的大小,收到消息时,先接收固定字节数的头部,解析这个消息的完整长度,按此长度接收消息体。这是目前各种网络应用用的最多的消息格式;header+body

       4、在序列化后的buffer前面增加一个字符流的头部,其中有个字段存储消息总长度,根据特殊字符如\n或\0判断头部的完整性,http和redis采用的时这种方式,收到消息的时候,先判断已收到数据中是否包含结束符,收到结束符后解析消息头,解出这个消息完整长度,按此长度接收消息体;

协议安全

       1、xxtea固定key

       2、aes固定key

       3、openssl

数据压缩

       1、deflate  nginx

       2、gzip

       3、lzw

       文本可以考虑做压缩,带宽成问题的时候再去考虑;

protobuff

       protocol buffers是一种语言中立,与平台无关,可扩展的序列化数据格式,可用于通讯协议,数据存储等;

       protocol buffers在序列化数据方面,它是灵活的,高效的。相比xml, protocol buffers更加小巧,更加快速。一旦定义了要处理的数据的数据结构之后,就可以利用 protocol buffers的代码生成工具生成相关的代码。甚至可以在无需重新部署程序的情况下更新数据结构。只需使用protocol对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写;

       protocol buffers很适合做数据存储或rpc数据交换格式,可用于通讯协议,数据存储等领域的语言无关,平台无关,可扩展的序列化结构数据格式;

目录
相关文章
|
5月前
|
XML 存储 JSON
(十二)探索高性能通信与RPC框架基石:Json、ProtoBuf、Hessian序列化详解
如今这个分布式风靡的时代,网络通信技术,是每位技术人员必须掌握的技能,因为无论是哪种分布式技术,都离不开心跳、选举、节点感知、数据同步……等机制,而究其根本,这些技术的本质都是网络间的数据交互。正因如此,想要构建一个高性能的分布式组件/系统,不得不思考一个问题:怎么才能让数据传输的速度更快?
128 1
|
8月前
|
存储 负载均衡 API
跨语言的GRPC协议
【2月更文挑战第11天】
|
8月前
|
存储 JSON 编解码
IM通讯协议专题学习(十):初识 Thrift 序列化协议
本文将带你一起初步认识Thrift的序列化协议,包括Binary协议、Compact协议(类似于Protobuf)、JSON协议,希望能为你的通信协议格式选型带来参考。
161 1
|
8月前
|
存储 XML 移动开发
应用层协议设计 ProtoBuf
应用层协议设计 ProtoBuf
|
8月前
|
存储 XML JSON
Protobuf应用层协议设计
Protobuf应用层协议设计
120 0
|
存储 XML JSON
高效的网络传输协议设计protobuf
高效的网络传输协议设计protobuf
162 1
|
存储 XML JSON
应用层协议设计及ProtoBuf
应用层协议设计及ProtoBuf
120 0
|
XML 缓存 前端开发
HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?
HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?
HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?
|
存储 网络协议 Dubbo
如何设计可向后兼容的RPC协议
HTTP协议(本文HTTP默认1.X)跟RPC协议又有什么关系呢?都属于应用层协议。
135 0
|
JSON Java 编译器
Thrift的日常—协议
Thrift的日常—协议
Thrift的日常—协议

热门文章

最新文章