天津常规网站建设系列,比较好的网站设计公司,杭州手机建设网站,网站做icp备案有哪些好处RPC方式的优化 聊天系统的中RPC的选择Jsonprotobufmsgpack 聊天系统的中RPC的选择
在RPC方式中#xff0c;常用的三种方式#xff1a;Json#xff0c;protobuf#xff0c;Msgback
设定一个简单的加和服务#xff0c;客户端发送一个list给服务端#xff0c;需要将list的… RPC方式的优化 聊天系统的中RPC的选择Jsonprotobufmsgpack 聊天系统的中RPC的选择
在RPC方式中常用的三种方式JsonprotobufMsgback
设定一个简单的加和服务客户端发送一个list给服务端需要将list的数据都加和之后返回加和的结果
在本地机器中不使用RPC方式
int sum(list* node){计算加和值return res;
}执行10000考虑“低数据量”和“高数据量”的两个场景 低数据量node [1,2] ,time:1.93ms 高数据量node [1,2,3,…], time:52ms Json
Json是使用最广泛的序列化方式广泛应用于前后端之间的通信 优点可读性高兼容性广泛 {“name“:”heyue“,”sex“:”\u7537“,”company“:”sina“,”age“:30} 缺点安全性低 如果使用json进行序列化执行同样的次数耗时 低数据量nums[1,2]: 18590.62ms 高数据量nums[1,2,3…,1000]: 20385.60ms protobuf
protobuf是一种比json性能更高的序列化方式但是可读性要差一些由于序列化之后数据是二进制的所以其可读性会比较差
使用同样的执行次数 低数据量nums[1,2]: 8654.08ms 高数据量nums[1,2,3…,1000]: 10014.39ms protobuf的使用流程 1、编写一个proto文件其中定义需要处理的结构化数据类似于一个结构体内部定义了不同数据类型 2、编译proto文件生成C文件编译结果为一个.pb.h文件和一个.pb.c文件 3、编写main代码文件填充proto文件中的结构体并且将其序列化到一个数组中
msgpack
msgpcak也是一种二进制的传输协议比json更小更快同时整体性能比protobuf更高也不需要预先设定proto文件也没有相应的数据校验。
优点性能高速度快序列化之后的数据包小 缺点由于没有数据校验使得项目的维护成本比较高
其执行10000次的耗时 低数据量nums[1,2]: 1111.17ms 高数据量nums[1,2,3…,1000]: 1610.63ms 以下是三种序列化方式柱状图的对比结果 可以看到Protobuf相比Json快了1倍而msgpack相比protobuf快了10倍这也就是说明了各自的性能差距但是我们不能只看性能有时候对性能的要求不是那么高的时候我们还需要看是否高效好用。
由于protobuf比json的可读性差那么如果需要可读性很好但是对性能要求不是那么高的场景下我们就可以使用Json而在前后端之间通信最常用的就是Json(为了可读性好)
由于msgpack相比protubuf少了数据校验所以需要相互协作的场景下就适合使用protobuf而在后端不同服务之间的协作一般采用protobuf。