协议转换方法、存储介质及计算机设备与流程
本技术涉及物联网,尤其涉及一种协议转换方法、存储介质及计算机设备。
背景技术:
1、在现代智慧畜牧物联网系统中,为打通养殖现场设备与上层管理平台之间的数据链路,普遍采用“云-边-端”三层架构。作为“承上启下”的关键枢纽,边缘计算节点向下需接入养殖场内各类异构硬件设备,如基于低功耗蓝牙网状网络的智能饲喂器、环境传感器等,这些设备通常采用自定义的紧凑型数据协议进行通信;向上则需对接多个功能各异或来源不同的云端管理平台,如养殖管理平台、智慧农业平台或第三方合作平台。由于设备侧与平台侧各自独立演化,双方约定的数据格式、字段层级、枚举定义和语义映射均各不相同,形成了双向协议异构的复杂局面。例如,设备上报的报警状态消息的消息类型编码、状态字段取值与平台所期望接收的数据结构完全不一致。为了在这种异构环境下实现数据的双向流通,业界最常用的方法是开发人员在各个消息处理器的业务代码中,针对每一种具体的数据格式转换需求,手工编写紧耦合的过程式转换逻辑,以逐字段赋值和条件分支的方式完成数据在两个异构协议之间的翻译与组装。
2、然而,目前这种将协议转换逻辑与业务处理逻辑通过硬编码紧密耦合的实现方式,在实际应用中暴露出诸多明显的局限性与技术问题。首先,转换逻辑散落内嵌于数十个不同的消息处理器中,导致代码耦合度高,任何一侧协议的微小变更都需要牵动多个处理器逐一排查和修改,回归测试范围大,维护风险极高。其次,冗余现象严重,大量共性的基础转换逻辑(如时间格式转换、枚举值映射)在不同处理器中被重复编写,不仅增加了代码量,还降低了系统的整体一致性。再者,常规开发往往只关注数据上报的单向转换,当需要实现下行指令的反向转换时,又需重新编写一套逻辑相逆但功能相近的代码,重复性开发效能低下。此外,系统的扩展性明显不足,当需要对接一个新的平台或适配一种新的设备协议时,往往只能在现有代码中追加更多条件分支或创建新的处理类,导致系统日益臃肿,新功能上线周期漫长。最后,在系统的高可用性运维方面,此种硬编码模式不支持同一转换路径下多个历史版本共存,无法实现协议的无感升级,并且任何转换逻辑的调整或增删都不得不重新编译和部署整个服务,导致正在进行的设备通信中断,难以满足畜牧养殖场景下对服务连续性的要求。
3、此外,另一类现有的物联网协议转换方案采用云端规则下发的方式实现协议支持的扩展:由部署在云端的服务器维护协议转换规则配置文件,边缘侧的网关在每次执行协议转换之前从服务器下载更新该协议转换规则配置文件,并解析该文件生成对应的转换器。该类方案虽然扩大了协议适配范围,但其协议转换能力依赖于边缘侧与云端服务器之间的实时通信,在养殖场等网络条件受限的应用场景下,一旦发生网络波动或断线,协议转换将无法正常执行;并且,该类方案中一条转换路径通常仅对应一个由配置文件生成的转换器,无法在同一转换路径下保留多个版本的转换器,也难以在转换失败时自动切换,不利于满足养殖场数百台设备持续在线对业务连续性的要求。
技术实现思路
1、本技术主要提供一种协议转换方法、存储介质及计算机设备,旨在解决现有的物联网协议转换方法中协议转换逻辑与业务处理逻辑扩展维护困难,以及协议转换能力依赖云端服务器的规则下发、难以适应智慧畜牧物联网系统中网络波动或断线场景的技术问题。
2、为解决上述技术问题,本技术采用的技术方案是:提供一种协议转换方法,应用于智慧畜牧物联网系统中的边缘计算节点,所述边缘计算节点分别与养殖场内的设备和平台侧的多个异构云平台通信。该协议转换方法包括:在系统初始化阶段,扫描标注有组件注解的协议转换器类,将所述协议转换器类实例化为协议转换器实例并收集至已发现转换器列表中;所述协议转换器类部署于所述边缘计算节点本地,所述协议转换器实例对应源协议类型与目标协议类型,所述源协议类型与所述目标协议类型由所述协议转换器类的泛型父类类型信息确定,所述协议转换器实例由所述边缘计算节点在本地实例化,无需从服务器下载协议转换规则配置文件;对所述已发现转换器列表中的每个协议转换器实例,根据所述协议转换器实例的源协议类型与目标协议类型生成注册键,将协议转换器实例注册至转换器注册表中所述注册键对应的转换器列表,并添加至全局转换器列表;其中,同一注册键对应的转换器列表中的协议转换器实例对应不同的版本号,且按优先级从高到低排序;接收协议转换请求;所述协议转换请求携带源协议对象、目标协议类型标识与转换方向标识;根据所述源协议对象的类型与所述目标协议类型标识,依次在转换器缓存、所述转换器注册表与所述全局转换器列表中逐级查找目标协议转换器;其中,在所述转换器注册表中精确匹配到所述注册键对应的转换器列表时,所述目标协议转换器为所述转换器列表中优先级最高的协议转换器实例;通过查找到的所述目标协议转换器,根据所述转换方向标识执行正向转换流程或反向转换流程,输出转换后的协议对象;其中,所述正向转换流程将所述源协议对象转换为目标协议对象,所述反向转换流程将所述目标协议对象转换为源协议对象;所述执行正向转换流程或反向转换流程,包括:当所述目标协议转换器转换失败时,记录降级日志并按照优先级从高到低的顺序切换至所述转换器列表中下一优先级最高的协议转换器实例继续执行转换;直至转换成功,或者所述转换器列表中的协议转换器实例均转换失败时,抛出携带错误码、源协议类型、目标协议类型与失败原因信息的异常。
3、在一些实施例中,所述正向转换流程与所述反向转换流程通过模板方法基类定义;所述模板方法基类将所述正向转换流程与所述反向转换流程声明为不可重写,并依次包括前置校验、预处理、核心转换、后处理与后置校验;所述核心转换包括核心正向转换与核心反向转换,由所述模板方法基类的子类实现;所述前置校验、所述预处理、所述后处理与所述后置校验由所述模板方法基类提供默认实现,所述子类根据需要重写;所述执行正向转换流程或反向转换流程,输出转换后的协议对象,包括:当所述转换方向标识为正向转换时,依次执行前置校验源协议对象、预处理源协议对象、执行核心正向转换、后处理目标协议对象与后置校验目标协议对象;当所述转换方向标识为反向转换时,依次执行前置校验目标协议对象、预处理目标协议对象、执行核心反向转换、后处理源协议对象与后置校验源协议对象。
4、在一些实施例中,通过反射获取所述协议转换器类的泛型父类类型信息,确定所述源协议类型与所述目标协议类型,包括:判断所述泛型父类类型是否为参数化类型;当判定为参数化类型时,提取所述参数化类型中的实际类型参数,将第一个类型参数设置为源协议类型,将第二个类型参数设置为目标协议类型;当判定不为参数化类型时,抛出异常,提示所述协议转换器类必须指定泛型参数。
5、在一些实施例中,所述将协议转换器实例注册至转换器注册表中所述注册键对应的转换器列表,并添加至全局转换器列表,包括:在初始化回调中,遍历所述已发现转换器列表中的每个协议转换器实例;检查所述协议转换器实例是否为空,若为空则跳过;检查所述协议转换器实例的启用状态,若处于禁用状态则跳过;通过所述协议转换器实例的源协议类型与目标协议类型生成注册键;将所述协议转换器实例添加至所述转换器注册表中所述注册键对应的转换器列表中,并按优先级从高到低排序;将所述协议转换器实例添加至所述全局转换器列表。
6、在一些实施例中,所述逐级查找目标协议转换器,包括:根据所述源协议对象的类型与所述目标协议类型标识生成缓存键;在所述转换器缓存中以所述缓存键进行查找,若命中缓存则直接返回缓存的协议转换器;若缓存未命中,以所述缓存键在所述转换器注册表中进行精确匹配查找,若找到对应的转换器列表则取所述转换器列表中优先级最高的协议转换器,写入所述转换器缓存后返回;若精确匹配未找到,遍历所述全局转换器列表,对每个协议转换器进行兼容性检查,在所有兼容的协议转换器中选取优先级最高者,写入所述转换器缓存后返回;若逐级查找均未找到,抛出异常;所述异常携带错误码与源协议类型、目标协议类型信息。
7、在一些实施例中,在所述注册至转换器注册表中所述注册键对应的转换器列表,并添加至全局转换器列表之后,还包括以下至少一项:接收新的协议转换器实例,生成注册键并添加至所述转换器注册表与所述全局转换器列表,按优先级从高到低排序;所述新的协议转换器实例立即生效;接收待移除的协议转换器实例,从所述转换器注册表与所述全局转换器列表中移除,并清空所述转换器缓存以防止脏读;清空所述转换器注册表、所述转换器缓存与所述全局转换器列表,重新执行初始化回调进行全量重新注册。
8、在一些实施例中,在所述接收协议转换请求之前,还包括:通过消息处理器接收消息,解析消息载荷并执行业务逻辑处理,判断是否需要协议转换;若需要,则生成所述协议转换请求;在所述输出转换后的协议对象之后,还包括:将所述转换后的协议对象发送至对侧系统;其中,所述消息处理器在执行所述正向转换流程与所述反向转换流程时共享同一协议转换器实例。
9、在一些实施例中,所述逐级查找目标协议转换器,包括:在所述转换器注册表中精确匹配到所述注册键对应的转换器列表时,返回所述转换器列表中优先级最高的协议转换器实例;当所述优先级最高的协议转换器实例被移除后,再次查找时返回所述转换器列表中下一个优先级最高的协议转换器实例。
10、为解决上述技术问题,本技术采用的另一个技术方案是:提供一种存储介质。该存储介质上存储有程序数据,所述程序数据被处理器执行时实现上述的协议转换方法的步骤。
11、为解决上述技术问题,本技术采用的另一个技术方案是:提供一种计算机设备。该计算机设备包括相互连接的处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现上述的协议转换方法的步骤。
12、本技术的有益效果是:区别于现有技术的情况,本技术公开了一种协议转换方法、存储介质及计算机设备。本技术通过扫描标注有组件注解的协议转换器类并实例化收集,根据源协议类型与目标协议类型生成注册键注册至转换器注册表,并依次在转换器缓存、转换器注册表与全局转换器列表中逐级查找目标协议转换器,由目标协议转换器根据转换方向标识执行正向转换流程或反向转换流程,实现了协议转换逻辑与业务逻辑的完全解耦,业务层仅需通过一次调用即可完成协议转换,底层协议差异对业务层完全透明,解决了协议转换逻辑与业务处理逻辑扩展维护困难的技术问题;通过在同一个协议转换器中同时支持正向转换流程与反向转换流程,消除了传统方案中上行转换与下行转换分别编写两套代码的冗余问题;通过逐级查找机制,在大多数场景下通过缓存命中即可获取目标协议转换器,避免了线性遍历的性能开销;通过同一注册键下多个版本的协议转换器共存并按优先级排序,以及在转换失败时自动降级至下一优先级的协议转换器实例,实现了协议版本的平滑演进,单一版本的协议转换器出现兼容性缺陷或运行异常时不会中断协议转换服务,保障了协议转换的连续性;此外,协议转换器类及其类型信息均部署并确定于边缘计算节点本地,协议转换无需从服务器下载协议转换规则配置文件,即使在与云端服务器通信中断的场景下,边缘计算节点仍能够在本地完成设备侧与平台侧之间的协议转换,解决了协议转换能力依赖云端服务器的规则下发、难以适应网络波动或断线场景的技术问题。通过本技术方法提高了协议转换系统的可维护性和可扩展性,有利于在智慧畜牧等物联网场景下实现高效、稳定的异构协议适配。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com