发明内容
云接入点控制器中分布式数据的处理方法及装置,能够提高系统数据传输的性能和效率,并改善模块接口升级过程的稳定性。
为实现上述目的,本发明实施方式提供一种云接入点控制器中分布式数据的处理方法,所述方法包括:构建用于描述数据存储结构的结构体文件;通过预设编译器对所述结构体文件进行编译,以生成各个类;将生成的各个类应用至各个接口处,并根据调用目标接口的调用方的业务需求,生成与所述业务需求相适配的消息内容;将所述消息内容填充至相关联的各个类的对象中,序列化并保存填充了消息内容的对象;调用所述目标接口的调用方获取序列化的数据流,并将所述数据流进行反序列化,以得到待处理的目标数据。
进一步地,所述结构体文件中包括自定义消息,所述自定义消息中包括至少一个消息字段,其中,在序列化和反序列化之前,各个所述消息字段均被赋予数值,赋予的数值用于确定消息字段在序列化后的二进制数据中所处的位置。
进一步地,在同一个自定义消息中的消息字段被赋予的数值各不相同。
进一步地,通过预设编译器对所述结构体文件进行编译包括:从所述结构体文件所在的目录读取所述结构体文件,并通过预设编译器对读取的所述结构体文件进行编译;基于所述结构体文件生成预设语言代码,并将所述预设语言代码存放至预设目录处。
进一步地,在各个接口之间传输的数据遵循二进制的Protocol Buffers协议。
为实现上述目的,本发明另一方面提供一种云接入点控制器中分布式数据的处理装置,所述装置包括:结构体文件构建单元,用于构建用于描述数据存储结构的结构体文件;编译单元,用于通过预设编译器对所述结构体文件进行编译,以生成各个类;消息内容生成单元,用于将生成的各个类应用至各个接口处,并根据调用目标接口的调用方的业务需求,生成与所述业务需求相适配的消息内容;序列化单元,用于将所述消息内容填充至相关联的各个类的对象中,序列化并保存填充了消息内容的对象;反序列化单元,用于调用所述目标接口的调用方获取序列化的数据流,并将所述数据流进行反序列化,以得到待处理的目标数据。
本发明通过构建自定义的结构体文件,将所述结构体文件编译为各个类,并将产生的消息内容填充至类的对象中,从而能够生成序列化的数据流。通过对所述序列化的数据流进行反序列话,从而可以得到待处理的数据。进一步地,本发明中的各个接口之间可以通过二进制的Protocol Buffers协议进行数据传输,从而有效地节约了带宽,并且具备更高效的解析能力,同时还能够支持接口协议的向前兼容和向后兼容,从而能够提高系统数据传输的性能和效率,并改善模块接口升级过程的稳定性。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
请参阅图1,本发明实施方式提供一种云接入点控制器中分布式数据的处理方法,所述方法包括以下步骤。
S1:构建用于描述数据存储结构的结构体文件。
在本实施方式中,可以基于Protocol Buffers协议构建用于描述数据存储结构的结构体文件。具体地,所述结构体文件中可以包括自定义消息,所述自定义消息中可以包括关键字、名称、前缀、字段名以及赋值等元素。例如,进行消息定义的关键字可以是message;定义消息的名称可以是DeviceInfo、PackageMessage等;所述前缀可以用于标识必要字段;所述赋值可以表示不同的字段在序列化后的二进制数据中的位置。例如,所述前缀可以是required,在所述自定义消息中,可以包括两个必要字段:manufacture和oui,其中,manufacture的赋值为1,oui的赋值为2,那么在序列化后的二进制数据中,oui字段编码后的数据一定位于manufacture字段编码后的数据之后。
由上可见,所述结构体文件中可以包括自定义消息,所述自定义消息中可以包括至少一个消息字段,其中,在序列化和反序列化之前,各个所述消息字段均被赋予数值,赋予的数值用于确定消息字段在序列化后的二进制数据中所处的位置。此外,为了能够通过位置区别不同的消息字段,在同一个自定义消息中的消息字段被赋予的数值各不相同。
S2:通过预设编译器对所述结构体文件进行编译,以生成各个类。
在本实施方式中,可以通过Protocol Buffers的编译器protoc,对所述结构体文件进行编译,生成相关的各个类。具体地,在利用编译器编译时,可以提供待编译的结构体文件所在的目录,并且指定需要生成的其它语言代码的数量。在本实施方式种,可以通过字符串向编译器下达编译指令。具体地,待编译的结构体文件的目录可以通过proto_path命令来指定。生成的其它语言代码可以是c++语言、java语言、python代码等。在将结构体文件转换为其它语言代码时,还可以指定转换后的代码所存放的目录。
由上可见,在本实施方式中,可以从所述结构体文件所在的目录读取所述结构体文件,并通过预设编译器对读取的所述结构体文件进行编译,同时还可以基于所述结构体文件生成预设语言代码,并将所述预设语言代码存放至预设目录处。
S3:将生成的各个类应用至各个接口处,并根据调用目标接口的调用方的业务需求,生成与所述业务需求相适配的消息内容。
在本实施方式中,各个接口可以使用生成的相关类,这样,在产生业务需求时,可以调用相关的接口。具体地,生成的各个类可以预先应用至各个接口处,这样,可以根据调用目标接口的调用方的业务需求,生成与所述业务需求相适配的消息内容。
S4:将所述消息内容填充至相关联的各个类的对象中,序列化并保存填充了消息内容的对象。
在本实施方式中,可以将生成的消息内容填充至相关联的各个类的对象中,并调用build方法,序列化并保存填充了消息内容的对象,从而可以通过网络传送序列化的数据流。
S5:调用所述目标接口的调用方获取序列化的数据流,并将所述数据流进行反序列化,以得到待处理的目标数据。
在本实施方式中,接口的调用方获取到序列化的数据流之后,便可以将所述数据流进行反序列化,以得到待处理的目标数据,进而可以对所述目标数据进行处理,从而实现分布式数据的处理过程。
在本实施方式中,可以在各个接口之间传输的数据遵循二进制的ProtocolBuffers协议。protocol buffer是google的一个开源项目,它是一种用于序列化结构化数据的二进制协议。它具有灵活、高效、自动化的特点。类似于XML,但是比XML更小巧、快捷、简单,相比XML有以下特点。
1)高性能:比XML快20-100倍。
2)体积小:比XML小3-10倍。
3)使用简单,只需要一个数据存储格式文件,可以在不同语言中使用。
4)兼容性好:可以向后兼容(当模块B升级了之后,它能够正确识别模块A发出的老版本的协议),可以向前兼容(当模块A升级了之后,模块B能够正常识别模块A发出的新版本的协议)。
请参阅图2,本发明实施方式还提供一种云接入点控制器中分布式数据的处理装置,所述装置包括:
结构体文件构建单元,用于构建用于描述数据存储结构的结构体文件;
编译单元,用于通过预设编译器对所述结构体文件进行编译,以生成各个类;
消息内容生成单元,用于将生成的各个类应用至各个接口处,并根据调用目标接口的调用方的业务需求,生成与所述业务需求相适配的消息内容;
序列化单元,用于将所述消息内容填充至相关联的各个类的对象中,序列化并保存填充了消息内容的对象;
反序列化单元,用于调用所述目标接口的调用方获取序列化的数据流,并将所述数据流进行反序列化,以得到待处理的目标数据。
在本发明一个实施方式中,所述结构体文件中包括自定义消息,所述自定义消息中包括至少一个消息字段,其中,在序列化和反序列化之前,各个所述消息字段均被赋予数值,赋予的数值用于确定消息字段在序列化后的二进制数据中所处的位置。
在本发明一个实施方式中,在同一个自定义消息中的消息字段被赋予的数值各不相同。
在本发明一个实施方式中,所述编译单元包括:
目录读取模块,用于从所述结构体文件所在的目录读取所述结构体文件,并通过预设编译器对读取的所述结构体文件进行编译;
代码存放模块,用于基于所述结构体文件生成预设语言代码,并将所述预设语言代码存放至预设目录处。
在本发明一个实施方式中,在各个接口之间传输的数据遵循二进制的ProtocolBuffers协议。
本发明通过构建自定义的结构体文件,将所述结构体文件编译为各个类,并将产生的消息内容填充至类的对象中,从而能够生成序列化的数据流。通过对所述序列化的数据流进行反序列话,从而可以得到待处理的数据。进一步地,本发明中的各个接口之间可以通过二进制的Protocol Buffers协议进行数据传输,从而有效地节约了带宽,并且具备更高效的解析能力,同时还能够支持接口协议的向前兼容和向后兼容,从而能够提高系统数据传输的性能和效率,并改善模块接口升级过程的稳定性。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。
最后应说明的是:上面对本发明的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本发明的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本发明旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。