本发明专利技术涉及数据交换方法和系统。该方法包括:在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;在从所述无锁数据总线读取数据的所述数据消费节点和向所示无锁数据总线写入数据的所述数据生成节点建立第二屏障;监测所述第一屏障和所述第二屏障是否变化;以及当所述第一屏障发生变化时,所述数据消费节点读取数据,当所述第二屏障发生变化时,所述数据生成节点生成数据;其中所述数据生成节点、第一屏障、所述数据消费节点和所述第二屏障形成循环。
【技术实现步骤摘要】
一种数据交换方法和系统
本专利技术一般涉及移动业务支撑领域,更具体地,涉及一种数据交换方法和系统。
技术介绍
目前,在移动业务支撑系统领域内,各个业务模块间并发的数据交换基本采用读写锁或比较和交换(CAS)操作的方式来进行并发控制。在用于进行业务数据交换的多个业务模块中,由数据产生模块首先将需要交换的业务数据写入用于数据交换的存储介质中(诸如文件、数据库等),然后由数据消费模块从存储介质读取数据。当同一份数据需要被多个数据消费模块访问时,需要根据消费模块的数量,将数据复制多份,分别给不同的数据消费模块使用。数据消费模块在消费行为完成之后,自行删除数据内容,以保证数据有且仅有一次消费行为发生。在上述过程中,一般地需要对存储介质中的数据加上读写锁,或使用比较和交换(CAS)操作进行并发控制,以防止交换数据的脏读、误读,即在“生产者”和“消费者”之间加读写锁或进行CAS操作。由于写锁的独占性、排他性,读锁与写锁的互斥性,以及CAS操作的串行性都会将并行操作转换成串行操作,从而给系统造成很大的开销,极大的限制了基于上述数据交换方式的多个业务模块对同一份业务数据读写的并发性能,制约着业务支撑系统的业务吞吐量。此外,对于同一份数据,按数据消费者数量复制多份的做法,不仅会由于数据复制而增加系统响应时间,且浪费数据存储空间,造成CPU资源、存储资源等硬件成本的增加。
技术实现思路
根据本专利技术的一个方面,本专利技术提供了一种数据交换方法。该方法包括:在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;在从所述无锁数据总线读取数据的所述数据消费节点和向所示无锁数据总线写入数据的所述数据生成节点建立第二屏障;监测所述第一屏障和所述第二屏障是否变化;以及当所述第一屏障发生变化时,所述数据消费节点读取数据,当所述第二屏障发生变化时,所述数据生成节点生成数据;其中所述数据生成节点、第一屏障、所述数据消费节点和所述第二屏障形成循环。根据本专利技术的另一个方面,本专利技术提供了一种数据交换系统。该系统包括:第一屏障设置模块,该第一屏障设置模块被配置成在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;第二屏障设置模块,该第二屏障设置模块被配置为在从所述无锁数据总线读取数据的所述数据消费节点和向所示无锁数据总线写入数据的所述数据生成节点建立第二屏障;监测模块,该监测模块被配置为监测所述第一屏障和所述第二屏障是否变化;以及裁定模块,该裁定模块被配置为当所述第一屏障发生变化时,判定所述数据消费节点读取数据,当所述第二屏障发生变化时,判定所述数据生成节点生成数据;其中所述数据生成节点、第一屏障、所述数据消费节点和所述第二屏障形成循环。根据本专利技术的另一个方面,本专利技术还提供了一种机器可读存储设备,其包括机器可读指令,当所述机器可读指令被执行时,实现上述方法或系统。附图说明从下面结合附图对本专利技术的具体实施方式的描述中可以更好地理解本专利技术,其中:图1示出了根据本专利技术实施例的无锁数据总线的结构示意图;图2示出了根据本专利技术实施例的基于无线数据总线进行数据交换的方法的流程图;图3示出了根据本专利技术实施例的基于无线数据总线进行数据交换的系统的结构示意图;图4示出了根据本专利技术实施例的数据交换的方法的工作原理图;图5示出了根据本专利技术实施例的数据消费节点串行的数据交换的方法的时序图;图6示出了根据本专利技术实施例的数据消费节点并行的数据交换的方法的时序图。具体实施方式下面将详细描述本专利技术的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本专利技术的全面理解。但是,对于本领域技术人员来说很明显的是,本专利技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本专利技术的示例来提供对本专利技术的更好的理解。本专利技术决不限于下面所提出的任何具体配置和算法,而是在不脱离本专利技术的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本专利技术造成不必要的模糊。图1示出了无锁数据总线的结构示意图。如图1所示,该无锁数据总线的内存可以被等分为N个单元。该无锁数据总线的所管理的数据可存在于系统共享内存中或进程私有内存中。该无锁数据总线的数据生成节点(生产者)和数据消费节点(消费者)采用注册机制通知该无锁数据总线。通常,无锁数据总线只允许注册一个数据生成节点(生产者)进行写入操作,但允许注册多个数据消费节点(消费者)进行读取操作。该无锁数据总线按顺序、依次循环使用等分的单元(1,2,3…N):数据生成节点(生产者)依次往单元(1,2,3…N)写数据,数据消费节点(消费者)依次从单元(1,2,3…N)读数据。通常,只有当数据被所有的数据消费节点(消费者)读取(消费)后,单元(1,2,3…N)才会被数据生成节点(生产者)再次使用(循环覆盖),即再次写入数据。图2示出了根据本专利技术实施例的基于无线数据总线进行数据交换的方法的流程图。图2所示的基于无线数据总线进行数据交换的方法包括:S210在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;S220在从所述无锁数据总线读取数据的所述数据消费节点和向所示无锁数据总线写入数据的所述数据生成节点建立第二屏障;S230监测所述第一屏障和所述第二屏障是否变化;以及S240当所述第一屏障发生变化时,所述数据消费节点读取数据,S250当所述第二屏障发生变化时,所述数据生成节点生成数据。图3示出了根据本专利技术实施例的基于无线数据总线进行数据交换的系统300的结构示意图,该系统300包括:第一屏障设置模块310,该第一屏障设置模块310被配置成在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;第二屏障设置模块320,该第二屏障设置模块320被配置为在从所述无锁数据总线读取数据的所述数据消费节点和向所示无锁数据总线写入数据的所述数据生成节点建立第二屏障;监测模块330,该监测模块330被配置为监测所述第一屏障和所述第二屏障是否变化;以及裁定模块340,该裁定模块340被配置为当所述第一屏障发生变化时,判定所述数据消费节点读取数据,当所述第二屏障发生变化时,判定所述数据生成节点生成数据。图4示出了根据本专利技术实施例的数据交换的方法的工作原理图。在图4中,“生产者”是相对于无锁数据总线而言,是写入数据方;“消费者”是相对于无锁数据总线而言,是读取数据方,其中“消费者”也可对无锁数据总线中已有数据单元的数据进行修改,但绝不会新增数据单元;“Wr_sequnce_No”、“Rd_sequnce_No”为一个计算机“字”,是“生产者”和“消费者”之间的“屏障”,保证两者间的严格顺序操作。该无锁数据总线在读写过程中,利用现代计算机系统对“字”进行原子操作且开销极低的特性,在“生产者”和“消费者”对“屏障”并发操作时,没有加读写锁也无“CAS”操作,通过计算机系统“字运算”天然的原子性,保证了数据交换并发操作之间的顺序。在图4中,每对“生产者”和“消费者”之间,有且只有一个“屏障”。在一个实施例中,消费者之间可定义本文档来自技高网...
【技术保护点】
一种数据交换方法,其特征在于,包括:在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障,所述第一屏障用于所述数据生成节点生成数据后进行步进标识;在所述数据消费节点和所述数据生成节点建立第二屏障,所述第二屏障用于;监测所述第一屏障和所述第二屏障是否变化;以及当所述第一屏障发生变化时,所述数据消费节点读取数据,当所述第二屏障发生变化时,所述数据生成节点生成数据。
【技术特征摘要】
1.一种数据交换方法,其特征在于,包括:在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障,所述第一屏障用于所述数据生成节点生成数据后进行步进标识;在所述数据消费节点和所述数据生成节点建立第二屏障,所述第二屏障用于;监测所述第一屏障和所述第二屏障是否变化;以及当所述第一屏障发生变化时,所述数据消费节点读取数据,当所述第二屏障发生变化时,所述数据生成节点生成数据。2.根据权利要求1所述的数据交换方法,其中所述第一屏障和所述第二屏障是一个计算机字。3.根据权利要求1所述的数据交换方法,其中所述无锁数据总线仅允许注册一个数据生成节点。4.根据权利要求1所述的数据交换方法,其中所述无锁数据总线允许注册多个数据消费节点。5.根据权利要求4所述的数据交换方法,其特征在于,所述多个数据消费节点是串行的。6.根据权利要求5所述的数据交换方法,其特征在于,在所述多个数据消费节点中的两个相邻数据消费节点之间建立屏障,其中在前的数据消费节点为在后的数据消费节点的数据生产节点。7.根据权利要求4所述的数据交换方法,其特征在于,所述多个数据消费节点是并行的。8.根据权利要求7所述的数据交换方法,其特征在于,在所述数据生成节点和所述多个数据消费节点之间分别建立屏障。9.根据权利要求1-8中任一项所述的数据交换方法,其特征在于,当所述数据生成节点生成一条数据后,所述第一屏障步进一位;当所述数据消费节点读取一条数据后,所述第二屏障步进一位。10.一种数据交换系统,其特征在于,包括:第一屏障设置模块,该第一屏障设置模块被配置为在向无锁数据总线写入数据的数据生成节点和从无锁数据总线读取数据的数据消费节点之间建立第一屏障;第二屏...
【专利技术属性】
技术研发人员:徐磊,王坚,陈劼,
申请(专利权)人:中国移动通信集团江苏有限公司,中国移动通信集团公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。