CN111158922A - 一种分布式存储的任务间通信与同步机制 - Google Patents
一种分布式存储的任务间通信与同步机制 Download PDFInfo
- Publication number
- CN111158922A CN111158922A CN201911410227.2A CN201911410227A CN111158922A CN 111158922 A CN111158922 A CN 111158922A CN 201911410227 A CN201911410227 A CN 201911410227A CN 111158922 A CN111158922 A CN 111158922A
- Authority
- CN
- China
- Prior art keywords
- variable
- distributed
- communication
- task
- distributed variable
- 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
Images
Classifications
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种分布式存储的任务间通信与同步机制,其特征在于:该分布式存储的任务间通信与同步机制按以下步骤进行:S1创建设备接口信息表、S2创建通信服务端、S3定义分布式变量母本、S4定义分布式变量副本、S5任务间通信,本发明可以像普通变量一样使用,概念容易理解和接受,并且屏蔽了底层细节,降低开发难度。
Description
技术领域
本发明属于智能设备或任务间的通信与同步技术领域,具体涉及一种分布式存储的任务间通信与同步机制。
背景技术
在软件编程过程中,经常遇到多个任务的通信与同步的难题。如两个任务通过某通信介质进行数据交互;如在复杂系统中,某个设备中的一个任务只有等其他设备中的某个任务或某些任务都完成了,才能继续执行;甚至是更多设备组网的、跨地域的、等更复杂的多任务通信与协作的难题。
这些复杂的多个任务可能分布于多核处理器的异构操作系统间、不同CPU或设备之间,甚至是通过因特网连接的距离遥远的设备之间。不同的研发团队在处理多个任务的通信与同步问题时,通常是针对具体的应用场景的需要,制定相应的软件设计方案,甚至需要制定专门的通信协议。
这种传统的,根据具体使用场景设计的解决方案,有如下不足:
难以理解:在多人协作的复杂系统中,不同的开发人员对方案的理解和实现方式存在差异,当新人接手项目时,需要花费大量精力理解任务间的通信和同步机制及相关代码和概念,提高学习成本和开发周期,且容易出错。
开发复杂:研发人员往往针对特定场景和需求进行开发,每次都要有针对性的开发,并且一旦需要扩大系统规模,增加通信接口的种类,或其他物理或逻辑上的结构大幅变动时,需要大量的工作量,需要大量的周期和成本。
性能有限:当设备中的多个任务同时使用物理设备时,存在竞争的情况,导致某些请求响应不及时。当存在多个通信接口时,无法自动选择告诉通信接口。
适用范围有限:研发人员往往针对特定场景和需求开发的通信方案,该方案很难适用其他不同规模、不同通信接口等场景的情况。
发明内容
本发明的目的在于提供一种分布式存储的任务间通信与同步机制,以解决上述的技术问题。
为实现上述目的,本发明提供如下技术方案:一种分布式存储的任务间通信与同步机制,其特中:该分布式存储的任务间通信与同步机制按以下步骤进行:
S1创建设备接口信息表:
通过记录每个设备的名称、通信接口类型及通信地址对设备接口信息表进行创建;
S2创建通信服务端:
每个设备在启动时,都创建一个通信服务任务,该通信服务任务可转发分布式变量相关的消息数据;
当物理通信接口有消息包送达,则将该消息包转发给对应的通信服务任务;
当通信服务任务有消息需要送出,则将该消息从对应的物理接口发出去;
S3定义分布式变量母本:
在任一设备的任一任务中定义变量,并对该定义变量进行初始化,初始化后的定义变量作为分布式变量母本;
S4定义分布式变量副本:
在另一个任务中定义变量,将该定义变量作为分布式变量副本并与分布式变量母本进行连接,
在连接成功后,会同步分布式变量母本中的数据到分布式变量副本中且分布式变量母本中的数据会在分布式变量副本中进行保存;
S5任务间通信:
通过分布式变量副本和分布式变量母本可进行任务间的通信与同步,在读取变量前,将分布式变量母本中的数据同步到变量中;在修改变量后,将变量的修改同步到分布式变量母本中的数据中。
更进一步的,所述分布式变量母本的使用具体步骤为:
S 3.1:任务初始化;
S 3.2:定义分布式变量母本;
S 3.3:分布式变量母本初始化;
S 3.4:等待通信服务端的请求并响应。
更进一步的,所述分布式变量副本的使用具体步骤为:
S 4.1:任务初始化;
S 4.2:定义分布式变量副本;
S 4.3:将分布式变量副本连接到分布式变量母本;
S 4.4:通过分布式变量副本,进行任务间的通信与同步。
优选的,所述分布式变量母本永远处于被动状态,不主动发操作指令且只以分布式变量副本发起操作分布式变量母本,不以分布式变量母本发起操作分布式变量副本。
优选的,所述通信接口类型包括网络、RapidIO、蓝牙;所述通信地址包括IP地址、RapidIO设备号。
优选的,所述分布式变量母本中的数据包括通信地址、任务通信端口、变量地址的路径信息。
优选的,所述分布式变量副本在系统中有若干个。
优选的,所述分布式变量母本在系统中具有唯一性和被动性。
优选的,所述分布式变量母本在系统中具有唯一性和被动性。
优选的,所述同步操作可以同步等待,也可以异步等待。
本发明的技术效果和优点:该分布式存储的任务间通信与同步机制可以像普通变量一样使用,概念容易理解和接受,并且屏蔽了底层细节,降低开发难度,且本发明具有以下优点:
1、理念易于理解和接受:用变量的方式以及使用类cache的操作方法进行数据通信,符合编程人员的开发习惯,易于理解,容易接受。
2、降低开发难度:开发人员在编程时,只需要关注变量的定义、连接与使用,屏蔽底层设备和接口的细节,可缩短研发周期,降低开发成本,提升产品质量。
3、高性能:异步操作接口可以使任务与通信之间并行,不用等通信完成再往下执行,并且可根据变量的优先级,支持优先传输和选择高性能通信端口。
4、适用范围广:支持核间、CPU间、设备间等远端通信;支持网络、蓝牙、共享内存、RapidIO等众多通信接口,可支持几乎所有操作系统,甚至是裸机。
附图说明
图1为本发明的分布式变量实现的各组成部件及使用场景举例;
图2为本发明副本变量操作时的数据交互流程;
图3为本发明分布式变量母本的使用具体步骤;
图4为本发明分布式变量副本的使用具体步骤;
图5为本发明分布式变量的使用范例;
图6为本发明分布式变量的基本操作流程;
图7为本发明通信服务端启动及执行流程;
图8为本发明分布式变量的定义及连接时的通信流程;
图9为本发明分布分布式变量基本接口的通信流程。
具体实施方式
下面将结合本发明实施例中的附图1-9,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了如图中1-9所示的一种分布式存储的任务间通信与同步机制,其特中:该分布式存储的任务间通信与同步机制按以下步骤进行:
S1创建设备接口信息表:
通过记录每个设备的名称、通信接口类型(网络、RapidIO、蓝牙等)通信地址(IP地址、RapidIO设备号等)对设备接口信息表进行创建;
S2创建通信服务端:
每个设备在启动时,都创建一个通信服务任务,该通信服务任务可转发分布式变量相关的消息数据;
当物理通信接口有消息包送达,则将该消息包转发给对应的通信服务任务;
当通信服务任务有消息需要送出,则将该消息从对应的物理接口发出去;
S3定义分布式变量母本:
在任一设备的任一任务中定义变量,并对该定义变量进行初始化,初始化后的定义变量作为分布式变量母本;
S4定义分布式变量副本:
在另一个任务中定义变量,将该定义变量作为分布式变量副本并与分布式变量母本进行连接,
在连接成功后,会同步分布式变量母本中的数据到分布式变量副本中且分布式变量母本中的数据会在分布式变量副本中进行保存;
S5任务间通信:
通过分布式变量副本和分布式变量母本可进行任务间的通信与同步,在读取变量前,将分布式变量母本中的数据同步到变量中;在修改变量后,将变量的修改同步到分布式变量母本中的数据中。
参考图1,图1中的部件及作用说明如下:
部件1.1为通信链路:
该链路是网络、RapidIO、Bluetooth等支持设备间有效通信的媒介;
部件1.2为具体的设备:
如智能台灯、智能音响、智能电视等需要通信与同步的各设备;
部件1.3为设备中的通信服务端任务,该任务有如下作用:
管理设备信息表和任务信息表,以提供增删改查服务;
在本设备的任务与通信链路之间,提供数据包的转发服务。
部件1.4为设备信息表,设备信息表可提供物理设备名称以及各通信链路地址的对应关系,如下表所示:
设备名称和索引号:用户在连接时使用设备名称,直观且不易出错。在连接完成后,会保存索引号到对应的分布式变量中,在之后操作分布式变量的过程中,可以直接通过索引号获取通信地址信息,这样可以避免遍历设备信息表,提升分布式变量的响应速度。
部件1.5为任务信息表,任务信息表可提供设备内的任务与通信服务端之间的通信接口对应关系,如下表所示:
任务名称 | 端口号 |
task_a | 5 |
task_b | 6 |
task_c | 7 |
表中端口号表示本任务与通信服务端的通信句柄,如果使用消息队列等IPC通信,则端口号即为消息队列的通信句柄;如果任务间的地址空间可见,并且使用内存来传递消息,则端口号为内存地址。只要是有效的任务间通信方式,都可以使用。
部件1.6为使用分布式变量的具体任务:
该任务在启动时,会创建与通信服务端的通信句柄,并注册到通信服务端的任务信息表中。
部件1.7为变量信息表:
变量信息表保存了本任务中,变量名称与变量地址的对应关系,便于连接时查询。如下表所示:
变量名称 | 变量地址 |
hLigntVar | 0x80100000 |
hAudioVar | 0x80100100 |
hTVVar | 0x80100200 |
部件1.8为分布式变量:
分布式变量在系统中的体现方式有两种,包括分布式变量母本及分布式变量副本,分布式意味着这两种变量可以在系统中的任一任务中定义和存储,分布式变量母本具有唯一性与被动性。
部件1.9为分布式变量在使用时的数据传输路径:
假设智能台灯(SmartLight)b任务中的某变量为分布式变量母本,智能音响(SmartAudio)和智能电视(SmartTV)中的b任务的某变量作为分布式变量副本。那么分布式变量副本与分布式变量母本的通信过程中,会经过设备内的通信服务端进行转发。
参考图2,图2描述了在通过分布式变量副本对分布式变量进行操作时的数据交互流程:
S 2.1:分布式变量支持的操作请求如下:
CMD_READ:将分布式变量母本的数据读取到本地的分布式变量副本中;
CMD_WRITE:将分布式变量副本中的数据写到分布式变量母本中;
CMD_INC:将分布式变量的值加一,包括分布式变量副本和分布式变量母本;
CMD_DEC:将分布式变量的值减一,包括分布式变量副本和分布式变量母本;
CMD_LOCK:将分布式变量母本锁定,即分布式变量母本不可以被任何分布式变量副本修改,用于互斥;
CMD_UNLOCK:将分布式变量母本解锁,分布式变量副本可以正常访问和操作。
CMD_ROUTE:路由指令,该指令只有在分布式变量副本执行Connect时被指定。当通信服务端或相关任务收到CMD_ROUTE的请求包时,会根据字符串形式的设备名称、任务名称、变量名称,查找设备信息表、任务信息表、以及变量信息表,并将查找到的设备索引号、端口号、以及变量地址保存到分布式变量副本中,当CMD_ROUTE执行完成后,分布式变量副本内同时包含分布式变量副本及分布式变量母本所在设备的索引号、端口号、以及变量地址。
这样既方便使用者直观的使用分布式变量,也能避免因查找表导致的性能损耗。
CMD_RESPONSE:响应指令,一般由分布式变量母本指定。当分布式变量母本接到分布式变量副本发送的请求包,并执行对应的请求后,会将请求包转为CMD_RESPONSE,以便将该包沿指定路径返回到分布式变量副本所在的任务中。
当执行请求时,分布式变量副本会被标记为BUSY,当请求执行完成后,会标记为READY。当被标记为BUSY时,表示正在忙,不便再次操作。
S 2.2:通过分布式变量副本中的端口号,将请求包转发到通信服务端。该端口号可以是本任务与通信服务端之间的通信句柄,如消息队列、共享存储、本地socket、管道等有效的任务间通信方式。
S 2.3:通信服务端根据请求包中的索引号以及其他标志信息,将请求包从合适的链路转发到目标设备;
S 2.4:目标设备的通信服务端根据请求包中的远端端口号,将请求包转到目标任务;
S 2.5:目标任务在执行请求时,需要对目标变量先上锁,在操作完成后,再接触锁定,以防止多个分布式变量副本同时对目标变量进行操作;操作完成后,将请求包改为响应包,以便从指定路径返回。
S 2.6:目标任务根据端口号,将响应包转发到远端的通信服务端;
S 2.7:远端的通信服务端收到响应包后,将响应包从合适的链路转发到原设备;
S 2.8:本地通信服务端收到响应包后,根据端口号,将响应包转发给原任务;
S 2.9:当前任务根据响应包的内容,完成本次对分布式变量副本的操作,并将分布式变量副本的状态改为READY。
参考图3,图3描述说明了所述分布式变量母本的使用具体步骤为:
S 3.1:任务初始化,使当前任务支持分布式变量的操作。该初始化主要是创建与通信服务端通信的端口,并将该端口信息注册到通信服务端的任务信息表中;
S 3.2:定义分布式变量母本,该分布式变量母本在系统中具有唯一性和被动性;
S 3.3:分布式变量母本初始,主要是定义该变量的初值;
S 3.4:等待通信服务端的请求并响应,分布式变量母本只被动等待通信服务端的请求,并根据请求的内容做相应操作,包括数据修改,数据读取,上锁等操作。
参考图4,图4描述说明了所述分布式变量副本的使用具体步骤为:
S 4.1:任务初始化,使当前任务支持分布式变量的操作,该初始化主要是创建与通信服务端通信的端口,并将该端口信息注册到通信服务端的任务信息表中;
S 4.2:定义分布式变量副本:该分布式变量副本在系统中有多个,主要作为与分布式变量母本通信的一个窗口。
S 4.3:将分布式变量副本连接到分布式变量母本,连接时,用户只需使用分布式变量母本所在的设备名称、任务名称、变量名称,就可以建立连接。在连接完成后,通信地址、任务通信端口、变量地址等路径信息会保存到分布式变量副本中,在之后的副本操作过程中,可以直接使用这些路径信息。
S 4.4:通过分布式变量副本,进行任务间的通信与同步,可以像Cache的操作方式一样使用分布式变量。用户可以在读之前将数据更新到本地,写之后将数据以同步或异步方式更新到分布式变量母本中,Cache的操作方式是读之前invalidate,写之后flush,两者间有类似的操作方式,用户更容易接受。
参考图4,图5为本发明分布式变量的使用范例:
该范例的主要功能是智能音响和智能电视通过分布式变量修改和获取智能台灯的亮度。如范例中所示,在智能台灯中定义了分布式变量母本hCtrlVal,该变量主要用于控制台灯的亮度;智能音响与智能电视中定义了分布式变量副本hLightVal并连接到分布式变量母本中。这样就可以在智能音响和智能电视中通过分布式变量副本来修改和获取智能台灯的亮度了。
图6为本发明分布式变量的基本操作流程,主要描述分布式变量的基本用法,可参考图1进行验证。
图7为本发明通信服务端启动及执行流程,通信服务端的主要作用是将I/O设备接收到的数据转发给对应的任务,以及将从任务发过来的数据从对应的I/O设备转发出去。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种分布式存储的任务间通信与同步机制,其特征在于:该分布式存储的任务间通信与同步机制按以下步骤进行:
S1创建设备接口信息表:
通过记录每个设备的名称、通信接口类型及通信地址对设备接口信息表进行创建;
S2创建通信服务端:
每个设备在启动时,都创建一个通信服务任务,该通信服务任务可转发分布式变量相关的消息数据;
当物理通信接口有消息包送达,则将该消息包转发给对应的通信服务任务;
当通信服务任务有消息需要送出,则将该消息从对应的物理接口发出去;
S3定义分布式变量母本:
在任一设备的任一任务中定义变量,并对该定义变量进行初始化,初始化后的定义变量作为分布式变量母本;
S4定义分布式变量副本:
在另一个任务中定义变量,将该定义变量作为分布式变量副本并与分布式变量母本进行连接,
在连接成功后,会同步分布式变量母本中的数据到分布式变量副本中且分布式变量母本中的数据会在分布式变量副本中进行保存;
S5任务间通信:
通过分布式变量副本和分布式变量母本可进行任务间的通信与同步,在读取变量前,将分布式变量母本中的数据同步到变量中;在修改变量后,将变量的修改同步到分布式变量母本中的数据中。
2.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量母本的使用具体步骤为:
S 3.1:任务初始化;
S 3.2:定义分布式变量母本;
S 3.3:分布式变量母本初始化;
S 3.4:等待通信服务端的请求并响应。
3.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量副本的使用具体步骤为:
S 4.1:任务初始化;
S 4.2:定义分布式变量副本;
S 4.3:将分布式变量副本连接到分布式变量母本;
S 4.4:通过分布式变量副本,进行任务间的通信与同步。
4.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量母本永远处于被动状态,不主动发操作指令且只以分布式变量副本发起操作分布式变量母本,不以分布式变量母本发起操作分布式变量副本。
5.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述通信接口类型包括网络、RapidIO、蓝牙;所述通信地址包括IP地址、RapidIO设备号。
6.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量母本中的数据包括通信地址、任务通信端口、变量地址的路径信息。
7.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量副本在系统中有若干个。
8.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述分布式变量母本在系统中具有唯一性和被动性。
9.根据权利要求1所述的一种分布式存储的任务间通信与同步机制,其特征在于:所述同步操作可以同步等待,也可以异步等待。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911410227.2A CN111158922A (zh) | 2019-12-31 | 2019-12-31 | 一种分布式存储的任务间通信与同步机制 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911410227.2A CN111158922A (zh) | 2019-12-31 | 2019-12-31 | 一种分布式存储的任务间通信与同步机制 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111158922A true CN111158922A (zh) | 2020-05-15 |
Family
ID=70560000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911410227.2A Withdrawn CN111158922A (zh) | 2019-12-31 | 2019-12-31 | 一种分布式存储的任务间通信与同步机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158922A (zh) |
-
2019
- 2019-12-31 CN CN201911410227.2A patent/CN111158922A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Einhorn et al. | Mira-middleware for robotic applications | |
TW544589B (en) | Loosely coupled-multi processor server | |
US8645973B2 (en) | Mobile applications | |
US8122200B2 (en) | Modified machine architecture with advanced synchronization | |
JPH04233654A (ja) | コンピュータシステム | |
US9274972B2 (en) | Handling cross-platform system call with a shared page cache in a hybrid computing system | |
JPH0544693B2 (zh) | ||
US10838977B2 (en) | Key-value replication with consensus protocol | |
AU2018309008A1 (en) | Writing composite objects to a data store | |
KR20210106379A (ko) | 블록체인에 기반한 데이터 처리 방법, 장치, 기기, 매체 및 프로그램 | |
CN113381870B (zh) | 报文处理方法和设备 | |
JPH06110925A (ja) | ネットワークで接続された計算機とその利用方法 | |
CN109634764A (zh) | 工作流控制方法、装置、设备、存储介质和系统 | |
US20220224545A1 (en) | Method and apparatus for operating blockchain system, device and storage medium | |
US8015236B2 (en) | Replication of objects having non-primitive fields, especially addresses | |
US11675584B1 (en) | Visualizing dependent relationships in computer program analysis trace elements | |
CN111158922A (zh) | 一种分布式存储的任务间通信与同步机制 | |
KR102501542B1 (ko) | 블록체인 시스템의 가동 방법, 장치, 설비 및 저장 매체 | |
CN110297898A (zh) | 异步编译方法及装置 | |
US6782464B2 (en) | Mapping a logical address to a plurality on non-logical addresses | |
JP2021505989A (ja) | エラー・ハンドリングのための方法、コンピュータ・プログラム、データ処理システム、およびエラー・ハンドリング・コンポーネント | |
WO2008040068A1 (en) | Advanced synchronization and contention resolution | |
CN112083914B (zh) | 实现对象模型嵌入式操作系统软总线的方法及系统 | |
KR100579130B1 (ko) | 라우터 이중화 실현을 위한 라우팅 엔트리 정보 이중화 방법 | |
CN110019113B (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: 20200515 |