CN103179193B - 用于分布式应用系统的数据传输系统和数据传输方法 - Google Patents
用于分布式应用系统的数据传输系统和数据传输方法 Download PDFInfo
- Publication number
- CN103179193B CN103179193B CN201310055542.4A CN201310055542A CN103179193B CN 103179193 B CN103179193 B CN 103179193B CN 201310055542 A CN201310055542 A CN 201310055542A CN 103179193 B CN103179193 B CN 103179193B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- control message
- recipient
- data transmission
- 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.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种用于分布式应用系统的数据传输系统,包括发送方和接收方,其中,所述发送方包括:数据拆分单元,用于将待发送的业务数据拆分为多个数据消息;消息生成单元,用于生成对应于所述数据消息的控制消息;数据发送单元,用于将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息。本发明还提出了一种用于分布式应用系统的数据传输方法。通过本发明的技术方案,可以不依赖于具体的消息中间件,从而实现异步的、松耦合的分布式数据传输,具有良好的可移植性,能够有效降低系统实现的复杂性,尤其是解决了在大数据量和集群环境下的常见内存问题、并发问题。
Description
技术领域
本发明涉及数据传输技术领域,具体而言,涉及用于分布式应用系统的数据传输系统和数据传输方法。
背景技术
在分布部署的企业应用系统之间要进行通讯,存在着许多问题,其中最重要的问题之一是这些软件系统之间由于从属不同企业组织、远距离等原因而带来在运行状态、网络连接状态的独立性,这种独立性意味着这些需要互相通讯的系统有可能并不是都同时处于运行状态或者连通状态(比如停机维护等)。这类企业应用系统间的数据交换通常都具有数据量大、通讯持续时间长等特点,因而在这样的场景中直接采用传统的面向连接的通讯方案(如TCP、HTTP)实现企业应用系统间的业务数据交换会面临很大复杂度和开发风险,因为通讯的双方的部署特性而无法一致地维持着良好的连接性。
基于发布/订阅模型的消息通讯方案相对于传统的面向连接的通讯方案,天然地具备了将通讯的发送、接收双方分离的特点,使得发送方和接收方之间得到解耦:发送方将数据发送到特定的主题而不用管接收方何时接收;而接收方可在任意合适的时候从其关注的主题中接收数据。
目前,典型的基于发布/订阅模型的消息通讯方案就是采用消息中间件作为通讯基础设施,然而直接在消息中间件之上进行业务数据通讯仍面临着诸多困难。消息中间件单一地以消息作为载体与业务数据和业务操作的多样性之间形成矛盾,这种矛盾产生的问题包括:1、在消息流中区分业务数据和业务操作的边界的问题;2、大数据量传输的事务问题;3、群集部署的接收方的接收处理问题。
1、在消息流中区分业务数据和业务操作的边界的问题
典型的消息中间件对于一个消息的大小都是有限制的,一次业务操作的数据通常都由于数据量大小的问题无法只用一个消息就完成传输,需要分成多个消息进行。基于消息中间件都需要面临的一个问题就是将业务数据分解为多个消息发送并能够在接收方重新组合,并且能够区分不同业务操作发起的同一种业务数据类型的多次传输。这就是所谓业务数据边界和业务操作边界,即一次业务操作和业务数据与承载了这些信息的多个消息的对应关系。
在一次通讯过程中,发送方的业务数据会按照消息中间件定义的消息格式生成一系列的消息并通过消息中间件发送出去,接收方订阅接收到消息之后需要从大量的消息中重新识别出其中包含的业务数据和对应的业务操作。
现有的在消息中区分业务数据和业务操作边界的方法就是:
(1)将业务类别标识符加到消息中,发送方在发送数据时,将消息打上标识,并按顺序发送给消息中间件。
(2)接收方在从中间件订阅收到的每一个消息时根据消息中的标识符对消息分类进行业务处理。
具体地,如图1所示,用户通过操作A将多个数据消息A1A2A3按顺序发送至A系统,并通过操作B将多个数据消息B1B2B3按顺序发送至A系统,然后由A系统按照预定的顺序,如采用A1B1A2B2A3B3将多个数据消息发送至消息中间件。然后,B系统按照相同的顺序,比如A1B1A2B2A3B3从消息中间件获取多个数据消息,并按照每个操作对应的数据消息,分为A1A2A3和B1B2B3后分别用于处理A和处理B。
上述方法依赖于消息中间件的队列中消息顺序的保证,接收方对消息的处理以顺序接收为前提。这种方式存在以下的限制或问题:
(1)发送方需要保证消息发送顺序而无法并发发送;
(2)接收方的处理以顺序接收为前提而无法支持并发接收处理;
(3)在每一个消息上的都需要加上了描述数据的业务属性以及相关消息的标识符的业务边界识别方法增大了在网络传输中非业务数据的冗余。
2、大数据量传输完整性问题
传输完整性是指将一个业务操作数据的多个消息一起发送出去,如果全部消息都成功,则全部消息一起得到处理时,如果存在失败的消息,则已经发送的消息最终会被忽略不做处理。
为了保证一次业务操作的数据都能完整地传输,现有的做法是将一次业务操作的所有数据生成的全部消息都在同一个由消息中间件定义和提供的事务中发送出去。然而这种依赖于消息中间件事务来保证完整性的方式会受到内存的限制,如果数据量过大(如GB级以上)将会大量占用内存而导致消息中间件的崩溃。
3、群集部署的接收方的接收处理问题
在企业应用中,以群集部署应用系统来分担单台服务器压力以提高整个应用系统的吞吐量和处理能力是很常见的实施方案。在群集部署中,逻辑上的一个应用系统在物理上是两个以上的运行于同一台服务器或者不同服务器上的进程,应用系统的处理请求被按照某种特定的规则被均衡地分配给不同的进程实例来处理。
按照问题1所述的现有的实现方法在群集部署的场景中,由于同一业务操作的多个消息都可能会在同一个系统的不同进程实例接收并触发业务处理。如果不加额外的进程间并行处理机制,系统的每一个进程实例都由于无法收到完整的消息而未能完成业务处理。而要施加额外的进程间并发控制的机制确带来不小的复杂度,同时也会增加系统实现风险和成本。
因此,需要一种新的数据传输技术,以期解决上述多个问题中的至少之一。
发明内容
本发明正是基于上述问题,提出了一种新的数据传输技术,可以不依赖于具体的消息中间件,从而实现异步的、松耦合的分布式数据传输,具有良好的可移植性,能够有效降低系统实现的复杂性,尤其是解决了在大数据量和集群环境下的常见内存问题、并发问题。
有鉴于此,本发明提出了一种用于分布式应用系统的数据传输系统,包括发送方和接收方,其中,所述发送方包括:数据拆分单元,用于将待发送的业务数据拆分为多个数据消息;消息生成单元,用于生成对应于所述数据消息的控制消息;数据发送单元,用于将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息。在该技术方案中,通过控制消息来对数据消息的传输进行控制,从而脱离了对具体的消息中间件的依赖,有利于降低对系统实现的复杂性。
在上述技术方案中,优选地,所述发送方还包括:标识添加单元,用于为每个所述数据消息添加相应的唯一标识;其中,所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。在该技术方案中,通过为每个数据包添加唯一标识,使得可以根据控制消息中记录的数据包的排列顺序、处理方式等信息,对数据包进行妥善处理。
在上述技术方案中,优选地,所述数据发送单元采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。在该技术方案中,通过采用非事务连接方式进行消息发送,从而避免消息中间件因大数据量而致内存崩溃,同时也避免对特定的消息中间件产生依赖。
在上述技术方案中,优选地,所述接收方还包括:消息获取单元,用于从所述消息中间件中获取数据消息和控制消息;消息存储单元,用于对所述数据消息和所述控制消息进行记录和存储;消息解析单元,用于对所述消息存储单元中存储的指定控制消息进行解析,以获取所述指定控制消息中包含的标识、排列顺序和处理方式;消息处理单元,用于将所述标识与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息,并根据所述排列顺序和所述处理方式,对所述指定数据消息进行处理。在该技术方案中,接收方可以直接接收任意消息,然后根据需要进行挑选和处理,而无需在接收的过程中进行数据包的选择等,避免数据阻塞,提高数据传输效率。
在上述技术方案中,优选地,所述发送方还包括:信息添加单元,用于在所述控制消息中添加触发指示信息;所述接收方还包括:事件触发单元,用于根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。在该技术方案中,通过添加触发指示信息,使得接收方可以据此触发指定的事件,有利于数据处理的连续性。
根据本发明的又一方面,还提出了一种用于分布式应用系统的数据传输方法,包括:步骤302,发送方将待发送的业务数据拆分为多个数据消息;步骤304,所述发送方生成对应于所述数据消息的控制消息;步骤306,所述发送方将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息。在该技术方案中,通过控制消息来对数据消息的传输进行控制,从而脱离了对具体的消息中间件的依赖,有利于降低对系统实现的复杂性。
在上述技术方案中,优选地,所述步骤302还包括:为每个所述数据消息添加相应的唯一标识;以及所述步骤304还包括:所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。在该技术方案中,通过为每个数据包添加唯一标识,使得可以根据控制消息中记录的数据包的排列顺序、处理方式等信息,对数据包进行妥善处理。
在上述技术方案中,优选地,所述发送方采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。在该技术方案中,通过采用非事务连接方式进行消息发送,从而避免消息中间件因大数据量而致内存崩溃,同时也避免对特定的消息中间件产生依赖。
在上述技术方案中,优选地,所述步骤306之后,还包括:步骤308,所述接收方从所述消息中间件中获取数据消息和控制消息,并对其进行记录和存储;步骤310,所述接收方根据从指定控制消息中解析出的标识,与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息;步骤312,所述接收方根据从所述指定控制消息中解析出的排列顺序和处理方式,对所述指定数据消息进行处理。在该技术方案中,接收方可以直接接收任意消息,然后根据需要进行挑选和处理,而无需在接收的过程中进行数据包的选择等,避免数据阻塞,提高数据传输效率。
在上述技术方案中,优选地,还包括:所述发送方还在所述控制消息中添加触发指示信息;以及所述接收方还根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。在该技术方案中,通过添加触发指示信息,使得接收方可以据此触发指定的事件,有利于数据处理的连续性。
通过以上技术方案,可以不依赖于具体的消息中间件,从而实现异步的、松耦合的分布式数据传输,具有良好的可移植性,能够有效降低系统实现的复杂性,尤其是解决了在大数据量和集群环境下的常见内存问题、并发问题。
附图说明
图1示出了相关技术中的数据传输的示意图;
图2示出了根据本发明的实施例的数据传输系统的框图;
图3示出了根据本发明的实施例的数据传输方法的流程图;
图4A示出了根据本发明的实施例的发送方将数据传输至消息中间件的示意图;
图4B示出了根据本发明的实施例的接收方从消息中间件获取和处理数据的示意图;
图5示出了根据本发明的实施例的发送方对业务数据进行拆分的示意图;
图6示出了根据本发明的实施例的发送方生成的控制消息的构成示意图;
图7示出了根据本发明的实施例的发送方发送数据的流程图;
图8示出了根据本发明的实施例的接收方接收数据的流程图;
图9示出了根据本发明的实施例的发送方和接收方双向传输数据的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图2示出了根据本发明的实施例的数据传输系统的框图。
如图2所示,根据本发明的实施例的数据传输系统200,包括发送方202和接收方206,其中,所述发送方202包括:数据拆分单元2020,用于将待发送的业务数据拆分为多个数据消息;消息生成单元2022,用于生成对应于所述数据消息的控制消息;数据发送单元2024,用于将所述数据消息和所述控制消息发送至消息中间件,以供接收方206进行获取并按照所述控制消息来处理所述数据消息。在该技术方案中,通过控制消息来对数据消息的传输进行控制,从而脱离了对具体的消息中间件的依赖,有利于降低对系统实现的复杂性。
在上述技术方案中,优选地,所述发送方202还包括:标识添加单元2026,用于为每个所述数据消息添加相应的唯一标识;其中,所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。在该技术方案中,通过为每个数据包添加唯一标识,使得可以根据控制消息中记录的数据包的排列顺序、处理方式等信息,对数据包进行妥善处理。
在上述技术方案中,优选地,所述数据发送单元2024采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。在该技术方案中,通过采用非事务连接方式进行消息发送,从而避免消息中间件因大数据量而致内存崩溃,同时也避免对特定的消息中间件产生依赖。
在上述技术方案中,优选地,所述接收方206还包括:消息获取单元2060,用于从所述消息中间件中获取数据消息和控制消息;消息存储单元2062,用于对所述数据消息和所述控制消息进行记录和存储;消息解析单元2064,用于对所述消息存储单元2062中存储的指定控制消息进行解析,以获取所述指定控制消息中包含的标识、排列顺序和处理方式;消息处理单元2066,用于将所述标识与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息,并根据所述排列顺序和所述处理方式,对所述指定数据消息进行处理。在该技术方案中,接收方206可以直接接收任意消息,然后根据需要进行挑选和处理,而无需在接收的过程中进行数据包的选择等,避免数据阻塞,提高数据传输效率。
在上述技术方案中,优选地,所述发送方202还包括:信息添加单元2028,用于在所述控制消息中添加触发指示信息;所述接收方206还包括:事件触发单元2068,用于根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。在该技术方案中,通过添加触发指示信息,使得接收方可以据此触发指定的事件,有利于数据处理的连续性。
图3示出了根据本发明的实施例的数据传输方法的流程图。
如图3所示,根据本发明的实施例的数据传输方法,包括:步骤302,发送方将待发送的业务数据拆分为多个数据消息;步骤304,所述发送方生成对应于所述数据消息的控制消息;步骤306,所述发送方将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息。在该技术方案中,通过控制消息来对数据消息的传输进行控制,从而脱离了对具体的消息中间件的依赖,有利于降低对系统实现的复杂性。
在上述技术方案中,优选地,所述步骤302还包括:为每个所述数据消息添加相应的唯一标识;以及所述步骤304还包括:所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。在该技术方案中,通过为每个数据包添加唯一标识,使得可以根据控制消息中记录的数据包的排列顺序、处理方式等信息,对数据包进行妥善处理。
在上述技术方案中,优选地,所述发送方采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。在该技术方案中,通过采用非事务连接方式进行消息发送,从而避免消息中间件因大数据量而致内存崩溃,同时也避免对特定的消息中间件产生依赖。
在上述技术方案中,优选地,所述步骤306之后,还包括:步骤308,所述接收方从所述消息中间件中获取数据消息和控制消息,并对其进行记录和存储;步骤310,所述接收方根据从指定控制消息中解析出的标识,与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息;步骤312,所述接收方根据从所述指定控制消息中解析出的排列顺序和处理方式,对所述指定数据消息进行处理。在该技术方案中,接收方可以直接接收任意消息,然后根据需要进行挑选和处理,而无需在接收的过程中进行数据包的选择等,避免数据阻塞,提高数据传输效率。
在上述技术方案中,优选地,还包括:所述发送方还在所述控制消息中添加触发指示信息;以及所述接收方还根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。在该技术方案中,通过添加触发指示信息,使得接收方可以据此触发指定的事件,有利于数据处理的连续性。
图4A和图4B共同展现了本发明中进行数据传输的示意图。
实际上,本发明通过改善在消息中标识业务数据和业务操作边界的方式、改善发送和接收处理机制的方式来解决问题,核心思想是将触发处理的控制信息单点化,即控制信息由独立的消息传输,发送方唯一地以控制消息的发送作为完整发送的标志而不依赖于通讯基础设施的事务,接收方唯一地以收到控制消息作为触发业务处理的标志以解决集群环境下多点分配的问题。其基本特征有:
(1)将消息通过加入的标识符分为两类:数据消息和控制消息。数据消息加入具有唯一性的标识符,指示此消息包含的是业务数据。控制消息加入唯一性的标识符指示此消息包含的是作为一次业务操作引发的传输中包含的数据消息的唯一性标识符列表以及其它指示接收方如何处理的控制信息。
(2)数据消息和控制消息各自分开独立发送,多个数据消息之间无需保持顺序,数据消息与控制消息之间的先后不是必要因素,接收方需要相应地进行一致的处理。
(3)接收方订阅接收到消息后,对于数据消息做存储和记录,不触发业务处理,对于控制消息,则根据其中记录的业务操作相关的数据消息的唯一标识符从存储记录中查找获取数据消息,并触发对应的业务处理过程。
依照这三项实现的传输装置的基本构成包括:发送装置、接收装置、消息存储装置。
(1)发送装置负责将业务数据分解成数据消息和控制消息发送到消息中间件。
(2)接收装置负责在收到数据消息或控制消息后保存消息或触发业务处理。
(3)消息存储装置负责存储消息和检索消息。
当然,对于本发明中的“消息中间件”,需要说明的是:本发明的通讯机制是基于消息发布/订阅模型,但并不局限于特定的消息中间件,只要是实现了消息发布/订阅模型的基础通讯设施都可以作为本发明的通讯基础。
那么,基于上述原理,本发明的数据传输过程如下:
如图4A所示,将数据(DATA)传输至发送装置后,发送装置对数据进行拆分处理,得到数据消息(如图4A中的D1、D2、D3)和控制消息(如图4A中的TC),并将数据消息和控制消息发送至消息中间件。
如图4B所示,接收装置从消息中间件获取所有的数据消息和控制消息后,存储至消息存储装置中;然后,根据控制消息中记录的信息,确定相应的数据消息,以对其进行处理。
下面针对图4A和图4B所示的本发明的数据传输方案,做出进一步的解释。
1、在消息中标识和识别业务数据和业务操作边界的方法
将消息标识为数据消息和控制消息两类是本发明最主要的特征之一,也是整个传输机制的实现基础。控制消息整个传输机制中的核心,发送方以发出的控制消息标识了数据传输的完整性,接收方以收到控制消息作为进行业务处理的触发点。
构成控制消息的核心要素包括:
a、能够表示消息类型为控制消息的标识符;
b、能够表示数据关联的业务类型或操作类型的标识符;
c、能够表示包含业务数据被分解生成的数据消息的唯一标识符的列表。
此外,控制消息还可以加入其它的信息,例如:消息的有效期、是否允许部分处理、处理超时时长、是否顺序处理。
构成数据消息的核心要素是表示数据消息唯一性的标识,此外,也可以根据实现的需要加入其它必要信息。
举例如下:
如图5所示,一份需要发送的业务数据共计有1280KB,每个消息的大小最大限制为512KB。这样,这份数据需要分成3个数据消息进行发送,为每个数据消息进行唯一编号,以字母“D”开头,分别编为D1、D2、D3。对应生成的控制消息的标识符以“TC”开头编号为“TC001”以唯一标识此次发送操作,TC001中同时包含了一个数据消息ID列表“D1,D2,D3”,表示此次发送操作共包含了3个数据消息及其唯一编号。
在示例中为了便于描述而使用简单字符作为消息的唯一性标识符,在实际实现中可以采用全局唯一标识符(GUID)或者其它更复杂的或带有业务属性信息的唯一标识符,亦或者是某些消息中间件创建消息时生成的编号。
此外,图5中作为示例仅描述了包含最核心要素的控制消息和数据消息的结构,实际实现中可以根据需要加入其它的内容,比如业务数据是一段用户数据,发送方希望接收方收到数据后触发“用户信息更新”事件,由事件响应程序处理这些数据,那么如图6所示,可以以类似的方式加入额外的控制标识符PROC_TYPE:EVENT和EVT_TYPE:UPDATE_USERS。
2、发送装置的数据发送机制及其实现
发送装置负责按照标识和识别业务数据和业务操作边界的方法将业务数据分解成多个数据消息并生成相应的控制消息发送到消息中间件。发送装置的基本工作步骤主要包括:a、将业务数据分解成多个数据消息;b、根据数据消息列表生成控制消息;c、通过消息通讯基础设施发送数据消息和控制消息。
具体地,发送装置的数据传输过程包括:
步骤702,获取业务数据。
步骤704,生成数据消息。
步骤706,生成控制消息。
步骤708,逐个发送数据消息。
步骤710,判断所有的数据消息是否全部发送成功,若是,则进入步骤712,否则结束。
步骤712,发送控制消息。
发送装置的核心是将数据消息和控制消息分开发送。
在发送数据消息时,多个数据消息采用串行发送还是并行发送可以根据实际需要来实现,均属于本发明的传输机制允许的实现方案。
在基于典型的消息中间件实现时,数据消息的发送不需要采用消息中间件的事务型连接进行发送,这样可以避免消息中间件因大数据量而致内存崩溃,同时也避免对特定的消息中间件行程。采取非事务连接方式向消息中间发送能够使得基于本发明的机制下可以支持极大数据量的传输,支持的最大数据量(Sm)收到两个因素的限制:每个消息的最大尺寸(Sa),控制消息在消息最大尺寸下能够记录的数据消息的标识符的最大个数(N),Sm=Sa*N,可以一般性地认为N等于Sa除以每个标识符的大小(Si),那么Sm=Sa*Sa/Si。
假设,消息中间件允许的每个消息最大尺寸为1MB,每个数据消息的标识符大小为32Byte,则Sm=1MB*1MB/32Byte=32GB;如果消息中间件允许的每个消息的最大尺寸为5MB,则Sm=5MB*5MB/32Byte=800GB。此外,如果辅以数据压缩手段还可以成倍地提高最大数据量。
3、接收装置的数据接收机制及其实现
接收装置是配合发送装置实现的发送过程而实现数据接收。数据接收包含两个基本过程:
a、数据消息的接收:从消息中间件将数据消息读取出来,通过消息存储装置进行记录和保存。
b、控制消息的接收:从消息中间件将控制消息读取出来,通过消息存储装置进行记录和保存之后,根据控制消息中记录的数据消息标识符列表,通过消息存储装置检索出数据消息,按照控制消息中指定的数据顺序和处理方式触发对应的业务数据处理过程。
接收装置执行数据传输的具体过程包括:
步骤802,收到消息,包括数据消息和控制消息。
步骤804,保存消息。
步骤806,判断当前是否为控制消息,若是,则进入步骤808,否则结束。
步骤808,按标识符列表检索存储的数据消息。
步骤810,判断是否收到全部数据消息,若是,则进入步骤812,否则结束。
步骤812,处理数据消息。
以图6所示的控制消息为例,当收到控制消息TC001时,则通过消息存储装置检索消息标识符列表中的D1、D2、D3数据消息是否已经收到,如果已经收到,则触发UPDATE_USERS事件,将D1、D2、D3数据消息的内容作为事件参数传递。
对于未收到时需要进行的处理可以根据实际情况实现,例如可以等待重试,或者抛弃处理,或者触发某类约定的错误等等,但这些并不是本装置的必要要求。
从消息中间件接收消息的具体编程实现是需要调用具体消息中间件提供的API实现的,由选用的消息中间件决定。例如,对于实现了JMS的消息中间件,则按照JMS定义的MessageConsumer进行监听和接收消息。
4、消息存储装置的消息存储机制及其实现
消息存储装置需要满足对消息的存储和按标识符检索的功能,在实现上可以有许多实现方式可以选择,例如基于文件系统存储、基于数据库存储等,同时还需要考虑其它技术因素,例如集群环境因素、数据库压力状况等。例如在集群环境下,如果采用基于文件系统的消息存储装置实现,则需要将存储位置单点化,提供存储的文件系统必须是各个集群节点都能共同访问到网络文件系统。
符合本发明的消息存储装置需要实现最基本的两点:
1、能够按照消息标识符保存消息;
2、能够按照消息标识符检索到已保存的消息。
以文件系统存储为例,需要将消息标识或者由标识符生成的格式字符作为文件名保存,在检索时按消息标识符或者由标识符生成的格式字符作为文件名进行磁盘文件查找。
以数据库存储为例,保存消息的数据表最基本的需要消息标识符列(char/varchar类型)和消息内容列(blob类型)两个列分别保存消息标识符和消息内容。
此外,消息存储装置的独立实现并非是实现本发明的必要的要素,其功能也可以与消息接收装置合并在一起进行实现。
5、双向传输的实现
本发明的装置中,一个消息发送装置和一个消息接收/存储装置构成了一个单向传输单元。要实现双向传输只需要将此单向传输单元再反向部署一套即可,即需要传输双方中的每一方都同时具有消息发送装置和消息接收/存储装置。具体地,如图9所示,展现了一个具备双向传输能力的系统装置。
以上结合附图详细说明了本发明的技术方案,本发明技术方案与现有的应用消息中间件的技术最大区别之处是,本技术方案提出一套基于消息发布/订阅模型的数据传输的机制,该机制的核心是建立在本方案提出的对业务数据和业务操作的边界标识方法以及与之对应的发送、接收处理机制,并不依赖于具体的消息中间件厂商,在上层应用和通讯基础设置之间维持了独立性,给应用系统提供了一套更加通用、灵活和更具移植性的分布式通讯解决方案。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种用于分布式应用系统的数据传输系统,其特征在于,包括发送方和接收方,其中,所述发送方包括:
数据拆分单元,用于将待发送的业务数据拆分为多个数据消息;
消息生成单元,用于生成对应于所述数据消息的控制消息;
数据发送单元,用于将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息;
所述数据消息和所述控制消息各自分开独立发送,多个所述数据消息之间无需保持顺序;
标识添加单元,用于为每个所述数据消息添加相应的唯一标识;
其中,所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。
2.根据权利要求1所述的用于分布式应用系统的数据传输系统,其特征在于,所述数据发送单元采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。
3.根据权利要求1或2所述的用于分布式应用系统的数据传输系统,其特征在于,所述接收方还包括:
消息获取单元,用于从所述消息中间件中获取数据消息和控制消息;
消息存储单元,用于对所述数据消息和所述控制消息进行记录和存储;
消息解析单元,用于对所述消息存储单元中存储的指定控制消息进行解析,以获取所述指定控制消息中包含的标识、排列顺序和处理方式;
消息处理单元,用于将所述标识与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息,并根据所述排列顺序和所述处理方式,对所述指定数据消息进行处理。
4.根据权利要求1或2所述的用于分布式应用系统的数据传输系统,其特征在于,
所述发送方还包括:信息添加单元,用于在所述控制消息中添加触发指示信息;
所述接收方还包括:事件触发单元,用于根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。
5.一种用于分布式应用系统的数据传输方法,其特征在于,包括:
步骤302,发送方将待发送的业务数据拆分为多个数据消息;
步骤304,所述发送方生成对应于所述数据消息的控制消息;
步骤306,所述发送方将所述数据消息和所述控制消息发送至消息中间件,以供接收方进行获取并按照所述控制消息来处理所述数据消息;所述数据消息和所述控制消息各自分开独立发送,多个所述数据消息之间无需保持顺序;所述步骤302还包括:
为每个所述数据消息添加相应的唯一标识;以及
所述步骤304还包括:
所述控制消息中包含每个所述数据消息的唯一标识、所述多个数据消息的排列顺序以及对所述多个数据消息的处理方式。
6.根据权利要求5所述的用于分布式应用系统的数据传输方法,其特征在于,所述发送方采用非事务连接方式向所述消息中间件发送所述数据消息和所述控制消息。
7.根据权利要求5或6所述的用于分布式应用系统的数据传输方法,其特征在于,所述步骤306之后,还包括:
步骤308,所述接收方从所述消息中间件中获取数据消息和控制消息,并对其进行记录和存储;
步骤310,所述接收方根据从指定控制消息中解析出的标识,与存储的数据消息的唯一标识进行匹配,以确定对应于所述指定控制消息的指定数据消息;
步骤312,所述接收方根据从所述指定控制消息中解析出的排列顺序和处理方式,对所述指定数据消息进行处理。
8.根据权利要求5或6所述的用于分布式应用系统的数据传输方法,其特征在于,还包括:
所述发送方还在所述控制消息中添加触发指示信息;以及
所述接收方还根据从所述控制消息中解析出的触发指示信息触发指定的事件,以处理所述控制消息对应的数据消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310055542.4A CN103179193B (zh) | 2013-02-21 | 2013-02-21 | 用于分布式应用系统的数据传输系统和数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310055542.4A CN103179193B (zh) | 2013-02-21 | 2013-02-21 | 用于分布式应用系统的数据传输系统和数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103179193A CN103179193A (zh) | 2013-06-26 |
CN103179193B true CN103179193B (zh) | 2016-08-03 |
Family
ID=48638811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310055542.4A Active CN103179193B (zh) | 2013-02-21 | 2013-02-21 | 用于分布式应用系统的数据传输系统和数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103179193B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516364A (zh) * | 2016-01-21 | 2016-04-20 | 浪潮(北京)电子信息产业有限公司 | 一种云存储的异构消息处理方法及装置 |
CN105681462B (zh) * | 2016-03-14 | 2019-03-01 | 南京邮电大学 | 一种基于消息路由的集群系统及数据通信中转方法 |
CN106484666B (zh) * | 2016-09-27 | 2023-11-17 | 湖北省楚天云有限公司 | 一种大数据分拆和组装方法、装置及公用电文管理系统 |
CN107222554A (zh) * | 2017-06-27 | 2017-09-29 | 山东中创软件商用中间件股份有限公司 | 一种文件传输方法及系统 |
CN107590072B (zh) * | 2017-08-30 | 2020-08-18 | 深圳乐信软件技术有限公司 | 一种应用开发和测试的方法和装置 |
CN108038007B (zh) * | 2017-11-30 | 2022-04-05 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及系统 |
CN108337328A (zh) * | 2018-05-17 | 2018-07-27 | 广东铭鸿数据有限公司 | 一种数据交换系统、数据上传方法及数据下载方法 |
CN117596689B (zh) * | 2024-01-19 | 2024-03-19 | 为准(北京)电子科技有限公司 | 无线通信系统中传输上行链路控制信息的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1252141A (zh) * | 1997-12-18 | 2000-05-03 | 松下电器产业株式会社 | 文件记录、记录媒体管理、文件处理和对记录媒体写入接收数据的方法以及数据记录装置和程序记录媒体 |
CN1852075A (zh) * | 2005-12-02 | 2006-10-25 | 华为技术有限公司 | 一种数据重传的方法及装置 |
WO2011074547A1 (ja) * | 2009-12-15 | 2011-06-23 | シャープ株式会社 | コンテンツ配信システム、コンテンツ配信装置、コンテンツ再生端末およびコンテンツ配信方法 |
CN102223407A (zh) * | 2010-04-01 | 2011-10-19 | 苹果公司 | 数据处理系统及其方法 |
-
2013
- 2013-02-21 CN CN201310055542.4A patent/CN103179193B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1252141A (zh) * | 1997-12-18 | 2000-05-03 | 松下电器产业株式会社 | 文件记录、记录媒体管理、文件处理和对记录媒体写入接收数据的方法以及数据记录装置和程序记录媒体 |
CN1852075A (zh) * | 2005-12-02 | 2006-10-25 | 华为技术有限公司 | 一种数据重传的方法及装置 |
WO2011074547A1 (ja) * | 2009-12-15 | 2011-06-23 | シャープ株式会社 | コンテンツ配信システム、コンテンツ配信装置、コンテンツ再生端末およびコンテンツ配信方法 |
CN102223407A (zh) * | 2010-04-01 | 2011-10-19 | 苹果公司 | 数据处理系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103179193A (zh) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103179193B (zh) | 用于分布式应用系统的数据传输系统和数据传输方法 | |
CN109492040B (zh) | 一种适用于数据中心海量短报文数据处理的系统 | |
US8332376B2 (en) | Virtual message persistence service | |
US10887279B2 (en) | Scalable cloud hosted metadata service | |
CN101313495B (zh) | 数据同步方法、系统及装置 | |
US10498777B2 (en) | Real-time push notifications for cloud-based applications | |
CN102591726B (zh) | 一种多进程通信方法 | |
CN104838620B (zh) | 电信网中的事件管理的设备和方法 | |
CN105005611B (zh) | 一种文件管理系统及文件管理方法 | |
CN102541990A (zh) | 利用虚拟分区的数据库重新分布方法和系统 | |
CN102609769A (zh) | 数据采集工具及数据采集方法 | |
WO2008060050A1 (en) | Apparatus and method for parsing domain profile in software communication architecture | |
TWI251148B (en) | System and method for efficiently supporting multiple native network protocol implementations in a single system | |
CN102065136A (zh) | 一种p2p网络安全数据传输方法及其系统 | |
CN104333573A (zh) | 一种大并发量请求的处理方法及处理系统 | |
EP2318914B1 (en) | Method and apparatus for audit logging and role based security using one-way proxy architecture | |
CN104104702A (zh) | 面向家庭物联网的云计算架构 | |
CN104239508A (zh) | 数据查询方法和装置 | |
CN114253929B (zh) | 一种基于分布式文件存储的网盘系统架构 | |
CN102045399A (zh) | 云计算模式文件系统及文件读取方法 | |
CN103034738A (zh) | 用于管理异构非结构化数据的关系型数据库及其创建和查询非结构化数据描述信息的方法 | |
EP3577587B1 (en) | Satellite and central asset registry systems and methods and rights management systems | |
WO2007011164A1 (en) | Virtual storage system and method for managementing virtual storage based on ad-hoc network | |
CN101730085A (zh) | 通信录数据同步方法和系统 | |
CN115982211B (zh) | 基于云原生的MySQL数据查询分析方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100094 Haidian District North Road, Beijing, No. 68 Applicant after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Applicant before: UFIDA Software Co., Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |