CN110476152A - 信息处理设备、信息处理方法和计算机程序 - Google Patents
信息处理设备、信息处理方法和计算机程序 Download PDFInfo
- Publication number
- CN110476152A CN110476152A CN201880023183.5A CN201880023183A CN110476152A CN 110476152 A CN110476152 A CN 110476152A CN 201880023183 A CN201880023183 A CN 201880023183A CN 110476152 A CN110476152 A CN 110476152A
- Authority
- CN
- China
- Prior art keywords
- node
- container
- visitor
- application program
- data
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明的目的是提供一种处理应用程序或应用程序中包括的程序的信息处理设备、信息处理方法和计算机程序。提供了一种信息处理设备,包括:激活单元,用于激活与第一容器隔离的第二容器并且通过第二容器激活第二节点,其中,第一节点在第一容器处操作;以及代理管理单元,用于激活代理节点,代理节点在第一容器中基于规定的通信模型与第一节点进行数据通信,并且在第二容器中基于规定的通信模型与第二节点进行数据通信。
Description
技术领域
本说明书中公开的技术涉及一种信息处理设备、一种信息处理方法和一种计算机程序,这些都处理应用程序或应用程序中包括的程序。
背景技术
人工智能(AI)和自动化技术近年来取得了显著的进步,并在各个工业领域的工作场所得到了广泛的推广。例如,机器人包括多个连杆、连接连杆的关节,并且通过使用关节驱动致动器(例如,电机)驱动相应关节来操作。此外,自主车辆使用传感器检测车辆周围的信息,从而可以根据自主确定来避免碰撞等。
一种称为自主型或自适应控制型的系统(例如,机器人)无需等待操作员或主设备的指令,即可自主或自适应地执行行为控制。更具体地,该系统不断地验证(或评估或监视)机器人等的外部环境或内部条件,并且依次启动操作,该操作产生适合于关于外部环境或内部条件的识别的预定过渡条件的结果,以实现适合于当前情况的动作(例如,参见专利文献1)。同时,随着系统复杂性的增加,由单一开发者开发和制造系统变得更加困难。因此,系统通常由多个开发者开发。当一个系统由多个开发者开发时,可能会出现以下几个问题。
(1)在从具有各种功能的传感器等接收输入并管理以各种模式使用的系统的操作的系统的情况下,考虑任何事件的预测试对于系统来说变得更加难以进行。
(2)多个开发者中的一部分可以包含在开放源代码中开发的库等,例如,典型示例的Linux(注册商标)操作系统(OS)。在这种情况下,软件质量的管理变得更加困难。
(3)系统的一部分可以由对开发步骤和产品操作检查测试具有不同管理、参考等的开发者开发。因此,由于检查产品操作等的方式在开发者之间不同,在操作产品时发现操作失败、故障或安全问题的情况下,比以前更需要针对这些问题的快速和适当的解决方案。
同时,当计算机系统执行应用程序时,生成在处理器上操作的计算机进程(以下也缩写为“进程”),并且该计算机进程由OS管理。被设计成在预定时间执行相应进程的实时OS(RTOS)可以用于开发在实时处理期间重视反应速度性能的复杂系统(例如,机器人)的目的。例如,最近的RTOS被允许使用发布者/订户类型通信模型,以用于由OS根据在系统上操作的多个应用程序所生成和管理的各个进程之间的通信(例如,参见专利文献2)。
在使用上述通信模型的OS中,可以在针对每个应用程序生成的进程没有预先识别针对通信伙伴的特定应用程序所生成的进程的情况下建立通信。因此,向系统添加新的应用程序或者在执行期间改变应用程序的一部分是相对容易实现的。然而,也存在这样的问题,即在执行期间新添加或改变的应用程序的执行性能或安全问题难以预先测试。
现有技术文献
专利文献
专利文献1:JP 2003-334785 A
专利文献2:JP 2011-514087 T
发明内容
本发明要解决的技术问题
本说明书的技术的目的的是提供一种信息处理设备、一种信息处理方法和一种计算机程序,这些中的每一个都配备有OS,该OS使用通信方法以容易地新添加应用程序,并且这些中的每一个都能够通过预定方法与另一应用程序(或进程)分开管理应用程序(或从应用程序生成的进程),并且通过分开管理的进程之间的通信方法来解决上述问题。
问题的解决方案
考虑到上述问题,已经实现了本说明书中公开的技术。该技术的第一方面涉及一种信息处理设备,包括:启动部,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及代理管理部,其启动代理节点,代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。在本文中,第一节点包括通过在第一容器中安装满足预定条件的第一应用程序而进行操作的节点。启动部在第二容器中安装不满足预定条件的第二应用程序,以使第二节点进行操作。
启动部启动包括通过虚拟NIC与第一容器逻辑分离的地址或名称空间的第二容器。此外,预定通信模型包括发布者/订户类型通信模型,并且启动部指定与第二容器共享的主题名称,以启动代理节点。
随后,第一节点发送与代理节点在第一容器中提供的第一主题相关联的数据,代理节点在与第一主题相关联的第二容器中创建第二主题,并发送从第一节点接收的数据,并且第二节点从第二主题接收数据。
另外,第二节点发送与代理节点在第二容器中提供的第二主题相关联的数据,代理节点在与第二主题相关联的第一容器中创建第一主题,并发送从第二节点接收的数据,并且第一节点从第一主题接收数据。
此外,本说明书中公开的技术的第二方面涉及一种信息处理方法,包括:启动步骤,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及代理管理步骤,启动代理节点,该代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。
此外,本说明书中公开的技术的第三方面涉及一种以计算机可读形式编写的计算机程序,该程序使计算机用作:启动部,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及代理管理部,其启动代理节点,代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。
根据本说明书中公开的技术的第三方面的计算机程序定义了以计算机可读形式编写的计算机程序,以便在计算机上实现预定的进程。换言之,通过将根据本说明书中公开的技术的第三方面的计算机程序安装在计算机中,可以在计算机上实现协同操作,从而可以获得与根据第一方面的信息处理设备类似的操作的有利效果。
[发明的有利效果]
根据本说明书中公开的技术,可以提供一种信息处理设备、信息处理方法和计算机程序,这些都配备有OS,该OS使用通信方法来容易地新添加或改变应用程序,并且这些都能够通过预定方法与不同的应用程序(或进程)分开管理应用程序(或从应用程序生成的进程),并且通过分开管理的进程之间的通信方法来解决上述问题。
注意,本说明书中描述的有利效果仅是示例,并且本发明的有利效果不限于此。在某些情况下,本发明还可以提供额外的有利效果以及上述有利效果。
本说明书中公开的技术的其他目的、特征和优点将从下面描述的实施方式和附图的更详细描述中变得显而易见。
附图说明
[图1]图1是示意性描绘控制程序的开发环境的示例的示图。
[图2]图2是描绘经由网络的控制程序的分布式开发环境的示例的示图。
[图3]图3是描绘对应于开发目标的机器人的控制程序的开发环境的示例的示图。
[图4]图4是描绘对应于开发目标的用于自主车辆的控制程序的开发环境的示例的示图。
[图5]图5是描绘对应于开发目标的无人驾驶飞行器(无人机)的控制程序的开发环境的示例的示图。
[图6]图6是描绘安装在自主操作设备100的真实机上的硬件和软件架构的配置示例的示图。
[图7]图7是用于解释发布者/订户类型通信的机制的示图。
[图8]图8是描绘经历注册请求的应用程序的源代码的示例的示图。
[图9]图9是表示用于启动容器访客的处理进程的流程图。
[图10]图10是描绘在容器主机1000中启动容器访客1010的状态的示图。
[图11]图11是描绘在容器访客启动时的处理顺序示例的示图。
[图12]图12是表示从容器主机到容器访客的数据发送的处理进程的流程图。
[图13]图13是表示从容器访客到容器主机的数据发送的处理进程的流程图。
[图14]图14是表示从容器主机到容器访客的数据发送的处理序列示例的流程图。
[图15]图15是描绘容器网络的配置示例的示图。
[图16]图16是解释用于切换容器之间共享的主题的机制的示图。
[图17]图17是解释用于停止和重新启动给出不适合于规范的输出的应用程序的机制的示图。
[图18]图18是解释用于停止和重新启动给出不适合于规范的输出的应用程序的处理序列示例的示图。
[图19]图19是示意性描述在应用程序更新期间暂时存储与访客节点相关联的发送和接收数据的机制的示图。
[图20]图20是描绘用于在更新应用期间暂时存储与访客节点相关联的发送和接收数据以及在应用程序更新之后重新启动数据发送的处理序列示例的示图。
[图21]图21是描绘用于在更新应用期间暂时存储与访客节点相关联的发送和接收数据以及在应用程序更新之后重新启动数据发送的处理序列示例的示图。
[图22]图22是解释根据主题通信量进行节流的机制的示图。
[图23]图23是描绘根据主题通信量进行节流的处理序列示例的示图。
[图24]图24是解释通过使用容器分组来隔离不满足预定条件的应用程序的机制的示图。
[图25]图25是描绘应用于机器人的自主操作设备100的应用程序的配置示例的示图。
[图26]图26是描绘应用于机器人的自主操作设备100的应用程序的配置示例(使用容器分组的示例)的示图。
[图27]图27是描绘应用于自主车辆的自主操作设备100的应用程序的配置示例的示图。
[图28]图28是描绘应用于自主车辆的自主操作设备100的应用程序的配置示例(使用容器分组的示例)的示图。
具体实施方式
下文将参考附图详细描述本说明书中公开的技术的实施方式。
图1是示意性描绘控制程序的开发环境的示例的示图。对应于控制程序的控制目标的自主操作设备(真实机)100和创建自主操作设备100的控制程序的开发设备200设置在开发环境下。
在本文中假设自主操作设备100是用于通过自主或自适应控制来控制自主操作设备100的行为的设备。自主操作设备100的示例包括机器人、无人驾驶飞行器、执行自主驾驶的汽车以及各种其他模式。
自主操作设备100包括整体控制系统100的整体操作的主体110、多个模块120-1和120-2等。为了简化,图1仅描绘了三个模块。然而,本文假设的自主操作设备100可以包括四个或更多模块或者仅两个或更少模块。
每个模块120包括致动器121、处理器122、存储器123、传感器124和通信调制解调器125。注意,每个模块120内的相应部分121至125经由内部总线彼此连接。为了简化起见,图中没有描述这种连接。
例如,致动器121是用于旋转关节的电机或者扬声器的驱动器。传感器124是用于检测致动器的输出状态(例如,关节旋转角度、角速度和扬声器音量)的传感器、用于检测外力或其他外部环境的传感器或其他传感器。
处理器122控制每个模块122内的操作,例如,包括致动器121(电机控制器)的驱动控制和对来自传感器124的检测信号的识别处理的典型操作。处理器122使用存储器123来存储与致动器相关联的控制信息、传感器获得的检测值等。
通信调制解调器125是实现模块120和主体110之间或者模块120和其他模块之间的相互通信的硬件,并且可以是无线调制解调器或者有线调制解调器。例如,处理器122经由通信调制解调器125从主体110接收用于驱动致动器121或其他动作的指令信号,并且经由通信调制解调器125将传感器124获得的检测数据发送到主体110。每个模块120还能够经由通信调制解调器125与外部设备(例如,开发设备200)通信。
主体110包括处理器111、存储器112、通信调制解调器113、电池114、USB(通用串行总线)端口115和GPS(全球定位系统)116。注意,主体110内的相应部分111至116经由内部总线彼此连接。为了简化起见,图中没有描述这种连接。
处理器111在存储于存储器112中的程序下整体控制自主操作设备100的整体操作。此外,作为自主操作设备100的驱动电源的电池114向主体110和相应模块120供电。
通信调制解调器113是实现主体120和相应模块120之间的相互通信的硬件,并且可以是无线调制解调器或有线调制解调器。例如,处理器111经由通信调制解调器113向每个模块120发送用于驱动致动器121或其他动作的指令信号,并且经由通信调制解调器113接收基于由每个模块120内的传感器122获得的检测值的识别结果。主体110还能够经由通信调制解调器113与外部设备(例如,开发设备200)通信。
USB端口115用于使用USB总线(电缆)将外部装置连接到主体110。在本实施方式中,假设开发设备200使用USB端口115连接到主体110。例如,由开发设备200创建的控制程序可以经由USB端口115安装到自主操作设备100中。注意,USB是用于将外部设备连接到自主操作设备100的接口标准的示例。外部设备的连接可以按照其他接口标准来实现。
注意,存在数据总线和控制总线,以连接主体110和硬件,例如,相应模块120。图中未描绘数据总线和控制总线。
开发设备200包括例如个人计算机,并且包括计算机主体210、显示器220(例如,液晶面板)、以及包括鼠标、键盘等的用户界面(UI)部230。此外,计算机主体210包括处理器211、GPU(图形处理单元)212、存储器213、USB端口214和通信调制解调器215。然而,可采用这种配置示例,其中,在处理器211中包括GPU 212的功能。计算机主体210还可以包括除了图中描绘的部件之外的硬件组成元件。相应元件经由总线相互连接。
OS在开发设备200中操作。处理器211能够将期望的应用程序加载到存储器212中,并且在由OS提供的执行环境下执行应用程序。
根据本实施方式,假设用于创建自主操作设备100的控制程序的开发工具程序是一个应用程序。该开发工具程序与执行该程序所需的数据一起加载到开发设备200的存储器213中。
开发工具程序在显示器220的屏幕上呈现用于程序开发的GUI(图形用户界面)。允许程序开发者经由用户界面230输入数据和程序,同时检查GUI屏幕的内容。此外,开发工具程序具有功能,例如,使用编译器、调试器、模拟和关于创建的控制程序的3D图形动画来检查控制程序的操作的功能。允许开发者在GUI屏幕上发布执行这些功能的指令。
使用开发工具程序创建的控制程序包括在安装在自主操作设备100的真实机上的主体110的处理器111上执行的控制程序和诸如控制程序使用的参数等数据以及用于控制每个模块120的处理器122中的致动器121的驱动的控制程序和诸如控制程序使用的参数等数据。在本说明书中,程序部分和数据也可以统称为“控制程序”。
使用开发工具程序创建的控制程序存储在存储器213中。此外,存储器213中的控制程序可经由USB端口214转移到自主操作设备100侧。可替换地,存储器213中的控制程序可经由通信调制解调器215转移到自主操作设备100中的模块120。
此外,由开发设备200使用开发工具程序创建的控制程序可以验证操作,并且使用开发工具程序和使用3D图形动画的数据来校正控制数据和程序(开发工具程序和数据在下文中统称为“开发工具程序”)。通常,这种类型的开发工具程序具有在控制程序下创建自主操作设备100的真实机操作的3D图形动画的功能。因此,开发者能够验证由开发者开发的控制程序的操作,并且使用显示器220上显示的3D图形动画并行校正数据和程序。
在本实施方式中,假设开发工具程序具有所谓的物理引擎的功能。物理引擎是具有基于物理规则计算自主操作设备100的实际操作的物理现象的功能的计算机程序。物理引擎在考虑自主操作设备100的物理特性以及实际外部环境的同时,创建类似于实际操作的操作,并且在显示器220上显示操作的结果。与作为自主操作设备100的真实机相比,使用物理引擎而不是真实机电机等在3D图形动画空间中操作的虚拟自主操作设备100也称为虚拟机(计算机程序和包括3D图形动画数据的数据)。
例如,当自主操作设备100是机器人时,物理引擎基于虚拟机的控制程序的操作中的物理规则,计算在开发工具程序中表示的并且在虚拟物理环境和模拟机器人的虚拟机之间引起的物理反应(诸如与地面接触和与障碍物碰撞等反应)。在考虑机器人臂的相应连杆和关节的重量和力矩以及关节驱动致动器的特性的情况下,执行该计算,以计算虚拟机的整体操作,就好像机器人的致动器实际驱动一样。物理引擎然后在显示器220上显示3D图形动画,其中,使用虚拟机再现机器人的实际操作。
虚拟机包括控制程序以及与控制程序相关联的数据,该控制程序被配置为在包括物理引擎和3D图形动画的开发工具程序上操作,并且虚拟机存储在存储器213中。优选地,控制程序和数据以模块的形式在真实机100的每个模块120的处理器122中以操作单元提供。虚拟机的控制程序实现对应于真实机100的处理器(例如,电机控制器)122的操作的功能,作为以类似于真实机的方式在3D图形空间中操作虚拟机的程序的一部分。另外,该虚拟机的控制程序被编程为使用API(应用编程接口)或函数调用物理引擎函数,该物理引擎函数通过使用3D图形动画再现对应于真实机100的每个模块120的致动器121(例如,电机)的操作。此外,由物理引擎在物理计算期间使用的数据(例如,为致动器设置的控制参数、连杆重量和惯性)与控制程序一起存储在存储器213中。响应于控制程序的执行,该数据被从存储器213中读取并在控制程序中使用。
此外,用于向用于实现物理引擎功能的程序模块发出指令的API或功能被设置为与在真实机(即,自主操作设备100侧)上操作的基本OS所提供的功能相同,使得可以使由开发工具程序创建的程序在真实机的OS上按原样操作。此外,由于物理引擎功能可以再现实际的物理现象,所以使用开发工具程序开发的程序经由USB端口214等上传到自主操作设备100,以在没有任何改变的情况下执行,并且因此,已经由开发工具程序检查的操作也可以在实际机器上实现。
此外,自主操作设备100的控制程序可以分成模块,并使用开发工具程序以模块为单位开发。同样在这种情况下,控制程序可以以模块120为单位以类似的方式上传到自主操作设备100。例如,仅负责开发模块120-1的硬件和控制程序的开发者经由通信调制解调器215将开发者的开发设备200连接到自主操作设备100的相应模块120-1,并且可以将创建的程序和数据上传到模块120-1中的存储器123。
硬件和程序的开发由多个开发者或多个开发供应商以模块120为单位共享,使得整个自主操作设备100的开发可以在分布式开发环境下推进。
图2描绘了经由网络的控制程序的分布式开发环境的示例。在图2所示的分布式开发环境下,每个模块由相应的独立开发者或开发供应商开发。然而,图2中描绘的模块可以指示自主操作设备100的控制软件模块以及对应于图1中描绘的自主操作设备100的硬件组成元件的每个模块120。
负责以自主操作设备100的主体或模块为单位开发控制程序的每个程序开发者使用模块开发计算机创建将由对应的程序开发者开发的主体110或模块120的控制程序。例如,上述开发工具程序在模块开发计算机上操作。每个模块开发计算机都连接到网络。在这种情况下,每个程序开发者可以在云服务器上的共享存储装置或云服务器上的个人使用存储器(即,主体开发者存储装置、模块开发者存储装置)或专用服务器中包括的存储器中提供由对应程序开发者开发的控制程序等。此外,控制程序等可以被配置为由管理员、开发者、客户或用户共享,每个人都具有存储器(例如,服务器)的账户。
负责或集成自主操作设备100的整个真实机的控制程序开发的开发者经由网络接收主体110和相应模块120的控制程序。更具体地,由整个真实机的开发者使用的真实机程序开发计算机通过与云服务器、专用服务器或相应开发者的模块开发计算机上的共享存储装置或开发者存储器直接通信来接收相应的控制程序。注意,接收所提供的控制程序的网络可以由有线或无线网络构成。
由整个真实机的开发者使用的真实机程序开发计算机对应于图1所示的开发设备200,并且具有使用开发工具程序上的物理引擎执行计算以及使用3D图形动画显示对应于真实机的虚拟机的操作的功能。因此,真实机程序开发计算机能够使用开发工具程序的物理引擎功能,通过由虚拟机等通过3D图形动画显示来检查和验证主体110和所有模块120的控制程序的操作。
此外,相应的控制程序可在真实机程序开发计算机上与开发的控制程序的执行并行地校正。因此,整个真实机100的开发者和负责相应模块120的开发者协作并有效地开发真实机100的控制程序。此外,在真实机程序开发计算机上校正的每个控制程序再次提供给负责相应模块的开发者,使得可以使相应的开发者完成最终程序产品。例如,通过使用设置在云服务器上的主体110和相应模块120的专用存储器,以模块120为单位管理控制程序,并且因此,可以平稳地推进协作开发。
由整个真实机100的开发者使用的真实机程序开发计算机上的操作检查和验证之后(即,在完成之后)的控制程序可以经由USB端口214从开发设备200直接上传到自主操作设备100的真实机。可替换地,用于整个真实机100或模块120中的每一个的控制程序可以经由有线或无线网络上传到真实机100。
此外,可以假设将控制程序从专用服务器上传到真实机100的模式。例如,特定真实机100的用户可以使用用户的账户经由用户的用户终端的用户界面(例如,键盘、鼠标和触摸面板)登录到专用服务器,并且进一步选择要下载或上传到真实机100或从真实机100上传或下载的控制程序,来执行下载或上传。
作为自主操作设备100的具体示例,图3描绘了对应于开发目标的腿式机器人的控制程序的开发环境的示例。在图3的示例中,通过使用单个开发设备200来执行程序的开发。不用说,也可以使用如图2所示的经由网络提供的分布式开发环境。
腿式机器人100包括主体110、对应于头部的模块120以及左右腿。存在数据总线和控制总线,以连接主体110和硬件,例如,包括头部和左右腿的相应模块120。图中未描绘数据总线和控制总线。
注意,腿式机器人100可以还包括未示出的模块,例如,上肢。此外,可采用真实机配置的这种修改示例,其中,至少一些模块中的诸如处理器和存储器的功能与主体集成,并由主体的处理器控制。
主体包括处理器、存储器、无线或有线通信调制解调器、电池、USB端口和GPS。
对应于左右腿的模块120-2和120-3中的每一个包括作为用于驱动诸如髋关节、膝关节和脚踝(或用于行走)等关节的致动器的电机121以及作为用于控制驱动电机的处理器的电机控制器122。还提供了传感器124,其包括用于检测在电机输出侧生成的外力的扭矩传感器、用于检测电机输出侧的旋转角度的编码器、鞋底的接地传感器以及其他传感器。此外,头部的模块120-1包括作为用于旋转头部的致动器的电机121以及作为用于对周围环境成像的传感器的图像传感器124。
类似于图1中的情况,上述腿式机器人100的主体110和相应模块120的控制程序可以使用在开发设备200上操作的开发工具程序来创建。此外,通过使用在开发工具程序上操作的物理引擎的计算来显示虚拟机的3D图形动画,可以实现操作检查和验证。
此外,通过经由主体110的USB端口115或每个模块120的通信调制解调器125的有线或无线通信,将使用开发设备200创建的控制程序、或整个真实机100的控制程序以及在图2所示的开发环境(或其他开发环境)中开发的每个模块120的控制程序上传到主体110的存储器112或每个模块120的存储器123中。此后,在腿式机器人100启动时或在其他场合适当地操作上传的程序。
作为自主操作设备100的另一具体示例,图4描绘了与开发目标相对应的自主车辆的控制程序的开发环境的示例。自主车辆100是已经引入自主驾驶技术的车辆(或用于工作或运输的无人驾驶车辆)。自主车辆100的示例包括全自主车辆以及在自主驾驶模式和手动驾驶模式之间可切换地选择的自动驾驶模式下行驶的车辆。在图4中,使用单个开发设备200来执行程序的开发。不用说,也可以使用如图2所示的经由网络的分布式开发环境。
图4所示的自主车辆100包括主控制单元110、变速器控制模块120-2和作为模块的内部空调控制模块120-1。注意,存在数据总线和控制总线(例如,CAN总线),以连接主控制单元110和硬件,例如,相应的模块120。图中未描绘数据总线和控制总线。此外,自主车辆100通常包括大量未示出的模块以及变速器控制模块120-2和内部空调控制模块120-1。为了简化,本文不描述这些模块。
主控制单元110包括作为处理器的ECU(电子控制单元)111、存储器112、通信调制解调器113、ECU接口115、GPS 116和电池114。本文采用的通信调制解调器113例如是Wi-Fi(无线保真)、LTE(长期演进)或短程无线通信。此外,本文采用的ECU接口115是用于CAN(控制器局域网)总线(未示出)的接口,并且使用诸如以太网(注册商标)等通信标准连接到开发设备200侧。
内部空调模块120-1包括作为致动器的空调121、作为处理器的空调控制ECU 122、存储器123、作为传感器的内部温度传感器124以及诸如蓝牙(注册商标)通信等通信调制解调器125。例如,假设经由与信息终端(未示出)的连接来控制空调,例如,乘客经由蓝牙(注册商标)通信携带的智能手机。
变速器控制模块120-2包括作为致动器的驱动轮电机121、作为处理器的变速器控制ECU 122、存储器123、速度/加速度传感器124或作为传感器的转向角度传感器等。
注意,主控制单元110中的ECU 111可以被配置为执行所有模块120的中央管理,而不是如图4所示的配置示例中包括在主控制单元110和相应模块120中的ECU。
类似于图1中的情况,可以使用在开发设备200上操作的开发工具程序来创建上述自主车辆100的主控制单元110、内部空调控制模块120-1和变速器控制模块120-2的控制程序。此外,操作检查和验证可以通过使用在开发工具程序上操作的物理引擎功能通过虚拟机的3D图形动画显示来实现。
此外,通过经由主控制单元110的ECU接口115或每个模块120的通信调制解调器的有线或无线通信,将使用开发设备200创建的控制程序、或整个真实机100的控制程序以及在图2所示的开发环境(或其他开发环境)中开发的每个模块120的控制程序上传到主控制单元110的存储器112或每个模块120的存储器123中。此后,在自主车辆100启动时或其他场合适当地操作上传的程序。
图5描绘了对应于开发目标的无人驾驶飞行器(无人机)的控制程序的开发环境的示例,作为自主操作设备100的进一步具体示例。在图5的示例中,使用单个开发设备开发程序。不用说,也可以使用如图2所示的经由网络提供的分布式开发环境。
图5所示的无人驾驶飞行器100包括主控制单元110以及作为模块的相机控制模块120-1和螺旋桨控制模块120-2。存在数据总线和控制总线,以连接主控制单元110和硬件,例如,相应的模块120。图中未描绘数据总线和控制总线。无线飞行器100还可以包括除相机控制模块120-1和螺旋桨控制模块120-2之外的模块。
主控制单元110包括处理器111、存储器112、通信调制解调器113、USB端口115、GPS116和电池114。本文采用的通信调制解调器113是无线调制解调器,例如,Wi-Fi、LTE和近场通信,以与操作员操作的遥控器(未示出)通信。此外,使用USB端口115上传开发的控制程序来实现与开发设备200侧的连接。
相机控制模块120-1包括作为传感器的相机单元(包括图像传感器)124、作为致动器的相机单元旋转电机121、作为处理器的电机控制器122、存储器123和通信调制解调器125。相机单元旋转电机121例如可以在水平方向上在360°的范围内旋转,并且还可以倾斜旋转。此外,本文采用的通信调制解调器125是无线调制解调器,例如,Wi-Fi、LTE和近场通信,以根据从操作员操作的遥控器或智能手机(未示出)发出的命令,实现相机单元124的旋转或成像。
螺旋桨控制模块120-2包括作为致动器的三个螺旋桨(包括用于旋转的电机)121、用于控制用于旋转螺旋桨121的电机的处理器122、存储器123和作为传感器的螺旋桨旋转检测传感器124。
类似于图1中的情况,可以使用在开发设备200上操作的开发工具程序来创建上述无人驾驶飞行器100的主控制单元110、相机控制模块120-1和螺旋桨控制模块120-2的控制程序。此外,操作检查和验证可以通过使用在开发工具程序上操作的物理引擎功能通过虚拟机的3D图形动画显示来实现。
此外,通过经由主控制单元110的通信调制解调器或每个模块120的有线或无线通信,将使用开发设备200创建的控制程序、或整个真实机100的控制程序以及在图2所示的开发环境(或其他开发环境)中开发的每个模块120的控制程序上传到主控制单元110的存储器112或每个模块120的存储器123中。此后,在启动无人驾驶飞行器100时或其他场合适当地操作上传的程序。
图6描绘了安装在自主操作设备100的真实机上的硬件和软件架构的配置示例。
最下层的硬件包括多个硬件模块,例如,主体(或主控制单元110)和包含在真实机100的外壳中的多个模块120。此外,还可以存在真实机,包括分布在两个或多个外壳中的相应硬件模块。
OS直接控制相应的硬件模块。注意,也可能存在不是OS而是上传到每个模块120中的存储器123中的控制程序直接控制硬件模块的情况(更具体地,处理器122执行控制程序,以控制驱动致动器121)。
如图1和其他图中所示,包括都构成硬件架构的主体110和多个模块120的自主操作设备100被配置为使得控制(处理器111的)主体110中的整个系统100的主要OS操作以直接或间接地控制当前在每个模块120中执行的控制程序。
应用程序的开发者可以使用系统提供的API(例如,中间件)来开发应用程序。此外,应用程序的开发者可以开发包括使用系统调用向OS发出指令的程序的应用程序。本文所指的系统调用是用于使用与系统控制相关联的功能的接口。例如,在模块中的处理器(例如,电机控制器)的参数改变时使用,或者在通信调制解调器中设置网络地址时使用系统调用。
假设被分类为“识别”、“情境理解”、“行为规划”和“行为控制”的大量应用程序在诸如机器人、自主车辆和无人驾驶飞行器等自主操作设备100上操作。
“识别”应用程序是执行用于识别由包括在硬件层中的相机或其他传感器获得的传感器信息的处理的应用程序。“情境理解”应用程序是基于由“识别”应用程序获得的识别结果来理解真实机的当前情况的应用程序。例如,分析由相机捕捉的图像的图像分析应用程序是“情境理解”应用程序的示例。注意,在OS提供的执行环境下操作的应用程序在存储器中作为“进程”(或“线程”)来管理,并且由处理器(例如,CPU)执行。
“行为规划”应用程序是根据要被“情境理解”应用程序理解的真实机的当前情境来规划真实机的行为的应用程序。例如,路线选择应用程序是“行为规划”应用程序的示例,该路线选择应用程序根据通过使用上述图像分析应用程序分析真实机的周围环境的图像而获得的结果来选择真实机的移动路线。
此外,“行为控制”应用程序是控制硬件的行为或操作的应用程序,用于实现由“行为规划”应用程序提出的行为规划。“行为控制”应用程序的示例包括根据路线选择应用程序依次选择的路线控制真实机的行进方向和行进速度的应用程序以及根据行进方向和行进速度控制驱动机器人的腿、自主车辆的驱动轮和无人机的螺旋桨的应用程序。
在自主操作设备100(例如,机器人、自主车辆和无人驾驶飞行器)上实施行为或操作时,需要分类为“识别”、“情境理解”、“行为规划”和“行为控制”的应用程序或进程之间的数据通信。
同时,在自主操作设备100上操作的所有大量应用程序难以仅由该设备的开发者或由开发者委托的单个软件供应商开发。实际上,由第三方提供至少一些应用程序。还假设在如图2所示的分布式开发环境中开发大量应用程序。例如,在为自主车辆开发的应用程序大致分为两种类型的情况下,即,需要高可靠性的应用程序,例如,驱动系统控制(例如,DSU以及为方便用户而提供的高度通用的应用程序,例如,与用户服务相关联的信息娱乐(例如,音频仪器和互联网连接服务)和车辆内部环境控制(例如,空调控制),前一类型的应用程序可以在内部开发,而后一应用程序可以由第三方提供。
然而,当第三方提供的应用程序输出由第三方在“识别”、“情境理解”、“行为规划”和“行为控制”的一系列流程中有意或错误地产生的错误数据时,可能会在整个系统中产生故障。
因此,在下文的本说明书中提出了一种技术,该技术将称为容器方法的分组方法引入到使用发布者/订户类型异步通信模型的系统中,并且将通信限于属于容器的组件单元(例如,应用程序)或者组件单元中包括的软件所属的容器。根据这种技术,组件单元中包含的任何组件单元或软件的分组都是可以实现的,同时保持组件单元开发的独立性。
此外,在下文的本说明书中提出了一种技术,该技术在发送信息之前,根据分配给每个组件单元的特性(例如,根据每个组件单元的安全级别降低信息)处理从相同源接收的信息。
此外,在下文的本说明书中提出了一种技术,该技术在系统操作期间检测由在更新或添加的组件单元中包括的软件引起的故障,并且在继续系统操作的同时,将操作切换到在更新或添加导致故障的软件之前已经保证其操作的软件的操作。
此外,在下文的本说明书中提出了一种技术,该技术通过暂时存储与当前正在更新的组件单元相关联的发送数据和接收数据,并且在更新后重新启动从暂时存储的发送数据和接收数据开始的数据的连接,来安全地更新或添加组件单元中包括的组件单元或软件。
此外,在下文的本说明书中提出了一种技术,该技术实现了由组件单元在物理级别(分组容量)和逻辑级别(用于发布者/订户通信的主题数量)上发送或接收的数据量的限制,并且将网络资源均匀地分配给相应的多租户(在为多个供应商提供组件单元的情况下)。
根据在本实施方式中应用的发布者/订户类型通信模型,创建和发送消息的发送方客户端(生产者)被称为发布者,而消息接收方客户端(消费者)被称为订户。发布者不考虑谁是发送的目的地,只向服务器发出消息(发布)。同时,订户向服务器发出订阅消息的请求(订阅)。此后,根据从发布者发送的消息的类型和属性,将消息分发给请求该消息的订户。发布者和订户不需要意识到彼此。此外,订户只能接收订户所需的消息。
此外,执行指定被称为“主题”的命名逻辑信道的异步通信的模式也可以被称为基于主题的发布者/订户类型通信。从发布者发送的消息记录在服务器(主服务器)中被称为主题的发送目的地中。此后,服务器将提供给发布者发送的消息的主题与订户接收并记录的主题进行匹配,并将该主题分发到请求分发该主题的订户(即,订阅该主题)。注意,从一个或多个发布者接收的消息可以记录在一个主题中。此外,一个或多个订户可以记录相同的主题。订户可以从记录的主题接收多个发布者的消息。记录了相同主题的多个订户可以从该主题接收相同的消息。
本文描述了在本说明书中使用的相应术语“容器”、“节点”、“代理”、“主节点”和“主题”。
容器:
容器是由虚拟NIC(网络接口卡)在逻辑上分离的地址或名称空间或者由每个NIC在物理上分离的名称空间等。容器可以被认为是分成网段的系统管理区域。容器分为两种类型,即“容器主机”和“容器访客”。容器主机是仅可靠的主机节点操作的空间。同时,容器访客是仅需要与主机节点分离的访客节点操作的空间。例如,由第三方提供的应用程序或库程序需要与主机节点分离,并且在容器访客中操作(“应用程序”和“库程序”在下文中分别缩写为“应用程序”和“库”)。此外,其可靠性没有通过操作保证或认证来保证的应用程序或库需要与主机节点分离,并且在容器访客中操作。注意,本说明书中使用的术语“分离”主要指两个实体彼此独立存在的状态。假设本文也使用的术语“隔离”包含在“分离”的含义中。
节点:
节点对应于应用程序或应用程序在容器中操作的进程(程序代码在下文中称为“应用程序”,而由系统的处理器执行的进程在下文中称为“节点”)。节点指定被称为“主题”的命名逻辑信道,并将对主题的订阅需求或发布需求发送给该节点所属容器的主节点。此后,在找到可连接伙伴的情况下(更具体地,在主机中建立了与期望的连接伙伴的匹配的情况下),通过获取关于通信伙伴的ID信息(例如,进程ID),可以实现使用发布者/订户类型消息和RPC(远程进程调用)的单向通信。节点(应用程序)将关于应用程序名称、由应用程序提供的主题名称、或者应用程序将为新应用程序的开发者执行订阅数据和发布数据中的哪一个的信息,作为API发布。
该节点可以分为“主机节点”和“访客节点”。主机节点是可靠的应用程序或库在容器主机中操作的进程。同时,访客节点是由第三方提供的应用程序或库、可靠性没有得到保证的应用程序或库等在容器访客中操作的进程。在以下对处理流程等的描述中,术语“容器主机”也用来代替“主机节点”,术语“容器访客”也用来代替“访客节点”在这种情况下,注意,“主机节点”和“访客节点”分别作为“主机节点”和“访客节点”所属的“容器主机”和“容器访客”的一部分执行通信进程等。
代理:
代理(代理节点)管理包含以下项目(a)到(d)的映射表。代理的基本功能类似于节点的基本功能。然而,在与容器访客的主节点通信的情况下,代理指定容器访客的地址并经由网络与容器访客通信。
(a)能够在容器主机中指定节点(订阅节点、发布(通告)节点)的主题标识符
(b)能够在容器访客中指定节点(订阅节点、发布(通告)节点)的主题标识符
(c)容器访客的地址(例如,作为一般示例允许的IP地址(URI)
(d)容器访客的认证状态(验证)和安全级别、在订户的程序更新过程中发送和接收的数据
主节点:
主节点从容器中的节点接收订阅需求和发布需求,并管理节点之间的对应关系(即订阅节点和发布(通告)节点之间针对每个主题的对应关系)。此外,在订阅节点和发布(通告)节点关于相同主题彼此匹配的情况下,主节点向相应节点(至少发送侧的发布(通告)节点)通知通信伙伴(接收侧的订阅节点)的ID(例如,进程ID、程序名称、发送目的地(例如,IP地址、端口)),以启动节点之间(例如,节点和代理之间)的发布者/订户类型消息收发和RPC。
主节点可以分为“主机主节点”和“访客主节点”。主机主节点是在容器主机中操作的主节点,而访客主节点是在容器访客中操作的主节点。
主题:
主题是以下名称或标识符(ID):用于在订阅或发布(通告)消息的节点处创建具有公共命名逻辑信道的数据通信路由。本文的容器访客名称是在注册访客应用程序时创建的。
主题名称(ID)="/"+命名逻辑信道名称
容器访客的主题名称="/"+容器访客名称+"/"+命名逻辑信道名称
使用容器作为应用程序操作环境
接下来描述容器用作应用程序操作环境的情况。
开发者已经针对某个自主操作设备100(例如,机器人、自主车辆、无人驾驶飞行器(无人机))开发了新的应用程序,并且新应用程序在自主操作设备100上与其他应用程序一起操作,开发者将该开发的应用程序记录在服务器中。此后,允许开发者将开发的应用程序安装在被称为由与外部逻辑分离的地址或名称空间构成的容器的隔离空间中,并且在自主操作设备100上操作开发的应用程序。
安装在容器中的应用程序作为被称为节点的进程来操作。如上所述,容器分为容器主机和容器访客。
容器主机被设置为仅可靠的主机节点操作的空间。例如,满足下面给出的预定条件的应用程序安装在容器主机中,并作为主机节点操作。
-由自主操作设备100的主体的开发者开发的应用程序
-某个安全级别或更高级别的应用程序
-已经验证其操作的应用程序
此外,容器访客被设置为需要与主机节点分离的访客节点操作的空间。例如,不满足主机节点所需的前述预定条件但是分组成以下面给出的方式定义的预定单元的应用程序例如安装在容器访客中,并且在与主机节点分离(独立于容器主机)的同时,作为访客节点操作。使用容器的分组方法实现了应用程序开发的独立性。
-以调试软件制造商为单位的组
-以由第三方制造的应用程序为单位的组
-某个安全级别或更低级别的组
-未验证其操作的应用程序的组
满足上述预定条件的应用程序安装在容器主机中,并且每个应用程序作为主机节点操作,以实现节点之间的有组织的组通信。更具体地,在容器主机中的节点之间实现利用发布者/订户类型通信机制的数据发送和接收。如上所述,在发布者/订户类型的通信中,允许节点经由称为主节点的进程与另一节点通信。在这种情况下,预定的主题名称可以被指定为用于在节点之间通信的通信路由。指定主题名称的通信对应于使用命名通信路径的通信。
参考图7描述了利用发布者/订户类型通信机制的数据发送和接收方法。在该图中,对应于发布者701和订户702以及主节点703的相应节点在容器主机700中操作。
首先,作为发送侧的广告商的发布者701在主节点703中记录主题名称“栏”和由主机名(foo)和端口号(1234)的组合构成的信息“foo:1234”,作为发布者701的ID(S710)。
此外,作为接收侧的订户的订户702要求主节点703发布与主题“栏”的分发源相关联的信息(XML/RPC URI)(S711)。
在订阅节点和发布节点关于主题“栏”彼此匹配的状态下,主节点703通知订户702关于“foo:1234”,作为与作为分发源的发布者701相关联的信息(S712)。
已经接收到来自主节点703的通知的订户702经由TCP套接字通信向发布者701发送主题名称“栏”的订阅请求(连接(“栏”,TCP))(S713)。
响应于该请求,发布者701发布关于订阅TCP服务器的URI(foo:2345)的通知(S714)。
此后,订户702要求订阅TCP服务器为主题名称“栏”的订阅建立连接(连接(foo:2345))(S715)。
响应于该需求,通过从订阅TCP服务器(foo:2345)到订户702的TCP/IP实现主题名为“栏”的主题的分发(S716)。
注意,主题分发需要与主节点703通信,以与主节点703共享主题的名称空间,并且需要在节点(即,发布者701和订户702)之间的P2P通信,以进行实际的数据发送和接收。
例如,假设具有提供数据功能的第一节点和通过使用数据执行处理的第二节点在容器主机中操作。更具体地,第一节点是提供由相机捕捉的图像的应用程序,而第二节点是创建三维地图的应用程序。
第一节点为主节点指定主题名称“图像”,并发送对于数据发送(发布或通告)的需求。相反,第二节点为主节点指定主题名称“图像”,并发送对于数据接收(订阅)的需求。发布(或通告)需求或订阅需求可以首先发送,或者这两个需求可以同时发送。
主节点向对应于发布节点的第一节点通知对应于订阅节点的第二节点的ID(或名称或发送目的地信息),并且在订阅节点和发布(通告)节点关于相同主题名称“图像”彼此匹配的状态下,向对应于订阅节点的第二节点通知对应于发布节点的第一节点的ID(或名称或发送目的地信息)。以这种方式,与主题名称“图像”相关联的数据的发送和接收可以在第一节点和第二节点之间实现。
诸如“图像”的主题名称为要安装在系统中的相应应用程序(或在容器主机中操作的主机节点)执行通信接口的功能。允许开发新应用程序的开发者容易地开发假设为其他应用程序提供数据的应用程序程序以及使用从其他应用程序接收的数据执行处理的应用程序,通告为每个应用程序定义相关联的主题名称,并将该主题名称作为所谓的接口信息向开发者公开来执行该处理,如下表1所示。
[表1]
例如,可以在与开发者的开发工具程序相关联的数据库中管理如上表1所示的信息。该数据库可以在由开发工具程序操作的计算机(例如,图1中的开发设备200)管理的存储器中存储和管理,或者可以在如图2所示的与网络中存在的服务器相关联的计算机或存储器中存储和管理。开发工具程序可以通过选择应用程序名称向开发应用程序的用户显示相关联的主题名称。
通过在与开发工具程序相关联的数据库中管理应用程序使用的主题名称,可以有效地开发应用程序。
通过示例,假设程序开发者通过键盘在程序开发环境中的程序编辑屏幕上输入下面的字符串(注意,右括号“)”有意地从描述中移除,以指示程序输入中间的状态)。
Register_Image(“相机图像应用程序”
开发工具程序管理数据库中表1所示的信息。本文的开发工具程序可以识别数据库的注册应用程序名称,并且例如当应用程序名称“相机图像应用程序”输入到程序编辑屏幕上时,通过下划线、着色、反转或其他方法突出显示字符串“相机图像应用程序”。
在这种情况下,响应于用户使用指示装置(例如,鼠标)选择高亮显示的字符串“相机图像应用程序”的点击(选择)操作,与诸如“发布者(数据发送)主题名称:图像”等应用程序名称相关联的信息显示在字符串“相机图像应用程序”附近的位置。当用户进一步使用诸如鼠标等指示装置再次选择主题名称“图像”的指示位置时,通过自动完成的功能实现后续输入。因此,开发效率提高了。
Register_Image(“相机图像应用程序”、“图像”
开发者记录应用程序
接下来描述例如由新的应用程序开发者发出的用于在容器访客中注册的应用程序预注册请求。
为了发出应用预注册请求,最初需要将包含预定项目描述的注册请求表发送到注册请求处理服务器,以完成注册。至少需要在注册请求表中写入新的应用程序名称和主机应用程序名称。请求要注册的进一步信息的示例包括应用程序开发者名称(制造商名称)、由第三方组织发布的认证信息、安全级别和已开发应用程序的功能描述。然而,要注册的信息不限于这些信息项。
随后,开发的应用程序的注册请求发布到应用程序请求服务器。在本实施方式的描述中,假设在服务器上操作的被称为“代理管理器”的进程执行用于接收该应用程序请求的接收过程。当代理管理器接收到请求时,新的容器名称(新的容器访客名称)和发布的主题名称分配给新的应用程序,并与其他注册信息一起注册在与代理管理器相关联的数据库中。在请求接受时分配的主题名称可以用于对应于容器主机中的应用程序和在容器访客中操作的应用程序的节点和对应于其他应用程序的节点之间的数据发送和接收。下表2是分配给新应用程序并在数据库中注册的信息示例。
[表2]
注册应用程序名称 | 图像识别应用程序 |
容器名称 | 代理A |
主机应用程序名称 | 相机图像应用程序 |
发布者(数据发送)主题名称 | 图像 |
订户(数据接收)主题名称 | 识别结果 |
容器名称不限于如实施方式中由代理管理器在应用程序请求时分配的容器名称,而是可以是预先分配的容器名称。例如,开发者(制造商)可以在应用程序开发之前预先注册,以预先将容器名称分配给注册的开发者名称(制造商名称)。在预先分配容器名称的情况下,预先分配的容器名称可以在上述应用程序请求时写入请求表中,以在与代理管理器以及新注册的应用程序相关联的数据库中管理容器名称。
应用程序开发者可以通过构建已经与注册信息一起开发的应用程序(见表2),并用“[容器名称]/[注册主题名称]”替换包含在应用程序的源代码中的“[注册主题名称”],来生成在系统的预定容器访客中操作的应用程序的代码。注意,上述示例是为了开发帮助的目的,在程序开发环境中,在通过键盘在程序编辑屏幕上输入字符串期间,与应用程序名称相关联的信息显示在输入字符串附近的位置的情况。然而,通过允许向程序开发环境提供包含在数据库中的信息,包括如表2所示的注册请求信息的注册,这种开发援助也是可以实现的。
例如,如图8所示,经历注册请求的应用程序在第八行源代码中包含以下代码。
[数学式1]
ros::Publisher chatter_pub=
n.advertise<std_msgs::String>(“[注册主题名称]”,1000);
在这种情况下,“通告”是程序的进程,其中,该代码要求从不同的节点发送数据,同时指定“[注册主题名称]”的主题,作为执行数据发送的节点。图8中描述的应用程序是对应于包括表2中呈现的信息的注册的应用程序的进程。在作为容器访客中的访客节点操作的情况下,第八行中的命令指示对应的节点执行发布(数据发送)。
在这种情况下,另一节点是订户(数据接收)。因此,对应于表2中呈现的注册信息中的“订户(数据接收)主题名称”的项目的“识别结果”被编程为“[注册主题名称]”。因此,使用表2中显示的注册信息编辑和构建程序的源代码,以下列方式更改第八行中的代码(将“[注册主题名称]”重写为“/代理A/识别结果”),并生成程序代码。
[数学式2]
ros::Publisher chatter_pub=
n.advertise<std_msgs::String>(“/代理A/识别结果”,1000);
以这种方式,在代理管理器中注册的主题可以容易地插入到新注册的应用程序的源代码中。更具体地,用户(应用程序的开发者)可以基于注册请求信息构建在容器访客中操作的应用程序,而不考虑注册请求信息的列表。
第一实施方式
称为容器方法的分组方法引入使用发布者/订户类型异步通信模型的系统中,以独立于在容器主机中操作的主机节点来操作不满足预定条件的应用程序。以这种方式,通过第三方的意图或错误隔离从第三方提供的应用程序输出的错误数据(不满足预定条件),可以避免整个系统中的故障。
容器访客和代理的启动过程
在系统(或OS)的引导过程中,为系统设置从存储器读取的容器主机,并且满足预定条件(如上所述)的应用程序安装在容器主机中并作为主机节点操作。换言之,只有容器主机被设置为可靠主机节点在系统初始状态下操作的空间。
为了独立于在容器主机中操作的主机节点来操作不满足预定条件的应用程序,容器访客需要作为安装该应用程序的空间来启动。
容器访客由具有应用程序启动器功能的管理进程启动。应用程序启动器还管理容器虚拟网络管理,例如,为已启动的容器访客分配一个IP地址。实际上是代理管理器,为容器的虚拟NIC设置IP地址值。然而,分配给相应容器访客的IP地址的管理(进程类似于DHCP服务器的进程)由应用程序启动器执行。
图9以流程图的形式描绘了用于启动容器访客的处理进程。本文假设在容器主机的设置完成之后,已经在容器主机中启动了一个或多个主机节点,并且已经启动了代理管理器。
响应于来自用户(例如,应用程序的开发者)的启动容器访客的请求的发布,应用程序启动器最初检查是否已经创建容器访客虚拟网络(步骤S901)。
在没有读取任何容器访客时还没有创建容器访客网络的情况下(步骤S901中为否),通过以下进程S902-1至S902-2创建容器访客虚拟网络(步骤S902)。
S902-1)创建虚拟网桥(brctl addr命令)。
S902-2)设置网络,例如,虚拟网桥的IP地址(IP地址命令)。
随后,为虚拟网桥设置防火墙,用于拒绝除了对虚拟网桥的IP地址的访问之外的所有通信(iptables命令)(步骤S903)。步骤S902和S903中的处理禁止容器访客和不同容器(例如,容器主机和不同容器访客)之间的直接通信。
在已经创建了容器访客虚拟网络的情况下(步骤S901中为是),或者在没有创建容器访客虚拟网络的状态下(步骤S901中为否),通过上述步骤S902和S903中的处理创建容器访客虚拟网络之后,创建容器访客虚拟NIC。此外,在容器主机侧创建与容器访客虚拟NIC相对的虚拟NIC(步骤S904)。例如,容器访客虚拟NIC的IP地址设置为192.168.91.0/24,而容器主机侧相对虚拟NIC的IP地址设置为172.16.10.0/16。
随后,通过以下进程S905-1至S905-6来设置容器访客虚拟NIC的网络(步骤S905)。
S905-1)创建容器访客虚拟NIC和与虚拟NIC相对的容器主机侧(ip链路命令)。
S905-2)启动与虚拟NIC相对的容器主机侧(ip链路命令)。
S905-3)将与虚拟NIC相对的容器主机侧分配给虚拟网桥(ip链路命令)。
S905-4)在容器访客的初始进程中,向网络名称管理文件的ip netns命令操作目录添加符号链接,以直接操作容器访客的网络名称管理文件(In-s/proc/[容器访客初始进程ID)/ns/net/var/run/netns/[容器访客初始进程ID])。注意,此过程完成了虚拟NIC到容器访客的分配。
S905-5)将虚拟网桥分配给上述S905-4中创建的符号链路(ip链路命令)。
S905-6)为上述S905-4中创建的符号链接设置网络(ip netns命令)。
此后,容器访客虚拟NIC分配给容器访客(步骤S906)。指定容器主机和容器访客之间共享的主题名称。启动代理节点(步骤S907),以结束该进程。
代理管理器为代理节点的程序指定参数,来启动代理节点。本文指定的参数是用于从其他代理节点唯一识别代理节点的ID、容器主机的IP地址、容器主机侧的主机主节点的IP地址、容器主机侧的主题名称、容器访客的IP地址、容器访客侧的访客主节点的IP地址、容器访客侧的主题名称、代理节点发送和接收的数据的队列大小或者执行数据发送的节点。
代理管理器根据预先在数据库中注册的信息启动代理节点(参见开发者注册应用程序)。与网段相关联的信息和开发者注册应用程序时的信息可以与任何数据库相关联地管理。然而,实现不一定需要数据库管理。在这种情况下,相关联的数据库不是由每个代理节点的进程来管理,而是由代理管理器或应用程序启动器(例如,软件启动应用程序)来管理。
图10描绘了容器访客1010在容器主机1000中启动的状态。主机节点1004通过在容器主机1000中安装至少一个应用程序来启动。
在系统中安装不满足预定条件的应用程序的情况下,启动容器访客1010,以独立于在容器主机1000侧操作的主机节点1004来操作应用程序。此后,应用程序安装在容器访客1010中,并作为访客节点1012操作。
应用程序启动器1001根据图9所示的处理进程启动容器访客1010,并管理容器虚拟网络,例如,分配给容器访客1010的IP地址。应用程序启动器1001还在启动容器访客1010时调用代理管理器1002。
代理管理器1002在启动容器访客1010时创建代理节点1005。在代理节点1005启动时,在容器主机1000和容器访客1010之间共享的主题名称提供给容器主机1000侧的主机主节点1003和容器访客1010侧的客户主节点1011中的每一个。
例如,代理管理器1002是代理节点1005的管理工具。当用户希望在系统中安装不满足预定条件的应用程序时,用户通过管理工具等的控制台屏幕向代理管理器1002发出不满足预定条件的应用程序所使用的应用程序(主机节点)的预请求和必要主题。下面的表3呈现了预请求所需的并且存储在数据库中的注册信息的一个示例。同时,代理管理器1002基于对应于预请求的注册信息,参考数据库信息指定容器访客1012使用的主题名称。然而,容器访客使用的主题名称可以由用户在预请求时指定。
[表3]
代理节点1005管理映射表,该映射表包含在次要记录设备(如上所述)中包括的存储器(包括高速缓存)或数据库中的下面呈现的项(a)至(d)。
(a)能够指定主机节点1004的主题标识符
(b)能够指定访客节点1012的主题标识符
(c)容器访客1010的地址
(d)容器访客1010的认证状态(验证)和安全级别、在订户的程序更新过程期间发送和接收的数据
如参考图7所述,根据发布者/订户类型通信模型,发布者在主节点中记录主题,并且订户向主节点发出对主题的需求。当在主节点中发布者和订户之间建立通信时(即,实现名称的结算),在发布者和订户之间进行主题分发。
代理节点1005在图10所示的虚拟网络空间中作为容器主机1000侧的主机节点操作。因此,当在主机节点1004或代理节点1005中的一个是发布者,而另一个是订户的状态下建立主机主节点1003中的主题对应性时,执行从主机节点1004到代理节点1005的主题分发或者从代理节点1005到主机节点1004的主题分发。
相反,代理节点1005作为容器访客1010侧的访客节点操作。因此,当在访客节点1012或代理节点1005中的一个是发布者,另一个是订户的状态下建立访客主节点1011中的主题对应时,执行从访客节点1012到代理节点1005的主题分发或者从代理节点1005到访客节点1012的主题分发。
容器主机1000和容器访客1010中的每一个都是通过虚拟NIC彼此逻辑分离的地址或名称空间。因此,不能在主机节点1004和访客节点1012之间执行直接主题分发。然而,通过用与容器访客1010共享的主题名称的指定来启动代理节点1005,可以在主机节点1004和访客节点1012之间间接发送数据。
在数据从主机节点1004发送到访客节点1012的情况下,容器主机1000侧的代理节点1005要求主机主节点1003发送要分发到访客节点1012的主题名称。随后,容器主机1000侧的主机节点1004在主机主节点1003中注册为发布者,其主题名称由访客节点1012要求。在这种情况下,在主机主节点1003中建立发布者和订户之间的对应关系(实现名称结算),从而执行从主机节点1004到代理节点1005的主题分发。
随后,响应于从主机节点1004接收到主题,代理节点1005作为容器访客1010侧的发布者在访客主节点1011中注册该主题。在这种情况下,在访客主节点1011中建立发布者和订户之间的对应关系(实现名称结算),从而执行从代理节点1005到访客节点1012的主题分发。
另一方面,在数据从访客节点1012发送到主机节点1004的情况下,容器访客1010侧的代理节点1005要求访客主节点1011发送访客节点1012作为发布者在访客主节点1011中注册的主题名称。随后,在访客主节点1011中建立了发布者和订户之间的对应关系(实现了名称结算)之后,执行从访客节点1012到代理节点1005的主题分发。
此外,作为容器主机1000侧的发布者的代理节点1005在主机主节点1003中注册主题,该主题具有与要求从访客主节点1011发送的主题名称相同的主题名称。随后,假设主机节点1004注册为具有相同主题名称的订户,则在主机主节点1003中建立发布者和订户之间的对应关系(实现名称结算)。因此,执行从代理节点1005到主机节点1003的主题分发。
注意,容器主机1000和容器访客1010的名称空间彼此分开。因此,允许主机主节点1003和访客主节点1011使用相同的主题名称。然而,例如,通过向与容器访客1010中的容器主机1000的主题相同的主题的主题名称提供识别信息(例如,前缀(例如,“/host1”)),可以从容器访客1010侧(也从容器主机1000侧)识别主题的通信伙伴,基于该识别信息,容器主机1000侧的通信伙伴是可识别的。
代理管理器1002基于对应于作为代理节点1005的管理工具从用户接收的预请求的注册信息,从数据库中指定容器访客1012使用的主题名称。例如,根据发出预请求的用户的期望,可以给在容器访客1012侧使用的主题名称提供前缀。
图11描绘了在启动容器访客时的处理序列示例。图中描绘的处理序列基本上根据图9中呈现的流程图来执行。
当用户希望在系统中安装不满足预定条件的应用程序时,用户向对应于代理节点(如上所述)的管理工具的代理管理器发出对该应用程序所使用的应用程序(主机节点)的预请求和必要主题。
随后,用户指定主题名称,并向应用程序启动器要求启动具有该主题名称的容器访客(S1101)。例如,本文的用户是要求安装满足预定条件的应用程序的用户。
应用程序启动器准备与分配给容器访客的虚拟网络相关联的信息,并在启动容器访客之前通知虚拟网络的代理管理器(S1102)。
代理管理器要求系统设置容器访客虚拟网络(S1103)。在这种情况下,系统完成容器访客虚拟网络的设置,并通知代理管理器设置完成(S1104)。
随后,代理管理器创建指定数量的代理节点,以允许使用主题名称作为对应于预请求并注册在数据库中的信息来与容器主机侧通信(S1105)。为了简化图,图11仅描绘了一个代理节点。此后,如此启动的代理节点通知代理管理器启动(S1106)。在启动代理节点时,与容器访客共享的主题名称也在容器主机侧指定。
代理管理器通知应用程序启动器容器访客虚拟网络的设置完成以及代理节点的启动完成(S1107)。
已经从代理管理器接收到通知的应用程序启动器启动容器访客。此后,不满足预定条件的应用程序安装在容器访客中,并作为访客节点操作(S1108)。
代理节点在容器主机侧作为主机节点操作。主机节点或代理节点中的一个是发布者,而另一个是订户。执行从主机节点到代理节点的主题分发或者从代理节点到主机节点的主题分发。
相反,代理节点作为容器访客端的访客节点操作。访客节点或代理节点中的一个是发布者,而另一个是订户。执行从访客节点到代理节点的主题分发或者从代理节点到访客节点的主题分发。
容器主机和容器访客都是由虚拟NIC逻辑分离的地址或名称空间。因此,不能在主机节点和访客节点之间执行直接的主题分发。然而,可以通过指定与容器访客共享的主题名称来启动代理节点,从而在主机节点和访客节点之间间接发送数据。
例如,存在这样一种情况,即,希望将图像数据从对应于在容器主机侧操作的“相机图像应用程序”的主机节点发送到对应于在容器访客侧操作的“图像识别应用程序”的访客节点。容器主机侧的代理节点要求主机主节点发送主题名称“映像”,以分发给访客节点。此后,对应于“相机图像应用程序”的主机节点被注册为主题名称为“图像”的主机主节点中的发布者。在这种情况下,在主机主节点中建立(实现了名称结算)发布者和订户之间的对应关系,从而执行从主机节点到代理节点的主题分发。
对应于容器访客侧的“图像识别应用程序”的访客节点被注册为要求访客主节点发送主题名称“图像”的订户。响应于从主机节点接收到主题“图像”,代理节点作为容器访客侧的发布者将主题“图像”注册到访客主节点中。在这种情况下,在访客主节点中建立(实现了名称结算)发布者和订户之间的对应关系,使得执行从代理节点到访客节点的主题“图像”的分发。
尽管为了描述方便,上面已经按照这个顺序描述了容器主机侧的主题分发和容器访客侧的主题分发。然而,容器主机和容器访客彼此并行操作,使得主机节点和访客节点之间的数据通信可以从任何一侧启动。
此外,容器主机和容器访客的名称空间彼此分开。因此,主机主节点和客户主节点可以使用相同的主题名称。然而,例如,通过向与容器访客中的容器主机的主题相同的主题的主题名称提供前缀(例如,“/host1”),可以从容器访客侧(也从容器主机侧)识别主题的通信伙伴,基于该识别信息,容器主机侧的通信伙伴是可识别的。
图12以流程图的形式描绘了用于从容器主机的主机节点到容器访客的访客节点的数据发送的处理进程。
容器主机的主机节点连接到由代理节点提供的容器主机侧的“主题”(即,主机节点被注册为主机主节点中的发布者,以将与主题相关联的数据发送给注册主题的订户)(步骤S1201)。
此后,主机节点向容器主机侧的代理节点提供的主题发送(发布)数据(步骤S1202)。
相反,代理节点接收(订阅)与容器主机侧(主机主节点)的代理节点提供的主题相关联的数据(步骤S1203)。
代理节点还在与容器主机相关联的虚拟网络中,即,在容器访客侧(访客主节点)创建相应的主题(即,代理节点在访客主节点中注册为主题的发布者,以允许与主题相关联的数据发送到注册主题的订户)(步骤S1204)。
此后,容器主机侧的代理节点将从主机节点接收的数据发送(发布)到创建的主题(步骤S1205)。
相反,容器访客侧的访客节点(访客主节点)从代理节点创建的主题接收(订阅)数据(步骤S1206),从而可以接收从主机节点发送的数据。
此外,图13以流程图的形式描绘了用于从容器访客的访客节点到容器主机的主机节点的数据发送的处理进程。
容器访客的访客节点连接到由容器访客侧的代理节点提供的“主题”(即,访客节点在访客主节点中注册为发布者,以允许与主题相关联的数据发送到注册主题的订户)(步骤S1301)。
此后,访客节点向容器访客侧的代理节点提供的主题发送(发布)数据(步骤S1302)。
相反,代理节点接收(预订)与容器访客侧(访客主节点)上的代理节点提供的主题相关联的数据(步骤S1303)。
代理节点还在与容器访客相关联的虚拟网络中,即在容器主机侧(主机主节点)创建相应的主题(即,代理节点在主机主节点中注册为主题的发布者,以允许与主题相关联的数据被发送到注册主题的订户)(步骤S1304)。
此后,代理节点将从容器访客侧的访客节点接收的数据发送(发布)到创建的主题(步骤S1305)。
相反,容器主机侧的主机节点(主机主节点)从代理节点创建的主题接收(订阅)数据(步骤S1306),从而可以接收从访客节点发送的数据。
图14描绘了从容器主机侧(未示出主机节点)到容器访客侧(未示出访客节点)的数据发送的处理序列的示例。
代理节点将关于代理节点的虚拟网络信息与代理管理器预先注册的容器访客侧的主题名称一起注册在访客主节点中(S1401)。
另外,作为发布者的容器主机将关于容器主机的虚拟网络信息与预先在代理管理器中注册的容器主机侧的主题名称一起注册在主机主节点中(作为应用程序的处理的数据发送和接收由未示出的主机节点执行)(S1402)。
相反,作为订户的容器访客等待,直到容器访客侧的主题名称预先在代理管理器中注册,并在访客主节点中注册(作为应用程序进程的数据发送和接收由未示出的访客节点执行)。此后,在确认在访客主节点中注册了期望的主题名称之后,容器访客从访客主节点获取关于代理节点的虚拟网络信息(S1403)。
此外,代理节点等待,直到预先在代理管理器中注册的容器主机侧的主题名称在主机主节点中注册。此后,在确认在主机主节点中注册了期望的主题名称之后,代理节点从主机获取关于作为发布者的容器主机的虚拟网络信息(S1404)。
此后,作为订户的容器访客基于关于代理节点并从访客主节点获取的虚拟网络信息连接到代理节点(S1405)。因此,代理节点和作为订户的容器访客之间的通信路径完成。
随后,代理节点基于由主机节点提供的并从主机主节点获取的虚拟网络信息连接到容器主机(S1406)。因此,作为发布者的容器主机和代理节点之间的通信路径完成。
作为容器主机侧的发布者的容器主机将与主题相关联的数据发送到代理节点(S1407)。
此外,容器访客侧的代理节点将与主题相关联的数据发送给作为订户的容器访客(S1408)。
应当理解,本文没有描述从容器访客侧(访客节点)到容器主机侧(主机节点)的数据发送的处理序列,但是可以通过类似的过程来执行。
如上所述,可以根据类型(例如,根据是否满足预定条件,或者根据条件适合的级别),使用由虚拟NIC逻辑分离的容器来对相应应用程序进行分组。为每个容器创建虚拟网络。每个容器(容器访客)都与外部(容器主机)隔离。此外,虚拟NIC分配给每个容器,而在容器主机侧创建与容器的虚拟NIC相对的虚拟NIC。
图15描绘了使用虚拟NIC的容器网络1500的配置示例。图中描绘的容器网络1500包括多个容器组1510和1520等。在每个容器组1510和1520等中启动一个或多个容器(容器访客)。例如,容器1511和容器1512在容器组1510中启动,而容器1521在容器组1520中启动。假设容器根据例如图9所示的处理进程启动。
虚拟NIC分配给每个容器,并且能够与设置在容器主机侧并与相应容器的虚拟NIC相对的虚拟NIC通信。在图15所示的示例的容器组1510中,虚拟NIC 1511’分配给容器1511,并且虚拟NIC 1512’进一步分配给容器1511。此外,虚拟NIC 1521’分配给容器组1520中的容器1521。此外,在容器主机侧创建与相应容器的虚拟NIC相对的虚拟NIC 1501。容器主机侧上的虚拟NIC 1501可以经由各自为相应容器组创建的虚拟网桥1501-a、1501-b等,与相应容器组中的相应容器的虚拟NIC 1511’、1512’、1521’等通信。
例如,每个容器组1510、1520等分配给相应的应用程序开发者(软件供应商)。因此,一个容器组包括容器的集合,在每个容器中,安装并操作满足条件的应用程序(例如,由相同开发者开发的应用程序),作为节点。
在图15中,通信允许范围由虚线包围。在容器组中相应容器中操作的节点之间的通信通过分配给相应容器的虚拟NIC来实现。例如,在容器1511中操作的节点能够经由分别分配给容器1511和1512的虚拟NIC1511’和1512’与在容器1512中操作的节点通信。相反,在属于不同组的容器中操作的节点包含在分离的子网中,因此不相互通信。例如,在容器1512中操作的节点和在容器1521中操作的节点之间不可能经由分别分配给容器1512和1521的虚拟NIC 1512’和1521’进行通信。
例如,通过使用iptables命令等来操作分组过滤和网络地址转换(NAT)功能的设置,可以实现对通信允许范围施加的前述限制。
第二实施方式
使用由虚拟NIC逻辑分离的容器对相应应用程序进行分组的系统能够在发送信息之前根据分配给每个应用程序的特性处理从相同源接收的信息。例如,根据对应于发送目的地的每个应用程序的安全级别,信息降级。更具体地,通过改变每个容器的容器之间共享的主题来实现降级。参考图16描述了为每个容器改变共享主题的示例。
在图16中假设图像从相机图像应用程序分发到具有共享主题名称作为“图像”的图像识别应用程序。
都满足预定条件的相机图像应用程序(APP1)和图像识别应用程序(APP2)安装在容器主机1600侧,并且分别作为节点1601和节点1602操作。
此外,由第三方提供的认证图像识别应用程序(APP3)安装在容器访客(认证容器)1610中,并且作为访客节点(认证节点)1611操作。认证的容器1610经由代理节点1612与节点1601共享主题“图像”。
此外,由不同的第三方提供的未经认证的图像识别应用程序(APP4)安装在容器访客(未经认证的容器)1620中,并且作为访客节点(未经认证的节点)1621操作。假设相应的容器访客1610和1620由例如图9所示的处理进程启动。未经认证的容器1621通过代理节点1622与节点1601共享主题“图像”。
假设在容器主机1600中操作的节点1602具有高安全级别。因此,相机图像应用程序操作的节点1601和图像识别应用程序操作的节点1602共享主题“/高分辨率图像”。节点1601将相机图像应用程序获取的高分辨率图像无变化地发送到节点1602。
同时,在认证容器1610中操作的认证节点1611具有中间安全级别。因此,根据安全级别,节点1601和认证节点1611之间共享的主题从“/高分辨率图像”变为“/中间分辨率图像”。例如,当代理管理器(图16中未示出)启动代理节点1612时,“中间分辨率图像”被指定为容器主机1600和认证容器1610之间共享的主题名称。因此,节点1601执行用于降低原始高分辨率图像的分辨率的处理,并且响应于来自代理节点1612的对主题的需求,发送中间分辨率图像。因此,认证节点1611接收中间分辨率图像。
相反,在未经认证的容器1620中操作的经认证的节点1621具有低安全级别。因此,根据安全级别,节点1601和未认证节点1621之间共享的主题从“/高分辨率图像”变为“/低分辨率图像”。例如,当代理管理器(图16中未示出)启动代理节点1622时,“/低分辨率图像”被指定为容器主机1600和未经认证的容器1620之间共享的主题名称。因此,节点1601执行用于降低原始高分辨率图像的分辨率的处理,并且响应于来自代理节点1622的对主题的需求发送低分辨率图像。因此,未经认证的节点1621接收低分辨率图像。
下面的表4共同表示根据图16中描述的容器的安全级别的共享主题的修改示例。
[表4]
第三实施方式
使用由虚拟NIC逻辑分离的容器对相应应用程序进行分组的系统能够检测故障,并且在应用程序在系统操作期间导致故障的情况下停止和重新启动更新或添加的应用程序。
关于与容器访客共享的主题,假设的系统在容器主机侧的主机节点和代理节点之间执行发布者/订户类型的通信,并且在容器访客侧的访客节点和代理节点之间执行发布者/订户类型的通信。此后,例如,当检测到从安装更新或添加的应用程序并在该应用程序下操作的访客节点接收到的数据的异常值时,容器主机侧的代理节点不将数据发送到主机节点,而是指示停止该应用程序。
图17示出了一种机制,该机制通过利用使用容器对应用程序进行分组的方法来停止和重新启动给出不适合于规范的输出的应用程序。
容器主机1710和容器访客1720在相应的执行环境中启动。此外,监视相应容器的操作的监视框架(FW)1740在相应的执行环境中操作。
安装满足预定条件的应用程序,以使主机节点1711在容器主机1710侧的应用程序下操作。相反,安装不满足预定条件的应用程序,以使访客节点1721在容器访客1720侧的应用程序下操作。另外,指定与容器访客1720侧共享的主题“Topic1”的代理节点1712从容器主机1710侧启动。
在容器访客1720侧,访客节点1721发布与主题1相关联的数据,代理节点1712订阅该数据。当代理节点1712在这种状态下检测到从访客节点1721接收的数据的异常值时,代理节点1712向监视框架1740通知异常。
当监视框架1740检测到容器访客1720的异常或在容器访客1720中操作的访客节点1721的异常时,监视框架1740停止访客节点1721,并立即将访客节点1721切换到在作为不同容器的容器访客1730的一侧操作的访客节点1731。
容器访客1730是在执行环境中启动的容器,其实现方式不同于容器访客1720的实现方式。可替换地,访客节点1731是通过在容器访客1730中安装比访客节点1721的应用程序更老且更稳定的版本的应用程序来操作的节点。
图18描绘了用于停止和重新启动应用程序的处理序列示例,该应用程序给出了不适合于规范的输出。
最初,作为发布者的容器访客向代理节点发送数据(由未示出的访客节点执行作为应用程序进程的数据发送和接收)(S1801)。
代理节点检查从容器访客发送的数据是否落在预先指定的输出值的指定范围内。当检测到数据在输出值的指定范围之外时,代理节点通知监视框架作为发布者的容器访客的异常(由未示出的访客节点执行作为应用程序进程的数据发送和接收)(S1802)。
监视框架响应于来自代理节点的异常通知,指示作为引起异常的发布者的容器访客(访客节点)停止(S1803)。
监视框架还在与引起异常的容器访客的执行环境不同的执行环境中启动容器访客,并且在容器访客中安装应用程序,该应用程序与引起异常的容器访客的应用程序相同,但是版本更旧且更稳定,以使容器访客作为稳定发布者操作(S1804)。
第四实施方式
通过暂时存储与当前正在更新的应用程序相关联的发送数据和接收数据,并在更新后重新启动与暂时存储的发送数据和接收数据的连接,使用由虚拟NIC逻辑上分离的容器对相应应用程序进行分组的系统能够安全地更新或添加应用程序或应用程序中包括的程序。
关于与容器访客共享的主题,采用的系统在容器主机侧的主机节点和代理节点之间执行发布者/订户类型的通信,并且在容器访客侧的访客节点和代理节点之间执行发布者/订户类型的通信。例如,当更新与当前作为发布者发送数据的访客节点相关联的应用程序时,代理节点暂时存储从发布者发送的数据。在更新完成之后,访客节点重新连接到代理节点,以重新启动数据发送。此外,例如,当代理节点在向作为订户连接的访客节点的数据发送期间更新应用程序时,代理节点暂时存储接收数据。在更新完成之后,代理节点重新启动向访客节点发送数据。
图19示意性地描绘了用于在更新应用程序期间暂时存储与访客节点相关联的发送数据和接收数据的机制。在图中假设代理节点1902从容器主机1900侧启动,指定与容器访客1910共享的主题名称。在这种情况下,假设代理节点1902接收从作为发布者的主机节点1901发送的数据,并且将该数据从容器访客1910侧的代理节点1902发送到作为订户的访客节点1911。还假设通过更新或添加应用程序或应用程序中包括的程序,更新前的访客节点1911更新到访客节点1912。
应用程序更新器1903是具有管理应用程序更新功能的管理进程。应用程序更新器1903指示代理节点1902在更新与作为订户的访客节点1911相关联的程序之前,将已经从作为发布者的主机节点1901发送的数据暂时存储在由代理节点1902提供的队列中。以这种方式,从作为发布者的主机节点1901发送的数据保留在代理节点1902中,即使当状态发生变化时(例如,订户结束)。
随后,应用程序更新器1903更新与作为订户的访客节点1911相关联的程序。在程序更新完成后,应用程序更新器1903随后通知代理节点1902程序更新完成。
当从应用程序更新器1903接收到程序更新完成的通知时,代理节点1902重新开始向订户(更新后的访客节点1912)发送数据,该数据从发布者(主机节点1901)接收并暂时存储的发送数据开始。
图20描绘了用于在更新应用期间暂时存储与容器访客(包括更新目标访客节点)相关联的发送数据和接收数据以及在应用程序更新之后重新启动数据发送的处理序列示例。请注意,该图描述了当前正在更新的容器访客(更新目标访客节点)作为发布者操作的情况下的处理序列示例。
用户要求更新与当前作为发布者操作的容器访客相关联的程序(更新之前的访客节点)(S2001)。
应用程序更新器响应于来自用户的更新请求,指示代理节点在更新(更新目标访客节点)之前暂时存储到作为发布者的容器访客的通信连接(S2002)。代理节点响应于来自应用程序更新器的指令,暂时存储从容器访客(更新目标访客节点)发送(发布)的数据。
此后,应用程序更新器更新与作为发布者的容器访客中的更新目标访客节点相关联的程序(S2003)。本文假设程序针对每个版本存储在特定目录中,并且实际的更新进程仅仅是用于启动新程序的进程。
在与作为发布者的容器访客相关联的程序(对应于更新的访客节点的程序)的更新进程完成之后,应用程序更新器随后通知代理节点更新完成(S2004)。
发布者(容器访客中更新后的访客节点)重新连接到代理节点,以重新启动数据发送(发布)(S2005)。代理节点进一步重新启动向容器主机(未示出)中的主机节点发送数据,该数据从暂时存储的数据开始。
图21描绘了用于在更新应用期间暂时存储与容器访客(包括更新目标访客节点)相关联的发送数据和接收数据以及在应用程序更新之后重新开始数据发送的另一处理序列示例。注意,该图描述了当前正在更新的容器访客(更新目标访客节点)作为订户操作的情况下的处理序列示例。
用户要求更新与当前作为订户操作的容器访客相关联的程序(更新之前的访客节点)(S2101)。
应用程序更新器响应于来自用户的更新请求,指示代理节点在更新之前(更新之前的访客节点)暂时存储到作为订户的容器访客的通信连接和在更新期间接收的数据(S2102)。代理节点将从主机节点(未示出)发送(发布)的数据暂时存储在容器主机中,并且需要响应于来自应用程序更新器的指令发送到容器访客(更新目标访客节点)。
此后,应用程序更新器更新与订户相关联的程序(更新容器访客中的目标访客节点)(S2103)。本文假设程序针对每个版本存储在特定目录中,并且实际的更新进程仅仅是用于启动新程序的进程。
在完成与订户(容器访客(访客节点))相关联的程序的更新进程之后,应用程序更新器随后通知代理节点更新完成(S2104)。
代理节点从在订户(对应于更新目标并包括在容器访客中的访客节点)更新期间暂时存储的数据重新开始向用户(在容器访客中更新之后的访客节点)发送数据(S2105)。代理节点进一步重新开始向容器访客(更新后的访客节点)发送数据,该数据发送从暂时存储的数据开始。
第五实施方式
使用由虚拟NIC逻辑分离的容器对相应应用程序进行分组的系统能够基于物理级别(分组容量)和逻辑级别(发布者/订户通信中使用的主题数量)来限制容器之间发送和接收的数据量。
关于与容器访客共享的主题,所采用的系统在容器主机侧的主机节点和代理节点之间执行发布者/订户类型的通信,并且在容器访客侧的访客节点和代理节点之间执行发布者/订户类型的通信。通过使用代理节点控制通信量,可以实现将网络资源统一分配给相应容器。
在容器环境中使用多个供应商(多租户)时,可以实现基于主题数量的逻辑级别流量限制(应用层级别限制)以及网络流量限制(网络层级别限制)。
此外,根据每个容器的应用特性,可以实现基于主题数量的限制。例如,在开始代理节点时,代理管理器根据希望安装应用程序的用户(或根据要安装在启动的容器访客中的应用程序的特征、应用程序的开发者的属性等),向代理服务器设置施加在访客节点上的通信量的限制(例如,固定时间段内发送主题的数量或发送分组的量)。在启动多个代理节点和多个容器访客时,根据相应的应用程序对每个代理节点设置通信量的限制,以便安装多个供应商的应用程序。
图22示出了基于主题通信量的节流机制。该图描绘了代理节点2202从容器访客2210侧的访客节点2211(发布者)到容器主机2200侧的主机节点2201(订户)的数据通信量的限制。
此外,图23描绘了用于基于主题通信量进行节流的处理序列示例。
作为发布者操作的容器访客向代理节点发送数据(S2301)。
代理节点对关于固定时间段内发送主题的数量或发送分组的数量的通信量施加限制。当从容器访客执行超过通信量限制的数据通信时,代理节点向对应于发送源的访客节点通知超出量(S2302)。
第六实施方式
参考图24详细描述通过使用容器分组来隔离不满足预定条件的应用程序的机制。
在图24中的容器主机2400侧,安装数据发送应用程序并作为主机节点2401(发布者)操作,同时安装数据接收应用程序并作为主机节点2402操作。
作为在容器访客2410启动之前执行的处理,对应于用于数据发送的主机节点2401的代理节点2403(发布者)的主题名称和对应于用于数据接收的主机节点2402的代理节点2404(订户)的主题名称记录在容器访客2410的访客主节点2411中。
启动的容器访客2410是由虚拟NIC逻辑分离的地址或名称空间。不满足预定条件的应用程序(例如,由第三方提供的应用程序)安装在容器访客2410中,并且作为访客节点2412操作。本文假设访客节点2412以与代理节点2403的主题名称相同的主题名称在访客主节点2411中注册为订户,并且以与代理节点2404的主题名称相同的主题名称在访客主节点2411中注册为发布者。
容器访客2410是由虚拟NIC逻辑分离的地址或名称空间。因此,容器访客2410与容器主机2400隔离。访客节点2412能够经由在容器访客2410侧的访客主节点2411中注册的主题向容器访客2410(即容器主机2400侧)的外部发送数据和从容器访客2410的外部接收数据。
允许访客节点2412从注册在访客主节点2411中的代理节点2403接收保留在主机节点2401中的发送数据,但是不允许从在容器主机2400中操作的主机节点2405(未注册在访客主节点2411中)接收数据。
此外,允许访客节点2412通过向注册在访客主节点2411中的代理节点2404发送数据来经由代理节点2404向主机节点2402发送数据,但是不允许向在容器主机2400中操作的主机节点2405发送数据(未注册在访客主节点2411中)。
此外,为了从访客节点2412接收数据而启动的代理节点2404检查来自访客节点2412的接收数据是否落在预先为应用程序指定的输出值的指定范围内。此后,如第五实施方式中所述,代理节点2404在检测到数据在输出值的指定范围之外时,执行应对进程,例如,停止访客节点2412以及从较旧且更稳定版本的应用程序重新启动访客节点。
第七实施方式
如上参考图6所述,被分类为“识别”、“情境理解”、“行为规划”和“行为控制”的大量应用程序在诸如机器人、自主车辆和无人驾驶飞行器等自主操作设备100上操作。
图25描绘了应用于机器人的自主操作设备100的应用程序的配置示例。如图所示,从识别应用程序获取的数据经由情境理解应用程序“输入适配器”输入到具有原始算法的图像分析应用程序“图像分析器”。
当“图像分析器”满足预定条件并保证正常操作时,“图像分析器”向行为规划应用程序“路径规划器”输出适当的图像分析结果。因此,“路径规划器”可以选择机器人的适当操作路线。然而,在“图像分析器”不满足预定条件的情况下,“图像分析器”可能出于恶意或程序的任何错误向“路径规划器”输出不适当的图像分析结果。在这种情况下,“路径规划器”无法选择机器人的合适操作路径。
因此,如图26所示,引入了使用容器的分组。更具体地,启动由附图标记2601指示的容器访客。不满足预定条件的“图像分析器”安装在容器访客2601中,并作为与外部隔离的节点操作。此外,由附图标记2602和2603指示的代理节点分别在“图像分析器”的输入侧和输出侧准备,以限制向“输入适配器”和“路径规划器”发送和从“输入适配器”和“路径规划器”接收的数据,从而防止向“路径规划器”输出不适当的图像分析结果。在从“图像分析器”接收的数据超出预先指定的输出值的指定范围的情况下,代理节点2603可以使用第三实施方式(图17)中呈现的监视框架来停止“图像分析器”的节点。此外,代理节点2603可以通过使用监视框架将“图像分析器”的节点切换到包括具有等效功能的不同节点的容器。
第八实施方式
图27描绘了应用于自主车辆的自主操作设备100的应用程序的配置示例。如图所示,从都用作情境理解应用程序的“提供给地点的交通规则”和“空间和状态”输出的数据输入到“可通行地点确定应用程序”。
只要“可通行地点确定应用程序”满足预定条件并保证正常操作,适当可通行地点的确定结果输出到行为规划应用程序“行为规划”。因此,“行为规划”可以为自主车辆创建适当的操作规划。然而,在“可通行地点确定应用程序”不满足预定条件并且由于恶意或程序的任何错误而向“行为规划”输出不适当的确定结果的情况下,“行为规划”不能为自主车辆创建适当的操作规划。
因此,如图28所示,引入了使用容器的分组。更具体地,由附图标记2801指示的容器访客启动。不满足预定条件的“可通行地点确定应用程序”安装在容器客2601中,并作为与外部隔离的节点操作。此外,由附图标记2802和2803指示的代理节点和由附图标记2804指示的代理节点分别在“可通行地点确定应用程序”的输入侧和输出侧准备,以限制由“提供给地点的交通规则”和“空间和状态”接收的数据,并将其发送到“行为规划”,从而防止将不适当的可通行地点确定结果输出到“行为规划”。在从“可通行地点确定应用程序”接收的数据超出预先指定的输出值的指定范围的情况下,代理节点2804可以停止“可通行地点确定应用程序”的节点。此外,代理节点2804可以通过使用监视框架将“可通行地点确定应用程序”的节点切换到包括具有等同功能的不同节点的容器。
因此,根据本说明书中公开的技术,使用发布者/订户类型异步通信模型的系统引入了称为容器方法的分组方法,使得通信可以限于属于容器的组件单元(例如,应用程序)或者组件单元中包括的软件所属的容器。根据这种技术,组件单元中包含的任何组件单元或软件的分组都是可以实现的,同时保持组件单元开发的独立性。
此外,根据本说明书中公开的技术,通过使用容器分组,可以在发送信息之前,根据分配给每个组件单元的特性(例如,根据每个组件单元的安全级别降低信息)来处理从相同源接收的信息。
此外,根据本说明书中公开的技术,通过使用容器分组,在包括在更新或添加的组件单元中的软件在系统操作期间导致故障的情况下,可以检测故障等,并且在继续系统操作的同时,切换到软件的操作,其操作在导致故障等的软件更新或添加之前已经得到保证。
此外,根据本说明书中公开的技术,通过使用与容器分组,可以通过暂时存储与当前正在更新的组件单元相关联的发送数据和接收数据,并且在更新后重新启动从暂时存储的发送数据和接收数据开始的数据的连接,从而安全地更新或添加组件单元中包括的组件单元或软件。
此外,根据本说明书中公开的技术,通过使用容器分组,在物理级别(分组量)和逻辑级别(用于发布者/订户通信的主题数量)实现了对组件单元发送或接收的数据量的限制,并且甚至可以将网络资源均匀地分配给相应多租户(在为多个供应商提供组件单元的情况下)。
[工业适用性]
上面已经参考具体实施方式,详细描述了本说明书中公开的技术。然而,显然,本领域技术人员可以在不脱离本说明书中公开的技术主题的情况下对实施方式进行修正或替换。
本说明书中公开的技术可应用于自主操作设备,例如,机器人、自主车辆和无人驾驶飞行器(无人机),该自主操作设备在安装以实现自主或自适应操作的应用程序下操作。此外,本说明书中公开的技术类似地不仅适用于自主操作设备,而且适用于安装应用程序或应用程序中包括的软件的各种类型的信息处理设备以及基于发布者/订户类型通信模型在进程之间执行通信的各种类型的信息处理设备。
简而言之,本说明书中公开的技术已经通过示例的方式进行了描述,并且本说明书的内容不应以受限的方式进行解释。应该考虑所附权利要求来确定本说明书中公开的技术的主题。
注意,本说明书中公开的技术可以具有以下配置。
(1)一种信息处理设备,包括:
启动部,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及
代理管理部,其启动代理节点,代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。
(2)根据(1)所述的信息处理设备,其中,
启动部启动第二容器,第二容器包括通过虚拟NIC与第一容器逻辑分离的地址或名称空间。
(3)根据(2)所述的信息处理设备,其中,
预定通信模型包括发布者/订户类型通信模型,并且
启动部指定与第二容器共享的主题名称,以启动代理节点。
(4)根据(3)所述的信息处理设备,其中,
第一节点发送与由代理节点在第一容器中提供的第一主题相关联的数据,
代理节点在与第一主题相关联的第二容器中创建第二主题,并发送从第一节点接收的数据,并且
第二节点从第二主题接收数据。
(5)根据上述(3)或(4)所述的信息处理设备,其中,
第二节点发送与由代理节点在第二容器中提供的第二主题相关联的数据,
代理节点在第一容器中创建与第二主题相关联的第一主题,并发送从第二节点接收的数据,并且
第一节点从第一主题接收数据。
(6)根据上述(1)至(5)中任一项所述的信息处理设备,其中,
第一节点包括通过在第一容器中安装满足预定条件的第一应用程序而进行操作的节点,并且
启动部在第二容器中安装不满足预定条件的第二应用程序,以使第二节点进行操作。
(7)根据上述(6)所述的信息处理设备,其中,
预定条件包括应用程序开发者、应用程序安全级别或应用程序操作验证中的至少一项。
(8)根据上述(1)至(7)中任一项所述的信息处理设备,其中,
第一节点根据作为第二节点操作的应用程序的特性对发送到代理节点的数据执行处理。
(9)根据上述(1)至(7)中任一项所述的信息处理设备,其中,
第一节点根据在第一容器和第二容器之间共享的主题名称对发送到代理节点的数据执行处理。
(10)根据上述(1)至(9)中任一项所述的信息处理设备,还包括:
监视部,监视第二节点的操作。
(11)根据上述(10)所述的信息处理设备,其中,
代理节点检查从第二节点接收的数据,并且当检测到异常时向监视部通知数据的异常。
(12)根据上述(10)或(11)所述的信息处理设备,其中,
监视部停止已经检测到异常的第二节点。
(13)根据上述(12)所述的信息处理设备,其中,
监视部重新启动比第二节点更稳定的应用程序以操作第三节点。
(14)根据上述(1)至(13)中任一项所述的信息处理设备,还包括:
应用程序更新部,更新作为第二节点操作的应用程序,其中,
应用程序更新部、代理节点在应用程序更新期间存储去往第二节点的发送数据和来自第二节点的接收数据,并且在应用程序更新之后重新启动与第二节点的连接,以用于从存储的发送和接收数据开始的发送和接收数据。
(15)根据上述(1)至(14)中任一项所述的信息处理设备,其中,
代理节点限制从第二节点接收的通信量。
(16)根据上述(15)所述的信息处理设备,其中,
当第二节点发送超过限制的数据时,代理节点通知第二节点超过限制。
(17)一种信息处理方法,包括:
启动步骤,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及
代理管理步骤,启动代理节点,该代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。
(18)一种以计算机可读形式编写的计算机程序,使计算机用作:
启动部,启动与第一容器分离的第二容器以在第二容器中启动第二节点,在第一容器处由第一节点进行操作;以及
代理管理部,启动代理节点,该代理节点在第一容器中与第一节点执行基于预定通信模型的数据通信并且在第二容器中与第二节点执行基于预定通信模型的数据通信。
附图标记列表
100...自主操作设备(真实机)
110...主体
111...处理器
112...存储器
113...通信调制解调器
114...电池
115...USB端口
116...GPS
120...模块
121...致动器
122...处理器
123...存储器
124...传感器
125...通信调制解调器
200...开发设备
210...计算机主体
211...处理器
212...GPU
213...存储器
214...USB端口
215...通信调制解调器
220...显示器
230...用户界面。
Claims (18)
1.一种信息处理设备,包括:
启动部,启动与第一容器分离的第二容器以在所述第二容器中启动第二节点,在所述第一容器处由第一节点进行操作;以及
代理管理部,启动代理节点,所述代理节点在所述第一容器中与所述第一节点执行基于预定通信模型的数据通信并在所述第二容器中与所述第二节点执行基于所述预定通信模型的数据通信。
2.根据权利要求1所述的信息处理设备,其中,
所述启动部启动包括通过虚拟NIC与所述第一容器逻辑分离的地址或名称空间的所述第二容器。
3.根据权利要求2所述的信息处理设备,其中,
所述预定通信模型包括发布者/订户类型通信模型,并且
所述启动部指定与所述第二容器共享的主题名称,以启动所述代理节点。
4.根据权利要求3所述的信息处理设备,其中,
所述第一节点发送与由所述代理节点在所述第一容器中提供的第一主题相关联的数据,
所述代理节点在与所述第一主题相关联的所述第二容器中创建第二主题,并发送从所述第一节点接收的数据,并且
所述第二节点从所述第二主题接收数据。
5.根据权利要求3所述的信息处理设备,其中,
所述第二节点发送与由所述代理节点在所述第二容器中提供的第二主题相关联的数据,
所述代理节点在与所述第二主题相关联的所述第一容器中创建第一主题,并发送从所述第二节点接收的数据,并且
所述第一节点从所述第一主题接收数据。
6.根据权利要求1所述的信息处理设备,其中,
所述第一节点包括通过在所述第一容器中安装满足预定条件的第一应用程序而进行操作的节点,并且
所述启动部在所述第二容器中安装不满足所述预定条件的第二应用程序,以使所述第二节点进行操作。
7.根据权利要求6所述的信息处理设备,其中,
所述预定条件包括应用程序开发者、应用程序安全级别以及应用程序操作验证中的至少一项。
8.根据权利要求1所述的信息处理设备,其中,
所述第一节点根据作为所述第二节点进行操作的应用程序的特性对发送到所述代理节点的数据执行处理。
9.根据权利要求1所述的信息处理设备,其中,
所述第一节点根据在所述第一容器和所述第二容器之间共享的主题名称对发送到所述代理节点的数据执行处理。
10.根据权利要求1所述的信息处理设备,还包括:
监视部,监视所述第二节点的操作。
11.根据权利要求10所述的信息处理设备,其中,
所述代理节点检查从所述第二节点接收的数据,并且当检测到异常时向所述监视部通知所述数据的异常。
12.根据权利要求10所述的信息处理设备,其中,
所述监视部停止已经检测到异常的所述第二节点。
13.根据权利要求12所述的信息处理设备,其中,
所述监视部重新启动比所述第二节点更稳定的应用程序以操作第三节点。
14.根据权利要求1所述的信息处理设备,还包括:
应用程序更新部,更新作为所述第二节点进行操作的应用程序,其中,
所述应用程序更新部、所述代理节点在所述应用程序更新期间存储去往所述第二节点的发送数据和来自所述第二节点的接收数据,并且在所述应用程序更新之后根据存储的所述发送数据和所述接收数据重新启动至所述第二节点的连接。
15.根据权利要求1所述的信息处理设备,其中,
所述代理节点限制从所述第二节点接收的通信量。
16.根据权利要求15所述的信息处理设备,其中,
当所述第二节点发送超过限制的数据时,所述代理节点通知所述第二节点超过限制。
17.一种信息处理方法,包括:
启动步骤,启动与第一容器分离的第二容器以在所述第二容器中启动第二节点,在所述第一容器处由第一节点进行操作;以及
代理管理步骤,启动代理节点,所述代理节点在所述第一容器中与所述第一节点执行基于预定通信模型的数据通信并在所述第二容器中与所述第二节点执行基于所述预定通信模型的数据通信。
18.一种以计算机可读形式编写的计算机程序,使计算机用作:
启动部,启动与第一容器分离的第二容器以在所述第二容器中启动第二节点,在所述第一容器处由第一节点进行操作;以及
代理管理部,启动代理节点,所述代理节点在所述第一容器中与所述第一节点执行基于预定通信模型的数据通信并在所述第二容器中与所述第二节点执行基于所述预定通信模型的数据通信。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017-079298 | 2017-04-12 | ||
JP2017079298 | 2017-04-12 | ||
PCT/JP2018/007518 WO2018190015A1 (ja) | 2017-04-12 | 2018-02-28 | 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110476152A true CN110476152A (zh) | 2019-11-19 |
Family
ID=63792421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880023183.5A Withdrawn CN110476152A (zh) | 2017-04-12 | 2018-02-28 | 信息处理设备、信息处理方法和计算机程序 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11218535B2 (zh) |
EP (1) | EP3611618A4 (zh) |
JP (1) | JP7074130B2 (zh) |
CN (1) | CN110476152A (zh) |
WO (1) | WO2018190015A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955399A (zh) * | 2019-11-29 | 2020-04-03 | 东软集团股份有限公司 | 车载显示系统、图像显示方法、存储介质和主机 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042398B2 (en) * | 2018-07-09 | 2021-06-22 | Samsung Electronics Co., Ltd. | System and method for guest operating system using containers |
CN109548056B (zh) * | 2018-11-30 | 2021-07-23 | 中国人民解放军陆军工程大学 | 一种基于ros主从节点管理器的通信方法和系统 |
CN111174805A (zh) * | 2019-04-30 | 2020-05-19 | 奥特酷智能科技(南京)有限公司 | 分布集中式自动驾驶系统 |
JP7342443B2 (ja) * | 2019-06-18 | 2023-09-12 | 株式会社リコー | 情報処理装置、方法、およびプログラム |
CN111708644A (zh) * | 2020-05-29 | 2020-09-25 | 北京百度网讯科技有限公司 | 用于自动驾驶仿真的虚拟世界管理方法和系统 |
WO2022254521A1 (ja) * | 2021-05-31 | 2022-12-08 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 監視システム、監視方法、監視装置および機能制限装置 |
US20230297448A1 (en) * | 2022-03-17 | 2023-09-21 | OpenFin Inc. | Initiating operations for applications via communication bridges |
US20240098143A1 (en) * | 2022-06-29 | 2024-03-21 | Amazon Technologies, Inc. | Plug-in orchestrator for vehicle data stream subscription system |
WO2024057408A1 (ja) * | 2022-09-13 | 2024-03-21 | 日本電信電話株式会社 | 制御装置、制御方法、及びプログラム |
CN115665221A (zh) * | 2022-09-28 | 2023-01-31 | 国科础石(重庆)软件有限公司 | 一种车载容器间的通信方法、装置、车辆和电子设备 |
JP2024124604A (ja) * | 2023-03-03 | 2024-09-13 | 株式会社日立製作所 | ソフトウェア更新装置、ソフトウェア更新方法およびソフトウェア更新システム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3558222B2 (ja) | 2002-03-15 | 2004-08-25 | ソニー株式会社 | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 |
US7228539B2 (en) * | 2003-06-16 | 2007-06-05 | Lucent Technologies Inc. | Method and apparatus for updating inter-server communication software |
JP2010514028A (ja) | 2006-12-22 | 2010-04-30 | バーチャルロジックス エスエイ | 単一データ処理を共有するために複数の実行環境を有効化するシステム |
US8140630B2 (en) | 2008-03-05 | 2012-03-20 | International Business Machines Corporation | Publish/subscribe message broker for message sequences |
JP5754294B2 (ja) | 2011-08-17 | 2015-07-29 | 富士通株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
WO2013101765A1 (en) * | 2011-12-27 | 2013-07-04 | Cisco Technology, Inc. | System and method for management of network-based services |
US9292331B2 (en) | 2013-03-15 | 2016-03-22 | Bracket Computing, Inc. | Expansion of services for a virtual data center guest |
US9471775B1 (en) * | 2015-02-04 | 2016-10-18 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
-
2018
- 2018-02-28 EP EP18784792.6A patent/EP3611618A4/en not_active Withdrawn
- 2018-02-28 US US16/493,998 patent/US11218535B2/en active Active
- 2018-02-28 CN CN201880023183.5A patent/CN110476152A/zh not_active Withdrawn
- 2018-02-28 JP JP2019512373A patent/JP7074130B2/ja active Active
- 2018-02-28 WO PCT/JP2018/007518 patent/WO2018190015A1/ja unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955399A (zh) * | 2019-11-29 | 2020-04-03 | 东软集团股份有限公司 | 车载显示系统、图像显示方法、存储介质和主机 |
CN110955399B (zh) * | 2019-11-29 | 2024-03-01 | 东软集团股份有限公司 | 车载显示系统、图像显示方法、存储介质和主机 |
Also Published As
Publication number | Publication date |
---|---|
US20200036774A1 (en) | 2020-01-30 |
JP7074130B2 (ja) | 2022-05-24 |
US11218535B2 (en) | 2022-01-04 |
WO2018190015A1 (ja) | 2018-10-18 |
JPWO2018190015A1 (ja) | 2020-02-27 |
EP3611618A1 (en) | 2020-02-19 |
EP3611618A4 (en) | 2020-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110476152A (zh) | 信息处理设备、信息处理方法和计算机程序 | |
JP6421220B2 (ja) | インダストリアル・インターネットオペレーティングシステムに基づくフィールドデバイス制御管理方法と装置 | |
US9256898B2 (en) | Managing shared inventory in a virtual universe | |
US11012320B2 (en) | Interactive graphical model-based monitoring and control of networked physical assets | |
US20160357522A1 (en) | Physical space map overlay and interaction for an internet of things integrated developer environment | |
CN108475251A (zh) | 针对容器的虚拟网络、热交换、热缩放与灾难恢复 | |
CN105593773A (zh) | 用于虚拟分布式控制系统的自动委托的系统和方法 | |
US20080256225A1 (en) | Osgi-Based Dynamic Service Management Method for Context-Aware Systems | |
US11552859B2 (en) | Interactive graphical model-based configuration control of networked physical assets using logical transactional configuration change rules | |
US11575722B2 (en) | Systems and methods for providing individual and/or synchronized virtual tours through a realm for a group of users | |
JP2015501473A (ja) | ユーザ・インターフェースによりネットワーク接続可能独立デバイスを接続するためのコンピュータ・システムおよび方法(デバイス・レジスタおよびワイヤリング・ブローカを使用するセンサ・アプライアンスの集約) | |
CN103858102A (zh) | 用于分布式虚拟桌面基础设施的系统和方法 | |
US11695632B1 (en) | Management and control across heterogeneous edge devices of a client network using device abstractions | |
CN116407846A (zh) | 游戏的显示控制方法、装置、电子设备及可读存储介质 | |
US8478977B1 (en) | Secure auto-migration program | |
CN104135674A (zh) | Osd主题文件获取、提供方法、装置及更新系统 | |
Williams et al. | Utilizing ROS 1 and the turtlebot3 in a multi-robot system | |
CN107707980A (zh) | 播放页面分层系统、指定播放器的扩展方法、介质及设备 | |
CN111782251A (zh) | 一种软件功能模块的更新方法、装置及计算机设备 | |
US12020348B2 (en) | Decentralized procedural digital asset creation in augmented reality applications | |
KR102016810B1 (ko) | 사물을 제어하는 다수 IoT 플랫폼을 생성하는 액추에이터 컴포지션 시스템 | |
WO2024114153A1 (zh) | 基于寄生程序的资源配置方法、装置、设备、介质及产品 | |
US20240007354A1 (en) | Automatic onboarding of heterogeneous devices onto a client network | |
US10305733B1 (en) | Defining software infrastructure using a physical model | |
CN113535328B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20191119 |