CN117793182A - 数据转发、获取的方法、装置和存储介质及电子设备 - Google Patents
数据转发、获取的方法、装置和存储介质及电子设备 Download PDFInfo
- Publication number
- CN117793182A CN117793182A CN202311863823.2A CN202311863823A CN117793182A CN 117793182 A CN117793182 A CN 117793182A CN 202311863823 A CN202311863823 A CN 202311863823A CN 117793182 A CN117793182 A CN 117793182A
- Authority
- CN
- China
- Prior art keywords
- target
- communication
- service
- request
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 490
- 238000004891 communication Methods 0.000 claims abstract description 442
- 230000008569 process Effects 0.000 claims description 400
- 230000000977 initiatory effect Effects 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 238000005516 engineering process Methods 0.000 abstract 1
- 230000005540 biological transmission Effects 0.000 description 13
- 238000012544 monitoring process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000915 polyvinyl chloride Polymers 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种数据转发、获取的方法、装置和存储介质及电子设备。其中,该方法包括:在目标中间件接收到服务请求的情况下,获取所述服务请求中携带的通信位置信息;根据所述通信位置信息确定所述目标请求组件和目标服务组件之间的运行位置关系;在获取到所述目标服务组件根据所述服务请求返回的所述服务数据的情况下,根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;根据所述目标通信链路向所述目标请求组件发送所述服务数据。本申请解决了相关技术数据转发、获取效率低的技术问题。
Description
技术领域
本申请涉及智能驾驶领域,具体而言,涉及一种数据转发、获取的方法、装置和存储介质及电子设备。
背景技术
随着辅助驾驶的普及和法律法规的逐渐完善,越来越多的汽车厂家选择开发高级别的辅助驾驶功能,这些辅助驾驶功能通常运行在车辆的ADAS域控制器上。随着辅助驾驶功能要求越来越高,相应的ADAS域控制器硬件系统也越来越复杂,控制器内部用于计算和处理的SOC芯片和外围传感器、调试设备也越来越多,它们相互之间通信的数据量越来越大,软件开发也越来越复杂。
一个典型的支持L3级别自动驾驶功能的ADAS域控制器,通常需要多颗用于运行自动驾驶算法和功能的SOC和多颗用于控制车辆的MCU,还会接入激光雷达/毫米波雷达以及外围的调试设备,例如日志存储装置和传感器可视化工具等。这些实体间通常选择以太网作为物理连接,并且需要提前设计出各个实体之间的通信链路,如果通信链路设计有误,通信效率有很多损失,无法满足辅助驾驶系统内的通信所需要低延迟,高效率,如何提高这一套复杂系统内的通信效率、降低软件开发难度,成为了极大的挑战。
针对于这种挑战,目前已有一些解决方案,比如一些车载领域的通信中间件,如iceoryx,DDS等。但他们通常只支持某种特定的通信方式,比如使用共享内存通信,或使用以太网来通信。同时在现有的域控制器内,通常会使用一些异构SOC,里面会有多颗CPU,它们之间通信需要进行核间通信,现有的方案中,都不支持异构SOC核间通信的能力。
也就是,目前现有的方案中,大部分都是实现单一的通信方式,未考虑通过划分进程内/进程间或跨机器的方式自动选择合适的通信方式,有极少数中间件实现了机器内/外的区分,使用共享内存或以太网通信,但未考虑到接口的标准化,不能完全适用于汽车行业,不支持进程内使用指针这种高效的传递方式,不支持异构核心的通信,仅支持一种以太网协议,不可用户配置,因此存在相关技术数据转发、获取效率低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据转发、获取的方法、装置和存储介质及电子设备,以至少解决相技术数据转发、获取效率低的技术问题。
根据本申请实施例的一个方面,提供了一种数据转发的方法,包括:在目标中间件接收到服务请求的情况下,获取上述服务请求中携带的通信位置信息,其中,上述服务请求为目标请求组件发送的用于请求服务数据的通信报文,上述通信位置信息用于指示上述目标请求组件的系统运行位置;根据上述通信位置信息确定上述目标请求组件和目标服务组件之间的运行位置关系,其中,上述目标服务组件为与上述目标中间件共同运行在目标进程下的通信对象;在获取到上述目标服务组件根据上述服务请求返回的上述服务数据的情况下,根据上述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;根据上述目标通信链路向上述目标请求组件发送上述服务数据。
根据本申请实施例的另一方面,还提供了一种数据转发装置,包括:获取单元,用于在目标中间件接收到服务请求的情况下,获取上述服务请求中携带的通信位置信息,其中,上述服务请求为目标请求组件发送的用于请求服务数据的通信报文,上述通信位置信息用于指示上述目标请求组件的系统运行位置;第一确定单元,用于根据上述通信位置信息确定上述目标请求组件和目标服务组件之间的运行位置关系,其中,上述目标服务组件为与上述目标中间件共同运行在目标进程下的通信对象;第二确定单元,用于在获取到上述目标服务组件根据上述服务请求返回的上述服务数据的情况下,根据上述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;转发单元,用于根据上述目标通信链路向上述目标请求组件发送上述服务数据。
作为一种可选的方案,上述数据转发方法装置,还包括:第一获取单元,用于在根据上述运行位置关系确定上述目标请求组件所对应的参考进程与上述目标进程为运行于不同硬件单元上的进程的情况下,将多条上述候选通信链路中的网络通信链路确定为上述目标通信链路;在根据上述运行位置关系确定上述目标请求组件所对应的参考进程与上述目标进程为运行于目标硬件单元上的进程的情况下,从多条上述候选通信链路中的非网络通信链路中确定上述目标通信链路,其中,上述目标硬件单元用于运行上述目标进程和上述参考进程。
作为一种可选的方案,上述第一获取单元,包括:获取模块,用于在上述参考进程和上述目标进程为上述目标硬件单元上运行的相同进程的情况下,将进程内通信链路确定为上述目标通信链路;在上述参考进程和上述目标进程为上述目标硬件单元上分别运行的不同进程的情况下,将进程间通信链路确定为上述目标通信链路在上述参考进程为上述目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为上述目标通信链路。
作为一种可选的方案,上述数据转发装置,还包括:第三确定单元,用于在上述通信位置信息中的参考机器标识为第一标识的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于上述目标硬件单元上的进程;在上述通信位置信息中的参考机器标识并非上述第一标识,且上述参考机器标识与上述目标服务组件对应的目标机器标识相同的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于上述目标硬件单元上的进程;在上述通信位置信息中的参考机器标识并非上述第一标识,且上述参考机器标识与上述目标服务组件对应的目标机器标识不同的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于不同硬件单元上的进程;其中,上述目标机器标识指示上述目标硬件单元。
作为一种可选的方案,上述第三确定单元包括:第三确定模块,用于根据上述参考机器标识进行解析,得到至少一个网络通信地址;根据至少一个上述网卡地址确定上述用于运行上述参考进程的参考硬件单元,其中,上述参考机器标识为地址拼接结果的哈希处理结果,上述地址拼接结果为与上述参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;根据上述参考硬件单元确定上述网络通信链路。
作为一种可选的方案,上述第三确定单元,还用于:在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识相同的情况下,确定上述参考进程和上述目标进程为相同进程;在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识不同,且上述参考机器标识不为上述第一标识的情况下,确定上述参考进程和上述目标进程为上述目标硬件单元上分别运行的不同进程;在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识不同,且上述参考机器标识为上述第一标识的情况下,确定上述参考进程为上述目标硬件单元上的异构硬件子单元上运行的进程。
作为一种可选的方案,上述装置还包括:转发单元,用于在接收到上述目标服务组件的服务发起请求的情况下,根据上述服务发起请求的服务发起请求标识,用于指示上述目标服务组件的上述系统运行位置的目标通信位置信息生成服务发起请求报文;向订阅了目标通信主题的至少一个上述通信对象转发上述服务发起请求报文。
根据本申请实施例的另一个方面,提供了一种数据获取的方法,包括:在参考中间件接收到服务发起请求的情况下,获取上述服务发起请求中携带的目标通信位置信息,其中,上述服务请求为目标服务组件发送的用于提供服务数据的通信报文,上述目标通信位置信息用于指示上述目标服务组件的系统运行位置;根据上述目标通信位置信息确定上述目标服务组件和目标请求组件之间的运行位置关系,其中,上述目标请求组件为与上述参考中间件共同运行在参考进程下的通信对象;根据上述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;根据上述目标通信链路获取上述目标服务组件发送的服务数据。
根据本申请实施例的另一方面,还提供了一种数据获取装置,包括:第一获取单元,用于在参考中间件接收到服务发起请求的情况下,获取上述服务发起请求中携带的目标通信位置信息,其中,上述服务请求为目标服务组件发送的用于提供服务数据的通信报文,上述目标通信位置信息用于指示上述目标服务组件的系统运行位置;第一确定单元,用于根据上述目标通信位置信息确定上述目标服务组件和目标请求组件之间的运行位置关系,其中,上述目标请求组件为与上述参考中间件共同运行在参考进程下的通信对象;第二确定单元,用于根据上述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;第二获取单元,用于根据上述目标通信链路获取上述目标服务组件发送的服务数据据。
根据本申请实施例的又一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上数据转发方法或上述数据获取方法。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的数据转发方法或上述数据获取方法。
通过本申请的上述实施方式,通过目标中间件接收服务请求获取服务请求中携带的通信位置信息,进而根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,可以在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路,实现了根据目标通信链路向目标请求组件发送服务数据,从而解决了现有方式数据转发、获取效率低的技术问题。
通过本申请的另一上述实施方式,在参考中间件接收到服务发起请求的情况下,获取服务发起请求中携带的目标通信位置信息,进而根据目标通信位置信息确定目标服务组件和目标请求组件之间的运行位置关系,可以根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路,实现了根据目标通信链路获取目标服务组件发送的服务数据,从而解决了现有方式数据转发、获取效率低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的数据转发方法的应用环境的示意图;
图2是根据本申请实施例的一种可选的数据转发方法的流程的示意图;
图3是根据本申请实施例的一种可选的复杂域控制器系统构架的示意图;
图4是根据本申请实施例的一种可选的复杂域控制器系统构架下的通信方式示意图;
图5是根据本申请实施例的另一种可选的复杂域控制器系统构架下的通信方式示意图;
图6是根据本申请实施例的一种可选的数据转发方法的流程图;
图7是根据本申请实施例的另一种可选的数据转发方法的流程图;
图8是根据本申请实施例的一种可选的数据获取方法的流程图;
图9是根据本申请实施例的一种数据转发装置的示意图;
图10是根据本申请实施例的一种可选的电子设备的结构示意图;
图11是根据本申请实施例的一种数据获取装置的示意图;
图12是根据本申请实施例的另一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,下文中出现的技术名词进行说明:
SOC(SystemOn Chip):片上系统,系统级芯片;
AUTOSAR(AUTomotive Open System Architecture):汽车开发架构,是一个组织,定义汽车领域的部分标准文件;
AP(Adaptive Platform):AUTOSAR组织定义的一系列标准,旨在为高性能SOC提供一套中间件运行环境;
DDS(Data Distribution Service):数据分发服务,是一个数据发布和订阅的协议及API标准;
DDS协议通过“主题”来进行数据交互,接收端可以选择订阅的主题,发送端发送相应主题的消息后,所有订阅的接收端都可以收到该数据。
根据本申请实施例的一个方面,提供了一种数据转发方法,可选地,上述数据转发方法可以但不限于应用于如图1所示的硬件环境中。可选地,本申请提供的上述数据转发方法可以应用于一种车辆终端中。图1示出了车辆终端101的侧视图,车辆终端101可以在行进表面113上行驶。车辆终端101包括存储有机载导航系统103、数字化道路地图104的存储器102、空间监测系统117、交通工具控制器109、GPS(全球定位系统)传感器110、HMI(人/机交互界面)装置111,还包括自主控制器112和远程信息处理控制器114。
在一个实施例中,空间监测系统117包括一个或多个空间传感器和系统,空间传感器和系统用于监测车辆终端101前方的可视区域105,空间监测系统117中还包括空间监测控制器118;用于监测可视区域105的空间传感器包括激光雷达传感器106、雷达传感器107、摄像头108等。空间监测控制器118可以用于基于来自空间传感器的数据输入生成与可视区域105相关的数据。空间监测控制器118可以根据来自空间传感器的输入,确定车辆终端101的线性范围、相对速度和轨迹,例如,确定自车的当前速度以及相较于前车的相对速度。车辆终端空间监测系统117的空间传感器可包括对象定位感测装置,对象定位感测装置可以包括范围传感器,范围传感器可以用于定位前方对象例如前车对象。
摄像头108有利地被安装和定位在车辆终端101上处于允许捕获可视区域105的图像的位置中,其中,可视区域105的至少部分包括在车辆终端101前方并且包括车辆终端101的轨迹的行进表面113的部分。可视区域105还可包括周围环境。还可采用其它摄像头,例如,包括被设置在车辆终端101的后部分或侧部分上的第二摄像头,以监测车辆终端101的后方以及车辆终端101的右侧或左侧中的一个。
自主控制器112被配置成实施自主驾驶或高级驾驶员辅助系统(ADAS)车辆终端功能性。此类功能性可包括能够提供一定驾驶自动化水平的车辆终端机载控制系统。驾驶自动化可包括一系列动态驾驶和车辆终端操作。驾驶自动化可包括涉及单个车辆终端功能(例如,转向、加速和/或制动)的某种水平的自动控制或干预。上述自主控制器112中的数据转发方法可以包括如下步骤:
S102,在目标中间件接收到服务请求的情况下,获取服务请求中携带的通信位置信息,其中,服务请求为目标请求组件发送的用于请求服务数据的通信报文,通信位置信息用于指示目标请求组件的系统运行位置;
S104,根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,其中,目标服务组件为与目标中间件共同运行在目标进程下的通信对象;
S106,在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
S108,响应于对通信链路图的编辑操作,确定对第二元模型文件进行调整;
S110,根据目标通信链路向目标请求组件发送服务数据。
HMI装置111提供人机交互,用于指导信息娱乐系统、GPS(全球定位系统)传感器110、机载导航系统103和类似的操作的目的,并且包括控制器。HMI装置111监测操作者请求,并且向操作者提供车辆终端系统的状态、服务和维护信息。HMI装置111与多个操作者界面装置通信,和/或控制多个操作者界面装置的操作。HMI装置111还可与一个或多个装置通信,所述一个或多个装置监测与车辆终端操作者相关联的生物特征数据。为了描述的简单性,HMI装置111被描绘为单一装置,但是在本文描述的系统的实施例中,可被配置为多个控制器和相关联的感测装置。
操作者控制件可被包括在车辆终端101的乘客舱中,并且通过非限制性示例的方式可包括方向盘、加速器踏板、制动踏板和操作者输入装置,所述操作者输入装置是HMI装置111的元件。操作者控制件使得车辆终端操作者能够与运行的车辆终端101交互,并且指导车辆终端101的操作,以提供乘客运输。
机载导航系统103采用数字化道路地图104,用于向车辆终端操作者提供导航支持和信息的目的。自主控制器112采用数字化道路地图104,用于控制自主车辆终端操作或ADAS车辆终端功能的目的。
车辆终端101可包括远程信息处理控制器114,远程信息处理控制器114包括能够进行车辆终端外通信(包括与具有无线和有线通信能力的通信网络115通信)的无线远程信息处理通信系统。无线远程信息处理通信系统中包括非机载服务器116,能够与移动终端短程无线通信。
通过本申请的上述实施方式,通过目标中间件接收服务请求获取服务请求中携带的通信位置信息,进而根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,可以在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路,实现了根据目标通信链路向目标请求组件发送服务数据,从而解决了现有方式数据转发效率低的技术问题。
作为一种可选的实施方式,如图2所示,上述数据转发方法可以在车辆终端中的数据处理系统中执行,如图1所示的车辆终端中包括的数据处理系统,具体步骤包括:
S202,在目标中间件接收到服务请求的情况下,获取服务请求中携带的通信位置信息,其中,服务请求为目标请求组件发送的用于请求服务数据的通信报文,通信位置信息用于指示目标请求组件的系统运行位置;
S204,根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,其中,目标服务组件为与目标中间件共同运行在目标进程下的通信对象;
S206,在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
S208,根据目标通信链路向目标请求组件发送服务数据。
需要说明的是,复杂域控制器系统构架如图3所示,域控制器中包含多颗SOC和MCU组成,中间通过以太网相互通信,通常域控制器还会外接一些调试工具或数据录制工具等;在上述复杂域控制器上,软件组件会分布在不同的SOC上的不同进程之间,它们之间通常会采用不同的通信方式,如通信方式示意图图4所示,例如,同一个进程内部的组件会直接通过指针来传递数据(如图4中(a)与(b)位于同一进程内部,通过传指针的方式进行数据通信),同一个SOC内的不同进程会选择使用进程间通信的方法,比如共享内存或者socket等(如图4中(c)与(b)位于同一SOC中的不同进程,通过进程间通信的方式进行数据通信),并且一个进程上可以有多个SWC,异构核心上只能运行一个SWC(进程),如图4中(d)、(e)为异构核心,(d)、(e)中分别对应一个SWC;同一SOC上异构核心与其他组件通过核间通信的方式传递数据(如图4中(d)与(e)位于同一SOC中的异构核心,通过核间通信的方式进行数据通信);不同SOC上的组件会选择通过以太网传输数据(如图4中(c)与(f)位于不同SCC上,也属于不同进程,通过以太网通信的方式进行数据通信)。
在上述实施方式中的S202中,通信位置信息可以理解为数据在传输过程中经过的位置信息,这些位置信息可以包括数据的源地址和目的地址,以及数据在传输过程中经过的各个中间节点的位置信息,具体地可以为:首先启动一个socket,使用以太网协议;然后通过socket选项,获得当前机器上的所有IPV4地址;最后将所有的IPV4地址进行拼接,获得一个唯一的机器标识符,格式是字符串,比如控制器有4个网卡,IPV4地址分别为127.0.0.1,192.168.3.2,10.166.2.3,10.166.2.5,将所有IPV4地址进行拼接,得到唯一的机器标识符是“127.0.01-192.168.3.2-10.166.2.3-10.166.2.5”;在目标中间件接收到服务请求的情况下,获取所述服务请求中携带的通信位置信息。
需要说明的是,上述服务请求为目标请求组件发送的用于请求服务数据的通信报文,上述通信报文的内容结构体可以如下所示:
struct ServiceDiscoveryMessage{
MessageType type;
uint32_t service_id;
uint32_t process_id;
uint64_t host_id;
};
其中type表示该消息的类型,service_id表示服务标识符,且必须全局唯一,process_id表示进程ID,在异构核心发出的消息中,process_id为CPU_ID,host_id表示机器ID。
进一步地,根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,上述运行位置关系可以为上文提到同一进程中、不同进程中、不同SOC中等的位置关系。
需要说明的是,将上述服务请求转发至目标服务组件,接收上述目标服务组件的响应信息后,执行上述步骤S206,在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路,作为一种可选的实施方式,服务相对位置的判断方法可以为:
在host_id为0的情况下,判断目标请求组件和目标服务组件在同一个SOC的异构核心上,通过CPU_ID建立联系;
在host_id不同的情况下,判断目标请求组件和目标服务组件分布在不同机器上;
在host_id相同,process_id不同的情况下,判断目标请求组件和目标服务组件分布在同一机器上,但不在同一进程上;
在host_id和process_id都相同的情况下,判断目标请求组件和目标服务组件分布在同一个进程上。
进而在执行完上述步骤后可以根据目标通信链路向目标请求组件发送服务数据。通过本申请的上述实施方式,通过目标中间件接收服务请求获取服务请求中携带的通信位置信息,进而根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,可以在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路,实现了根据目标通信链路向目标请求组件发送服务数据,从而解决了现有方式数据转发、获取效率低的技术问题。
在一种可选的实施方式中,上述在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路包括:
S1,在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程的情况下,将多条候选通信链路中的网络通信链路确定为目标通信链路;
S2,在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,从多条候选通信链路中的非网络通信链路中确定目标通信链路,其中,目标硬件单元用于运行目标进程和参考进程。
作为一种可选的实施方式,在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程的情况下,将多条候选通信链路中的网络通信链路确定为目标通信链路,即在参考进程与目标进程位于不同硬件单元时,确定网络通信链路为目标通信链路,上述网络通信链路包括但不限于为:以太网、Wi-Fi、蓝牙等。
作为另一种可选的实施方式,在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,从多条候选通信链路中的非网络通信链路中确定目标通信链路,即在参考进程与目标进程位于同一目标硬件单元时,从非网络通信链路中确定目标通信链路,包括但不限于:指针、进程通信、核间通信等。
通过本申请的上述实施方式,根据运行位置关系确定目标请求组件所对应的参考进程与目标进程是否为运行于不同硬件单元上的进程,进而确定出目标通信链路,实现了根据每个软件组件的位置分布关系,可以自动选择最优的通信方式和链路,保证通信正常的同时,提供最低的延迟,保证通信的效率和质量。
在一种可选的实施方式中,上述在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,从多条候选通信链路中的非网络通信链路中确定目标通信链路包括:
S1,在参考进程和目标进程为目标硬件单元上运行的相同进程的情况下,将进程内通信链路确定为目标通信链路;
S2,在参考进程和目标进程为目标硬件单元上分别运行的不同进程的情况下,将进程间通信链路确定为目标通信链路;
S3,在参考进程为目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为目标通信链路。
作为一种可选的实施方式,进一步地,在根据运行位置关系确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,判断参考进程和目标进程的关系,例如:在目标硬件单元上运行的参考进程和目标进程为相同进程的情况下,将进程内通信链路确定为目标通信链路(如图5中(a)和(b)属于SOC的同一进程,确定(a)和(b)之间的目标通信链路为进程内通信链路),上述进程内通信链路可以但不限于通过指针进行数据传递;在目标硬件单元上分别运行的参考进程和目标进程,也就是参考进程和目标进程为不同进程的情况下,将进程间通信链路确定为目标通信链路(如图5中(c)和(b)、(c)和(a)属于不同SOC的不同进程,确定(c)和(b)、(c)和(a)之间的目标通信链路为进程间通信链路),上述进程间通信链路可以包括但不限于基于中间件通过共享内存的方式进行数据传递;在参考进程为目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为目标通信链路(如图5中(a)和(d)、(b)和(d)、(c)和(d)属于同一SOC的不同进程,且(d)在异构核心中,确定(a)和(d)、(b)和(d)、(c)和(d)之间的目标通信链路为核间通信链路),上述核间通信链路可以但不限于为基于中间件通过核间内存共享的方式进行数据通信;图5中(a)、(b)、(c)、(d)与(e)不属于同一个域(在不同的硬件单元、不同的机器中),因此(a)、(b)、(c)、(d)与(e)可以通过以太网进行数据通信,将以太网通信链路确定为目标通信链路。
通过本申请的上述实施方式,根据不同情况的对应规则进一步确定了目标通信链路中的进程内通信链路、进程间通信链路以及核间通信链路,实现了在完成组件位置识别后,可以根据组件间的关系,选择最高效的通信传输:同进程内选择指针直接传递,获得最优的效率,无任何额外开销;同机器但不同进程,选择共享内存通信,获得优秀的通信效率,且不抢占网络资源和系统资源;异构机器上,同机器的不同核心之间,选择核间通信,完成跨核心的通信;不同机器之间,可以根据用户配置,选择域控制器开发中常用的DDS、SOME/IP或UDP通信,用以太网完成数据传输,具体选择通信方式的规则如图5所示。
在一种可选的实施方式中,上述根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系包括:
S1,在通信位置信息中的参考机器标识为第一标识的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;
S2,在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标服务组件对应的目标机器标识相同的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;
S3,在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标服务组件对应的目标机器标识不同的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程;
S4,其中,目标机器标识指示目标硬件单元。
作为一种可选的实施方式,在通信位置信息中的参考机器标识为第一标识的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程,需要说明的是,上述第一通信标识可以用于确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程或者为运行于不同硬件单元上的进程,例如:当host_id为0时,表示目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进;当host_id不为0,且参考机器标识与目标服务组件对应的目标机器标识相同时,表示目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;host_id不为0,且参考机器标识与目标服务组件对应的目标机器标识不同时,表示目标请求组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程。
通过本申请的上述实施方式,通过判断参考机器的第一标识以及判断参考机器标识与目标服务组件对应的目标机器标识是否相同,进一步确定出目标请求组件所对应的参考进程与目标进程的位置关系(是否为同一硬件单元上的进程),从而实现了计算每个上层组件之间的位置分布关系,自动选择合适的通信方式和链路,在实现效率最优的同时,对上层软件应用屏蔽通信细节,使其更关注于自身功能,而不因系统复杂性造成开发成本的上升,通信质量也得到保证。
在一种可选的实施方式中,上述确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于不同硬件单元上的进程之后,还包括:
S1,根据参考机器标识进行解析,得到至少一个网络通信地址;
S2,根据至少一个网卡地址确定用于运行参考进程的参考硬件单元,其中,参考机器标识为地址拼接结果的哈希处理结果,地址拼接结果为与参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;
S3,根据参考硬件单元确定网络通信链路。
作为一种可选的实施方式,上述根据参考机器标识进行解析,得到至少一个网络通信地址可以通过但不限于:首先确定机器标识的类型,根据机器标识的类型,可以使用不同的解析方法,例如,如果是MAC地址,可以使用ARP协议查询到对应的IP地址;如果是主机名,可以通过DNS解析获取对应的IP地址,然后根据解析得到的结果可以确定机器的网络地址,如IP地址、端口号等。
进一步地,根据至少一个网卡地址确定用于运行参考进程的参考硬件单元,根据参考硬件单元确定网络通信链路。
以下对上述实施过程以及host_id的计算方法进行具体解释:
S1,创建一个socket对象,然后绑定到一个特定的端口上,并指定使用以太网协议,即启动一个socket,使用以太网协议;
S2,通过socket选项,获得当前机器上的所有IPV4地址;
S3,将所有的IPV4地址进行拼接,获得一个唯一的机器标识符,格式是字符串,比如控制器有4个网卡,IPV4地址分别为127.0.0.1,192.168.3.2,10.166.2.3,10.166.2.5,将所有IPV4地址拼接,得到唯一的机器标识符是“127.0.0.1-192.168.3.2-10.166.2.3-10.166.2.5”;
S4,将上一步得到的标识符进行哈希处理,获得一个整型类型的唯一机器标识符,即host_id;
需要说明的是,对于异构核心上,不支持socket和复杂的算法,直接默认host_id为0,在同一个SOC的其他核心上,可以直接识别到当前服务是异构核心上提供的;
通过本申请的上述实施方式,通过对参考机器标识进行解析,得到网络通信地址后根据网卡地址确定用于运行参考进程的参考硬件单元,进而可以根据参考硬件单元确定网络通信链路,提高了确定网络通信链路的准确性。
在一种可选的实施方式中,上述确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程之后,还包括:
S1,在通信位置信息中的参考进程标识与目标进程的目标进程标识相同的情况下,确定参考进程和目标进程为相同进程;
S2,在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识不为第一标识的情况下,确定参考进程和目标进程为目标硬件单元上分别运行的不同进程;
S3,在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识为第一标识的情况下,确定参考进程为目标硬件单元上的异构硬件子单元上运行的进程。
作为一种可选的实施方式,在确定出目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程之后,判断通信位置信息中的参考进程标识与目标进程的目标进程标识是否相同,如果相同,则参考进程和目标进程为相同进程;如果不相同,且参考机器标识不为第一标识(host_id不为0),则参考进程和目标进程为目标硬件单元上分别运行的不同进程;如果参考进程标识与目标进程的目标进程标识不同,且参考机器标识为第一标识(host_id为0)的情况下,确定参考进程为目标硬件单元上的异构硬件子单元上运行的进程。
通过本申请的上述实施方式,通过判断通信位置信息中的参考进程标识与目标进程的目标进程标识是否相同,以及判断参考机器标识是否为第一标识,进而可以确定出参考进程和目标进程是否为统一进程,以及参考进程是否为目标硬件单元上的异构硬件子单元上运行的进程,从而提高了识别软件组件部署位置分布关系的准确性,开发效率更高,可移植性更强。
在一种可选的实施方式中,上述方法,还包括:
S1,在接收到目标服务组件的服务发起请求的情况下,根据服务发起请求的服务发起请求标识,用于指示目标服务组件的系统运行位置的目标通信位置信息生成服务发起请求报文;
S2,向订阅了目标通信主题的至少一个通信对象转发服务发起请求报文。
可选的,接收到目标服务组件的服务发起请求后,根据上述服务发起请求的服务发起对应的请求标识,上述请求标识用于指示目标服务组件的系统运行位置的目标通信位置信息生成服务发起请求报文,上述服务发起请求报文的表示可以但不限于为以下结构体表示形式:
struct ServiceDiscoveryMessage{
MessageType type;
uint32_t service_id;
uint32_t process_id;
uint64_t host_id;
};
作为一种可选的实施方式,向订阅了目标通信主题的至少一个通信对象转发服务发起请求报文,需要说明的是,在本实施例中,所有客户端和服务端(统称为通信参与者)都使用专用的服务发现数据主题“/builtin/service_discovery”发送和接收服务发现的数据,所有通信参与者都会订阅该主题。
执行上述步骤后,进一步判断目标请求组件与目标服务组件之间的运行关系:
S1,在通信位置信息中的参考机器标识为第一标识的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;
S2,在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标服务组件对应的目标机器标识相同的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;
S3,在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标服务组件对应的目标机器标识不同的情况下,确定目标请求组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程;根据参考机器标识进行解析,得到至少一个网络通信地址;根据至少一个网卡地址确定用于运行参考进程的参考硬件单元,其中,参考机器标识为地址拼接结果的哈希处理结果,地址拼接结果为与参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;根据参考硬件单元确定网络通信链路;
上述确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于所述目标硬件单元上的进程之后:
S1,在通信位置信息中的参考进程标识与目标进程的目标进程标识相同的情况下,确定参考进程和目标进程为相同进程;
S2,在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识不为第一标识的情况下,确定参考进程和目标进程为目标硬件单元上分别运行的不同进程;
S3,在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识为第一标识的情况下,确定参考进程为目标硬件单元上的异构硬件子单元上运行的进程。
通过上述实施方式,在接收到目标服务组件的服务发起请求的情况下,根据服务发起请求的服务发起请求标识,用于指示目标服务组件的系统运行位置的目标通信位置信息生成服务发起请求报文,进而向订阅了目标通信主题的至少一个通信对象转发服务发起请求报文,实现了在完成组件位置识别后,可以根据组件间的关系,选择最高效的通信传输:同进程内选择指针直接传递,获得最优的效率,无任何额外开销;同机器但不同进程,选择共享内存通信,获得优秀的通信效率,且不抢占网络资源和系统资源;异构机器上,同机器的不同核心之间,选择核间通信,完成跨核心的通信;不同机器之间,可以根据用户配置,选择域控制器开发中常用的DDS、SOME/IP或UDP通信,用以太网完成数据传输。
需要说明的是,系统内的所有通信参与者使用特定的消息行通信,消息内容包括消息类型,服务的标识符,自身机器标识符以及自身进程标识符,消息类型包括如下几个类型:
提供服务(OFFER):用户提供某个服务时,中间件会以1s周期不停发送;
停止提供服务(STOP_OFFER):用户停止提供服务时,中间件会以1s的周期发送5次;
寻找服务(FIND):用户需要使用某个服务时,中间件会以1s周期不停发送寻找服务的消息,以供系统内其他节点获知该信息;
停止寻找服务(STOP_FIND):用户停止寻找某个服务时,中间件会以1s的周期发送5次;
以一种具体实施方式对上述执行过程进行说明,服务端和客户端使用服务发现协议进行服务状态的计算,每个服务只允许有一个提供者,SWC启动后,通过调用中间件的接口去提供或者寻找服务,中间件内部会使用上述提到的服务发现协议去计算每个服务是由哪个机器的哪个进程提供的,自身进程寻找了哪些服务,详细的流程图如图6所示:
S602,一组软件组件SWC提供服务;
在一种实施方式下:
S604,中间件启动监听线程;S606,判断是否收到服务发现消息;如果没有收到则持续监听判断,如果收到服务发现消息,执行S608,处理不同类型的服务发现消息;
S610,判断是否为FIND消息;如果不是FIND消息,执行S606,判断是否收到服务发现消息;
如果是FIND消息,执行S614,判断是否为异构核心,如果是异构核心,执行S618,记录有异构核心需要该服务,通过CPU_ID设置核间通信;如果不是异构核心,执行S616,判断是否为同一机器;如果不是同一机器,执行S616-1,记录有远程客户端需要该服务,然后执行S606,继续判断是否收到服务发现消息;如果是同一机器则执行S620,判断是否为同一进程;如果不是,则执行S620-1,记录有不同进程的客户端需要该服务;如果是同一进程,则执行S622,记录有同进程客户端需要该服务;继续执行S606,判断是否收到服务发现消息;
S612,判断是否为STOP_FIND消息;如果不是STOP_FIND消息,执行S606,继续判断是否收到服务发现消息;
如果是STOP_FIND消息,执行S612-1,如果之前记录了该客户端需要该服务,从列表中删除;然后执行S606,判断是否收到服务发现消息;
需要说明的是,在本实施例中不对S610和S612的执行顺序做具体限制,例如可以先执行S610再执行S612,或者先执行S612执行S610,或者S610和S612同步执行等;
在另一种实施方式下,执行S624,判断SWC是否提供服务;
如果提供服务,执行S626,中间件周期性发送OFFER消息;然后继续执行S624,判断SWC是否提供服务;
如果不提供服务,执行S628,中间件发送5次STOP_OFFER消息;结束服务。
具体地,以图7对如何选择通信方式的过程进行说明:
首先,执行S702,服务端发送数据;
然后执行S704,有异构核心上的客户端则执行S704-1,通过核间共享内存传递数据;
执行S706,有不同机器的客户端则执行S706-1,通过用户配置的以太网协议传输数据;
执行S708,有同进程客户端则执行S708-1,直接通过指针传递数据;
执行S710,有不同进程的客户端则执行S710-1,通过共享内存传递数据;
需要说明的是,不对上述S704、S706、S708、S710的执行顺序做具体限制,可以根据实际情况确定方案的判断执行顺序。
根据本发明实施例的另一个方面,提供了一种数据获取方法,该方法包括:
S1,在参考中间件接收到服务发起请求的情况下,获取服务发起请求中携带的目标通信位置信息,其中,服务发起请求为目标服务组件发送的用于提供服务数据的通信报文,目标通信位置信息用于指示目标服务组件的系统运行位置;
S2,根据目标通信位置信息确定目标服务组件和目标请求组件之间的运行位置关系,其中,目标请求组件为与参考中间件共同运行在参考进程下的通信对象;
S3,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
S4,根据目标通信链路获取目标服务组件发送的服务数据。
需要说明的是,上述根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路包括:在根据运行位置关系确定目标服务组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程的情况下,将多条候选通信链路中的网络通信链路确定为目标通信链路;在根据运行位置关系确定目标服务组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,从多条候选通信链路中的非网络通信链路中确定目标通信链路,其中,目标硬件单元用于运行目标进程和参考进程。
可选地,在根据运行位置关系确定目标服务组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程的情况下,从多条候选通信链路中的非网络通信链路中确定目标通信链路包括:在参考进程和目标进程为目标硬件单元上运行的相同进程的情况下,将进程内通信链路确定为目标通信链路;在参考进程和目标进程为目标硬件单元上分别运行的不同进程的情况下,将进程间通信链路确定为目标通信链路在参考进程为目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为目标通信链路。
可选地,根据通信位置信息确定目标服务组件和目标请求组件之间的运行位置关系包括:在通信位置信息中的参考机器标识为第一标识的情况下,确定目标服务组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标请求组件对应的目标机器标识相同的情况下,确定目标服务组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程;在通信位置信息中的参考机器标识并非第一标识,且参考机器标识与目标请求组件对应的目标机器标识不同的情况下,确定目标服务组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程;其中,目标机器标识指示目标硬件单元。
可选地,确定目标服务组件所对应的参考进程与目标进程为运行于不同硬件单元上的进程之后,还包括:根据参考机器标识进行解析,得到至少一个网络通信地址;根据至少一个网卡地址确定用于运行参考进程的参考硬件单元,其中,参考机器标识为地址拼接结果的哈希处理结果,地址拼接结果为与参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;根据参考硬件单元确定网络通信链路。
可选地,确定目标服务组件所对应的参考进程与目标进程为运行于目标硬件单元上的进程之后,还包括:在通信位置信息中的参考进程标识与目标进程的目标进程标识相同的情况下,确定参考进程和目标进程为相同进程;在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识不为第一标识的情况下,确定参考进程和目标进程为目标硬件单元上分别运行的不同进程;在通信位置信息中的参考进程标识与目标进程的目标进程标识不同,且参考机器标识为第一标识的情况下,确定参考进程为目标硬件单元上的异构硬件子单元上运行的进程。
可以理解的是,本发明实施例的数据方法与上述实施例的数据转发方法可以相互参考。
以下以一种具体实施方式对上述过程进行说明,如图8所示:
首先执行S802,SWC提供服务;S804,中间件启动监听线程;
S806,判断是否收到服务发现消息;若未收到,继续监听判断;若收到服务发现消息,执行S808,判断是否是OFFER消息;如果不是,则执行S808-1,判断是否是STOP_OFFER消息;不是STOP_OFFER消息则执行S806;是STOP_OFFER消息则执行S808-2,停止接收该服务的消息;并继续执行S806,继续判断是否收到服务发现消息;如果是OFFER消息,则执行S810,判断是否为异构核心提供服务;如果是则执行S810-1,从核间共享内存接收数据;并继续执行S806,继续判断是否收到服务发现消息;
如果不是异构核心提供服务,则执行S812,判断是否为本进程提供服务;如果是则执行S812-1,从指针接收数据;并继续执行S806,继续判断是否收到服务发现消息;
如果不是本进程提供服务,则执行S814,判断是否为本机器提供服务;如果是则执行S814-1,从共享内存接收数据;并继续执行S806,继续判断是否收到服务发现消息;
如果不是本机器提供服务,则执行S816,判断是否为跨机器提供服务;如果是,则执行S816-1,从以太网接收数据;并继续执行S806,继续判断是否收到服务发现消息;
如果不是跨机器提供服务,则执行S806,继续判断是否收到服务发现消息;
通过本申请的上述实施方式中的算法框架,本申请向上层软件应用提供了统一的通信接口,可以支持进程内通信/进程间通信/跨芯片以太网通信,以太网支持多种通信协议,比如UDP/SOME/IP/DDS等;使用本申请的域控制器软件系统,开发效率更高,可移植性更强;并且本申请满足面向服务的架构,兼容汽车行业通用的AUTOSAR AP标准化的通信模型,更有利于提高控制器软件的标准化和可移植性;本申请还实现了一种自动识别软件组件部署位置分布关系的方法,可以识别每个组件收/发数据的组件的相对位置,软件部署位置发生迁移,本申请可以自动发现,实现软件无缝迁移;此外,本申请根据每个软件组件的位置分布关系,可以自动选择最优的通信方式和链路,保证通信正常的同时,提供最低的延迟,保证通信的效率和质量。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据转发方法的数据转发装置。如图9所示,该装置包括:
获取单元902,用于在目标中间件接收到服务请求的情况下,获取服务请求中携带的通信位置信息,其中,服务请求为目标请求组件发送的用于请求服务数据的通信报文,通信位置信息用于指示目标请求组件的系统运行位置;
第一确定单元904,用于根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,其中,目标服务组件为与目标中间件共同运行在目标进程下的通信对象;
第二确定单元906,用于在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
转发单元908,用于根据目标通信链路向目标请求组件发送服务数据。
可选地,上述数据转发装置,还包括:第一获取单元,用于在根据上述运行位置关系确定上述目标请求组件所对应的参考进程与上述目标进程为运行于不同硬件单元上的进程的情况下,将多条上述候选通信链路中的网络通信链路确定为上述目标通信链路;在根据上述运行位置关系确定上述目标请求组件所对应的参考进程与上述目标进程为运行于目标硬件单元上的进程的情况下,从多条上述候选通信链路中的非网络通信链路中确定上述目标通信链路,其中,上述目标硬件单元用于运行上述目标进程和上述参考进程。
可选地,第一获取单元,包括:获取模块,用于在上述参考进程和上述目标进程为上述目标硬件单元上运行的相同进程的情况下,将进程内通信链路确定为上述目标通信链路;在上述参考进程和上述目标进程为上述目标硬件单元上分别运行的不同进程的情况下,将进程间通信链路确定为上述目标通信链路在上述参考进程为上述目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为上述目标通信链路。
可选地,上述数据转发装置,包括:第三确定单元,用于在上述通信位置信息中的参考机器标识为第一标识的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于上述目标硬件单元上的进程;在上述通信位置信息中的参考机器标识并非上述第一标识,且上述参考机器标识与上述目标服务组件对应的目标机器标识相同的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于上述目标硬件单元上的进程;在上述通信位置信息中的参考机器标识并非上述第一标识,且上述参考机器标识与上述目标服务组件对应的目标机器标识不同的情况下,确定上述目标请求组件所对应的上述参考进程与上述目标进程为运行于不同硬件单元上的进程;其中,上述目标机器标识指示上述目标硬件单元。
可选地,上述第三确定单元包括:第三确定模块,用于根据上述参考机器标识进行解析,得到至少一个网络通信地址;根据至少一个上述网卡地址确定上述用于运行上述参考进程的参考硬件单元,其中,上述参考机器标识为地址拼接结果的哈希处理结果,上述地址拼接结果为与上述参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;根据上述参考硬件单元确定上述网络通信链路。
可选地,上述第三确定单元,还用于:在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识相同的情况下,确定上述参考进程和上述目标进程为相同进程;在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识不同,且上述参考机器标识不为上述第一标识的情况下,确定上述参考进程和上述目标进程为上述目标硬件单元上分别运行的不同进程;在上述通信位置信息中的参考进程标识与上述目标进程的目标进程标识不同,且上述参考机器标识为上述第一标识的情况下,确定上述参考进程为上述目标硬件单元上的异构硬件子单元上运行的进程。
可选地,上述装置还包括:转发单元,用于在接收到上述目标服务组件的服务发起请求的情况下,根据上述服务发起请求的服务发起请求标识,用于指示上述目标服务组件的上述系统运行位置的目标通信位置信息生成服务发起请求报文;向订阅了目标通信主题的至少一个上述通信对象转发上述服务发起请求报文。
具体实施例可以参考上述数据转发方法中所示示例,本示例中在此不再赘述。
其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的数据转发方法和装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据转发方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1002具体可以但不限于用于存储目标逻辑文件等文件信息。作为一种示例,如图10所示,上述存储器1002中可以但不限于包括上述数据转发装置中的获取单元902、第一确定单元904、第二确定单元906和转发单元908。此外,还可以包括但不限于上述数据转发装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1006包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1006为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1008,和连接总线1010,用于连接上述电子设备中的各个模块部件。
根据本发明实施例的又一个方面,还提供了一种用于实施上述数据获取方法的数据获取装置,如图11所示,该装置包括:
第一获取单元1102,用于在参考中间件接收到服务发起请求的情况下,获取所述服务发起请求中携带的目标通信位置信息,其中,所述服务请求为目标服务组件发送的用于提供服务数据的通信报文,所述目标通信位置信息用于指示所述目标服务组件的系统运行位置;
第一确定单元1104,用于根据所述目标通信位置信息确定所述目标服务组件和目标请求组件之间的运行位置关系,其中,所述目标请求组件为与所述参考中间件共同运行在参考进程下的通信对象;
第二确定单元1106,用于根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
第二获取单元1108,用于根据所述目标通信链路获取所述目标服务组件发送的服务数据。
其中,存储器1202可用于存储软件程序以及模块,如本发明实施例中的数据获取方法和装置对应的程序指令/模块,处理器1204通过运行存储在存储器1202内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据获取方法。存储器1202可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1202可进一步包括相对于处理器1204远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1202具体可以但不限于用于存储目标逻辑文件等文件信息。作为一种示例,如图12所示,上述存储器1202中可以但不限于包括上述数据获取装置中的第一获取单元1102、第一确定单元1104、第二确定单元1106和第二获取单元1108。此外,还可以包括但不限于上述数据获取装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1206包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1206为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1208,和连接总线1210,用于连接上述电子设备中的各个模块部件。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,电子设备的计算机系统仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请的系统中限定的各种功能。
根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在目标中间件接收到服务请求的情况下,获取服务请求中携带的通信位置信息,其中,服务请求为目标请求组件发送的用于请求服务数据的通信报文,通信位置信息用于指示目标请求组件的系统运行位置;
S2,根据通信位置信息确定目标请求组件和目标服务组件之间的运行位置关系,其中,目标服务组件为与目标中间件共同运行在目标进程下的通信对象;
S3,在获取到目标服务组件根据服务请求返回的服务数据的情况下,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
S4,根据目标通信链路向目标请求组件发送服务数据。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,在参考中间件接收到服务发起请求的情况下,获取服务发起请求中携带的目标通信位置信息,其中,服务请求为目标服务组件发送的用于提供服务数据的通信报文,目标通信位置信息用于指示目标服务组件的系统运行位置;
S2,根据目标通信位置信息确定目标服务组件和目标请求组件之间的运行位置关系,其中,目标请求组件为与参考中间件共同运行在参考进程下的通信对象;
S3,根据运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
S4,根据目标通信链路获取目标服务组件发送的服务数据。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令电子设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的用户设备,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (12)
1.一种数据转发方法,其特征在于,包括:
在目标中间件接收到服务请求的情况下,获取所述服务请求中携带的通信位置信息,其中,所述服务请求为目标请求组件发送的用于请求服务数据的通信报文,所述通信位置信息用于指示所述目标请求组件的系统运行位置;
根据所述通信位置信息确定所述目标请求组件和目标服务组件之间的运行位置关系,其中,所述目标服务组件为与所述目标中间件共同运行在目标进程下的通信对象;
在获取到所述目标服务组件根据所述服务请求返回的所述服务数据的情况下,根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
根据所述目标通信链路向所述目标请求组件发送所述服务数据。
2.根据权利要求1所述的方法,其特征在于,所述在获取到所述目标服务组件根据所述服务请求返回的所述服务数据的情况下,根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路包括:
在根据所述运行位置关系确定所述目标请求组件所对应的参考进程与所述目标进程为运行于不同硬件单元上的进程的情况下,将多条所述候选通信链路中的网络通信链路确定为所述目标通信链路;
在根据所述运行位置关系确定所述目标请求组件所对应的参考进程与所述目标进程为运行于目标硬件单元上的进程的情况下,从多条所述候选通信链路中的非网络通信链路中确定所述目标通信链路,其中,所述目标硬件单元用于运行所述目标进程和所述参考进程。
3.根据权利要求2所述的方法,其特征在于,所述在根据所述运行位置关系确定所述目标请求组件所对应的参考进程与所述目标进程为运行于目标硬件单元上的进程的情况下,从多条所述候选通信链路中的非网络通信链路中确定所述目标通信链路包括:
在所述参考进程和所述目标进程为所述目标硬件单元上运行的相同进程的情况下,将进程内通信链路确定为所述目标通信链路;
在所述参考进程和所述目标进程为所述目标硬件单元上分别运行的不同进程的情况下,将进程间通信链路确定为所述目标通信链路;
在所述参考进程为所述目标硬件单元上的异构硬件子单元上运行的进程的情况下,将核间通信链路确定为所述目标通信链路。
4.根据权利要求2所述的方法,其特征在于,所述根据所述通信位置信息确定所述目标请求组件和目标服务组件之间的运行位置关系包括:
在所述通信位置信息中的参考机器标识为第一标识的情况下,确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于所述目标硬件单元上的进程;
在所述通信位置信息中的参考机器标识并非所述第一标识,且所述参考机器标识与所述目标服务组件对应的目标机器标识相同的情况下,确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于所述目标硬件单元上的进程;
在所述通信位置信息中的参考机器标识并非所述第一标识,且所述参考机器标识与所述目标服务组件对应的目标机器标识不同的情况下,确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于不同硬件单元上的进程;
其中,所述目标机器标识指示所述目标硬件单元。
5.根据权利要求4所述的方法,其特征在于,所述确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于不同硬件单元上的进程之后,还包括:
根据所述参考机器标识进行解析,得到至少一个网络通信地址;
根据至少一个网卡地址确定所述用于运行所述参考进程的参考硬件单元,其中,所述参考机器标识为地址拼接结果的哈希处理结果,所述地址拼接结果为与所述参考硬件单元上配置的至少一个网络通信单元各自对应的网络通信地址的拼接得到;
根据所述参考硬件单元确定所述网络通信链路。
6.根据权利要求4所述的方法,其特征在于,确定所述目标请求组件所对应的所述参考进程与所述目标进程为运行于所述目标硬件单元上的进程之后,还包括:
在所述通信位置信息中的参考进程标识与所述目标进程的目标进程标识相同的情况下,确定所述参考进程和所述目标进程为相同进程;
在所述通信位置信息中的参考进程标识与所述目标进程的目标进程标识不同,且所述参考机器标识不为所述第一标识的情况下,确定所述参考进程和所述目标进程为所述目标硬件单元上分别运行的不同进程;
在所述通信位置信息中的参考进程标识与所述目标进程的目标进程标识不同,且所述参考机器标识为所述第一标识的情况下,确定所述参考进程为所述目标硬件单元上的异构硬件子单元上运行的进程。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到所述目标服务组件的服务发起请求的情况下,根据所述服务发起请求的服务发起请求标识,用于指示所述目标服务组件的所述系统运行位置的目标通信位置信息生成服务发起请求报文;
向订阅了目标通信主题的至少一个所述通信对象转发所述服务发起请求报文。
8.一种数据获取方法,其特征在于,包括:
在参考中间件接收到服务发起请求的情况下,获取所述服务发起请求中携带的目标通信位置信息,其中,所述服务发起请求为目标服务组件发送的用于提供服务数据的通信报文,所述目标通信位置信息用于指示所述目标服务组件的系统运行位置;
根据所述目标通信位置信息确定所述目标服务组件和目标请求组件之间的运行位置关系,其中,所述目标请求组件为与所述参考中间件共同运行在参考进程下的通信对象;
根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
根据所述目标通信链路获取所述目标服务组件发送的服务数据。
9.一种数据转发装置,其特征在于,包括:
获取单元,用于在目标中间件接收到服务请求的情况下,获取所述服务请求中携带的通信位置信息,其中,所述服务请求为目标请求组件发送的用于请求服务数据的通信报文,所述通信位置信息用于指示所述目标请求组件的系统运行位置;
第一确定单元,用于根据所述通信位置信息确定所述目标请求组件和目标服务组件之间的运行位置关系,其中,所述目标服务组件为与所述目标中间件共同运行在目标进程下的通信对象;
第二确定单元,用于在获取到所述目标服务组件根据所述服务请求返回的所述服务数据的情况下,根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
转发单元,用于根据所述目标通信链路向所述目标请求组件发送所述服务数据。
10.一种数据获取装置,其特征在于,包括:
第一获取单元,用于在参考中间件接收到服务发起请求的情况下,获取所述服务发起请求中携带的目标通信位置信息,其中,所述服务发起请求为目标服务组件发送的用于提供服务数据的通信报文,所述目标通信位置信息用于指示所述目标服务组件的系统运行位置;
第一确定单元,用于根据所述目标通信位置信息确定所述目标服务组件和目标请求组件之间的运行位置关系,其中,所述目标请求组件为与所述参考中间件共同运行在参考进程下的通信对象;
第二确定单元,用于根据所述运行位置关系的关系类型与通信链路之间的匹配关系,从多条候选通信链路中确定目标通信链路;
第二获取单元,用于根据所述目标通信链路获取所述目标服务组件发送的服务数据。
11.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序被电子设备运行时执行所述权利要求1至7或权利要求8任一项中所述的方法。
12.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7或权利要求8任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311863823.2A CN117793182A (zh) | 2023-12-29 | 2023-12-29 | 数据转发、获取的方法、装置和存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311863823.2A CN117793182A (zh) | 2023-12-29 | 2023-12-29 | 数据转发、获取的方法、装置和存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117793182A true CN117793182A (zh) | 2024-03-29 |
Family
ID=90383362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311863823.2A Pending CN117793182A (zh) | 2023-12-29 | 2023-12-29 | 数据转发、获取的方法、装置和存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117793182A (zh) |
-
2023
- 2023-12-29 CN CN202311863823.2A patent/CN117793182A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4202645A1 (en) | Vehicle upgrading method and apparatus | |
CN110635933B (zh) | 用于管理sdn的网络的装置、控制方法及记录介质 | |
CN107977215B (zh) | 车载系统升级方法及装置 | |
US20130311574A1 (en) | Self registration of event-consumers/producers and auto discovery | |
US10938596B2 (en) | Switch device, communication control method and communication control program | |
CN107733839B (zh) | 数据传输方法和系统 | |
CN112840620A (zh) | 异常检测装置以及异常检测方法 | |
RU2705361C1 (ru) | Бортовое релейное устройство, устройство обработки информации, релейное устройство, способ обработки информации, носитель для долговременного хранения программы, исполняемой релейным устройством, система обработки информации, транспортное средство и внешнее устройство | |
WO2023066166A1 (zh) | 一种车载通信方法、装置及系统 | |
CN112702213A (zh) | 一种网络功能nf管理方法及nf管理设备 | |
CN113557697B (zh) | 管理装置、车辆通信系统、车辆、车辆通信管理方法及车辆通信管理程序 | |
CN114826866B (zh) | 跨平台微服务体系结构、计算设备及存储介质 | |
EP4246844A1 (en) | Data packet processing method and apparatus | |
CN113268050A (zh) | 一种车辆诊断方法和装置 | |
EP3831038B1 (en) | Automated relationship management of service layer entities in a communications network | |
CN117793182A (zh) | 数据转发、获取的方法、装置和存储介质及电子设备 | |
US20230107783A1 (en) | In-vehicle information processing apparatus, information processing method, and server program | |
KR102168775B1 (ko) | 네트워크를 경유하는 서비스 기반의 정보 조회를 신속하게 처리하기 위한 방법과 그 방법을 위한 기기 | |
CN113377393B (zh) | 一种车载系统主节点的诊断刷新系统及方法 | |
CN111752575B (zh) | 一种车载应用更新方法、装置、设备及存储介质 | |
CN113852938A (zh) | 车载设备通讯方法、车载设备、存储介质及电子装置 | |
CN111212399B (zh) | 数据传输方法、装置、计算机存储介质及电子设备 | |
US20230269660A1 (en) | Method and apparatus for providing device to device communications | |
WO2024026593A1 (zh) | 一种协同控车方法及相关装置 | |
CN112671547B (zh) | 车内业务切片的资源配置方法及装置、系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |