本申请涉及计算机,特别是涉及一种通信协议数据序列化方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、随着计算机技术和网络技术的发展,出现了通信协议技术,通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。
2、然而目前的通信过程中,例如在内容分发网络的通信过程中,需要先在内存块的偏移位置序列化业务协议,并在另一内存块序列化通信协议头部,并将序列化后的通信协议头部拷贝至前一内存块,再将完整的资源包拷贝至网络收发的内存块,这个过程至少需要拷贝两次资源,从而影响服务器的通信性能。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高通信性能的通信协议数据序列化方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种通信协议数据序列化方法。所述方法包括:
3、获取业务通信请求对应的业务协议字段数据,所述业务通信请求用于发送所述业务协议字段数据,或者请求所述业务协议字段数据;
4、确定所述业务协议字段数据的数据长度;
5、基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度;
6、分配所述通信协议包长度的内存至所述业务通信请求的通信线程;
7、将所述通信协议头部和所述业务协议字段数据以序列化形式拷贝至所述内存,得到序列化的通信协议数据。
8、第二方面,本申请还提供了一种通信协议数据序列化装置。所述装置包括:
9、请求接收模块,用于获取业务通信请求对应的业务协议字段数据,所述业务通信请求用于发送所述业务协议字段数据,或者请求所述业务协议字段数据;
10、协议长度确定模块,用于确定所述业务协议字段数据的数据长度;
11、通信协议确定模块,用于基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度;
12、内存分配模块,用于分配所述通信协议包长度的内存至所述业务通信请求的通信线程;
13、协议序列化模块,用于将所述通信协议头部和所述业务协议字段数据以序列化形式拷贝至所述内存,得到序列化的通信协议数据。
14、第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
15、获取业务通信请求对应的业务协议字段数据,所述业务通信请求用于发送所述业务协议字段数据,或者请求所述业务协议字段数据;
16、确定所述业务协议字段数据的数据长度;
17、基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度;
18、分配所述通信协议包长度的内存至所述业务通信请求的通信线程;
19、将所述通信协议头部和所述业务协议字段数据以序列化形式拷贝至所述内存,得到序列化的通信协议数据。
20、第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
21、获取业务通信请求对应的业务协议字段数据,所述业务通信请求用于发送所述业务协议字段数据,或者请求所述业务协议字段数据;
22、确定所述业务协议字段数据的数据长度;
23、基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度;
24、分配所述通信协议包长度的内存至所述业务通信请求的通信线程;
25、将所述通信协议头部和所述业务协议字段数据以序列化形式拷贝至所述内存,得到序列化的通信协议数据。
26、第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
27、获取业务通信请求对应的业务协议字段数据,所述业务通信请求用于发送所述业务协议字段数据,或者请求所述业务协议字段数据;
28、确定所述业务协议字段数据的数据长度;
29、基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度;
30、分配所述通信协议包长度的内存至所述业务通信请求的通信线程;
31、将所述通信协议头部和所述业务协议字段数据以序列化形式拷贝至所述内存,得到序列化的通信协议数据。
32、上述通信协议数据序列化方法、装置、计算机设备、存储介质和计算机程序产品,通过在接收业务通信请求后,提取出业务通信请求的业务协议字段数据,得到通信过程的基础数据,而后通过确定所述业务协议字段数据的数据长度;确定需要序列化的业务协议部分的长度,并基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度,在得到业务协议字段数据的数据长度即可得到通信协议头部,并确定整个通信协议包的长度,最后则可直接分配通信协议包长度的内存至所述业务通信请求的通信线程,并将通信协议头部和所述业务协议字段数据拷贝至所述内存,完成通信过程通信协议数据的序列化处理,得到序列化的通信协议数据。本实施例中,通过预处理出业务协议字段数据序列化后长度,及依赖于业务协议字段数据长度的通信协议包长度,从而可以在一块内存上直接对通信协议数据的序列化处理,即只需要一次拷贝就可以完成通信协议数据的序列化处理,可以有效提高通信协议数据序列化的效率,从而提高通信性能。
1.一种通信协议数据序列化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述确定所述业务协议字段数据的数据长度包括:
3.根据权利要求2所述的方法,其特征在于,所述分别对所述各业务协议字段进行字段长度识别处理,得到不同业务协议字段的数据长度包括:
4.根据权利要求3所述的方法,其特征在于,所述字段值的字段类型包括整数型;
5.根据权利要求3所述的方法,其特征在于,所述字段值的字段类型包括整数型;
6.根据权利要求5所述的方法,其特征在于,所述确定所述整数型字段值的数值区间包括:
7.根据权利要求6所述的方法,其特征在于,所述基于所述平均数对数的数值区间查找所述整数型字段值的数值区间包括:
8.根据权利要求3所述的方法,其特征在于,所述字段值的字段类型包括枚举型;
9.根据权利要求1所述的方法,其特征在于,所述基于所述业务协议数据的数据长度得到通信协议包头部,并确定通信协议包长度包括:
10.根据权利要求1至9中任意一项所述的方法,其特征在于,所述获取业务通信请求对应的业务协议字段数据包括:
11.根据权利要求1至9中任意一项所述的方法,其特征在于,所述获取业务通信请求对应的业务协议字段数据还包括:
12.一种通信协议数据序列化装置,其特征在于,所述装置包括:
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。