用于高可靠性和高性能应用消息递送的系统的制作方法

文档序号:7994279阅读:134来源:国知局
用于高可靠性和高性能应用消息递送的系统的制作方法
【专利摘要】本发明提供能提供高可靠性和高性能应用消息递送的计算机实现的方法和系统,它包括利用至少一个数据处理器执行的下列步骤:在耦接到至少一个应用服务器(201a-c)的多个日志服务器(203a-b)上:从至少一个应用服务器(201a-c)异步地接收包含应用信息的应用消息;以预定的时间间隔,从至少一个应用服务器(201a-c)异步地接收控制消息;在多个日志服务器(203a-b)中的每一个:将所接收的应用消息存储在当前应用数据文件(209)中以及将所接收的控制消息存储到控制文件(211)中;以及在接收到打开-关闭控制消息时,关闭当前应用数据文件,存储所述关闭的应用数据文件,以及创建新应用数据文件作为当前应用数据文件;在给定间隔比较所述多个日志服务器(203a-b)的所述控制文件;以及基于此比较,确定来自所述日志服务器(203a-b)中的每一个的多个应用数据文件(209)中的应用数据文件作为给定间隔的最佳候选,并转发所述最佳候选文件用于后处理。
【专利说明】用于高可靠性和高性能应用消息递送的系统

【技术领域】
[0001]本发明涉及递送大量的电子消息的领域。特别有利的但不限制性的应用涉及航空公司记帐事务。具体而言,本发明涉及通过不可靠的网络向多个日志服务器递送包含例如记帐信息的大量(通常>8,000个消息每秒钟)的异步消息,其中,创建包含已知时间间隔的记帐信息的日志文件,对具有最低计帐数据丢失的日志文件执行时间间隔的记帐信息的处理。

【背景技术】
[0002]在已知技术中,有时需要跨不可靠的网络或使用诸如用户数据报协议(UDP)之类的异步传输协议来传输数据,因为这样的基于无会话的网络事务的吞吐量高于,例如,基于传输控制协议(TCP)的事务。
[0003]考虑图1,现有技术系统的示例。这样的基于服务器103的系统可以执行多个传输记帐信息的应用123。由于使用同步事务来执行超出网络105的容量的许多记帐事务的必要性;或由于在应用等待对接收到事务的确认时对应的吞吐量的丢失,会通过网络105发送异步消息125。异步消息被日志服务器127接收到,或未接收到。
[0004]然而,日志服务器127不是容错或高可用性服务器,因此,被视为不可靠127。接收到的所有消息都存储129在文件系统109中,用于由记帐服务器111使用记帐系统131来处理。
[0005]应该理解,由于所使用的消息协议125和日志服务器107的不可靠性127,事务可倉泛1?夕5。
[0006]如此,本发明的目的是在使用非可靠网络的情况下,显著改善消息递送的可靠性同时提高或至少维持吞吐量。


【发明内容】

[0007]根据一方面,本发明涉及用于提供高可靠性和高性能应用消息递送的计算机实现的方法。该方法包括利用至少一个数据处理器执行的下列步骤:
[0008]在耦接到至少一个应用服务器的多个日志服务器中,每个应用服务器都与应用相关联:从至少一个应用服务器异步地接收包含应用事务的应用信息的应用消息,每个应用消息都由多个日志服务器中的至少某些日志服务器接收到的;以预定的间隔,从至少一个应用服务器异步地接收控制消息,每个控制消息都由多个日志服务器中的至少一些日志服务器接收的;
[0009]在多个日志服务器中的每一个:将所接收的应用消息存储在当前应用数据文件中;将所接收的控制消息存储在控制文件中,以及在接收到打开-关闭控制消息时,关闭当前应用数据文件,存储所述关闭的应用数据文件,并创建新应用数据文件作为所述当前应用数据文件;
[0010]在给定间隔比较多个日志服务器的控制文件;以及
[0011]基于此比较,确定来自日志服务器中的每一个的多个应用数据文件中的应用数据文件作为给定间隔的最佳候选,并转发所述最佳候选文件用于后处理。
[0012]如此,在在某些日志服务器中未接收到由应用服务器转发的某些应用消息的情况下,本发明允许确定最可靠的应用数据文件,并丢弃其他应用数据文件,而不要求比较应用数据文件。
[0013]可任选地,本发明可以包括下列可任意选择的特征中的任何一个:
[0014]在一个实施例中,每一个日志服务器都耦接到将每一个应用服务器与至少一个应用相关联的多个应用服务器。
[0015]有利地,控制消息包括由应用服务器传输的一定数量的应用消息。有利地,控制消息包括唯一地标识控制消息序列中的控制消息的顺序的标识符。优选地,标识符是控制消息编号。有利地,控制消息包括下列各项中的至少一项:应用的标识符,以及应用服务器的时间戳。优选地,每一个控制消息都包括应用的标识符,以及应用服务器的时间戳。
[0016]优选地,用于转发控制消息的时间间隔是给定时间段。
[0017]有利地,打开/关闭控制消息是控制消息序列中的第N个控制消息。在一个实施例中,N是预定的。在一个实施例中,第N个控制消息是控制消息序列中的第五个控制消息,给定时间段是两分钟。
[0018]有利地,最佳候选文件是在给定时间间隔内从来自多个日志服务器并且具有相同起始点和停止点的一组应用数据文件中选择的。优选地,起始点和停止点是由打开/关闭控制消息的接收确定的。
[0019]根据有利的实施例,最佳候选文件是从选择的文件组中选择的,该文件具有最低的应用消息丢失率。根据有利实施例,在某些应用数据文件具有相同数量的应用消息的情况下,最佳候选文件是从具有最低的应用消息丢失率的应用数据文件中选择的,该文件具有最低的控制消息丢失率。
[0020]具有丢失的应用消息但在所述间隔内不丢失多于的应用消息的最佳候选文件利用存在于所述文件组的其他文件中的所述丢失的应用消息增强,X是预定的。在一个实施例中,X在15和45之间。
[0021 ] 有利地,在确定来自多个日志服务器中的每一个的多个应用数据文件中的应用数据文件作为给定间隔的最佳候选时,服务器转发最佳候选文件供应用处理。
[0022]在一个实施例中,应用是航空公司记帐事务应用。
[0023]根据另一方面,本发明涉及包含软件程序指令的非瞬时的计算机可读介质,其中,由至少一个数据处理器对所述软件程序指令的执行导致进行包括执行本发明的所述方法的操作。
[0024]本发明的另一方面涉及用于高可靠性和高性能应用消息递送的系统。该系统包括:
[0025]耦接到至少一个应用服务器的输出端的多个日志服务器;
[0026]每个日志服务器都被配置成从至少一个应用服务器异步地接收:包含应用信息和控制消息的应用消息;
[0027]每一个日志服务器都还被配置成:将所接收的应用消息存储在当前应用数据文件中以及将所接收的控制消息存储到控制文件中;以及在接收到打开-关闭控制消息时,关闭当前应用数据文件,存储所述关闭的应用数据文件,将所述关闭的应用数据文件添加到多个应用数据文件中,创建新应用数据文件作为当前应用数据文件;
[0028]耦接到多个日志服务器的服务器,所述服务器被配置成:在给定间隔比较多个日志服务器的控制文件;基于此比较,确定来自多个日志服务器中的每一个的多个应用数据文件中的应用数据文件作为给定间隔的最佳候选;以及转发最佳候选文件用于后处理。
[0029]可任选地,系统包括多个应用服务器和在多个应用服务器中的任何一个的处理器上执行的多个应用,每一个应用服务器都具有耦接到日志服务器中的每一个的输入端的输出端。
[0030]根据另一方面,本发明通过下列操作来解决问题:提供高可靠性和高性能记帐消息递送,向多个日志服务器中的每一个异步地转发包含应用事务的记帐信息的记帐消息;以预定的时间间隔,异步地将控制消息转发到多个日志服务器中的每一个;将所接收的记帐消息存储在多个日志服务器中的每一个中的当前计帐数据文件中;将所接收的控制消息存储在多个日志服务器中的每一个中的控制文件中,在接收到打开-关闭控制消息时,关闭当前计帐数据文件,将所述关闭的计帐数据文件添加到多个计帐数据文件中,创建新的计帐数据文件作为当前计帐数据文件;以及确定来自多个日志服务器中的每一个的多个计帐数据文件中的一个计帐数据文件作为给定间隔的最佳候选;以及转发最佳候选文件用于记帐处理。
[0031]根据本发明的更进一步的方面,公开了一种用于高可靠性和高性能应用消息递送的系统,其特征在于,它包括:
[0032]在一个应用服务器上执行应用事务的至少一部分的至少一个应用,
[0033]耦接到至少一个应用服务器的输出端的多个日志服务器;
[0034]至少一个应用服务器被配置成向多个日志服务器中的每一个异步地转发:包含事务的信息和控制消息的应用消息;
[0035]每一个日志服务器都被配置成:将所接收的应用消息存储在当前应用数据文件中以及将所接收的控制消息存储到控制文件中;以及在接收到打开-关闭控制消息时,关闭当前应用数据文件,存储所述关闭的应用数据文件,以及创建新应用数据文件作为当前应用数据文件;
[0036]耦接到多个日志服务器的服务器,所述服务器被配置成:在给定间隔比较多个日志服务器的控制文件;基于此比较,确定来自多个日志服务器中的每一个的多个应用数据文件中的应用数据文件作为给定间隔的最佳候选;以及转发最佳候选文件用于后处理。
[0037]优选地,应用是执行记帐事务的至少一部分的记帐应用。优选地,应用消息是包含涉及记帐的数据的记帐消息。优选地,应用数据文件是计帐数据文件。
[0038]本发明的另一方面涉及包括能够执行根据本发明的方法的步骤的指令的计算机程序产品。

【专利附图】

【附图说明】
[0039]图1示出了现有技术系统的系统图。
[0040]图2是本发明的体系结构的系统图。
[0041]图3是控制消息数据结构的图示。
[0042]图4是传输的控制消息的类型的列表。
[0043]图5是由发送记帐消息的应用执行的过程的流程图。
[0044]图6是由接收消息的日志服务器执行的过程的流程图。
[0045]图7是最佳候选日志文件的过程的流程图。
[0046]图8是改善选择的最佳候选文件的质量的流程图。
[0047]图9是消息从应用服务器传输到四个日志服务器的集群的示例性实施例的简化例图。
[0048]图10是系统的服务器中的任何一个的内部体系结构的图示。

【具体实施方式】
[0049]回想一下,本发明涉及通过使用日志服务器集群,来递送由应用所发送的通知消息。每个应用同时都通知所有冗余日志服务器。每一个日志服务器都将这种通知消息的流拆分为分离的、可管理的文件。系统连续地确定集群中的最可靠的文件,并将该文件传输到接收方。
[0050]可任选地,本发明可以包括下列有利的但可任意选择的特征中的任何一个。
[0051 ] 控制消息包括记帐应用的标识符。优选地,控制消息还包括下列各项中的任何一项:应用服务器的时间戳、由应用(例如,记帐应用)传输的控制消息的数量以及由应用传输的应用消息(例如,记帐消息)的数量。每个应用都具有用于在给定时间段内转发控制消息的定义的时间间隔,打开/关闭控制消息是控制消息序列中的每隔N个控制消息。根据有利的实施例,第N个控制消息是控制消息序列中的第五个控制消息,给定时间段是两分钟。系统通过创建从给定时间间隔内的来自多个日志服务器的具有相同的起始点和停止点的一组文件中选择的最佳候选文件,来选择文件供记帐系统处理。优选地,最佳候选文件是从选择的文件组中选择的,文件具有最低消息丢失率。可以通过复制该组文件中的最佳候选文件之外的文件中存在的丢失的消息,来增强当在该时间间隔内消息丢失但没有丢失超过百分之三十的消息的最佳候选文件。优选地,在确定来自多个日志服务器中的每一个的多个应用数据文件中的应用数据文件作为给定间隔的最佳候选时,服务器转发最佳候选文件供应用处理。
[0052]图2示出了实现本发明的优选实施例的系统。系统具有多个应用201 (a)-(C)。这些应用可以是在单一服务器上运行的多个不同的应用201 (a)-(c);在多个服务器103上运行的单一应用201(a);或在多个不同的服务器上运行的多个应用201(a)-201(c)的组合。应用201(a)_(c)中的每一个都向日志服务器203 (a)-(b)转发异步应用消息。应用消息包含涉及应用的信息。例如,应用消息可以包括涉及下列各项中的任何一项的数据:记帐、客户配置文件、客户配置文件等等。可以理解,尽管示出了两个日志服务器203(a)_(b),但是,日志服务器的数目优选地是2个以上。尽管应用集中于航空公司记帐事务数据,但是,其他类型的应用可以转发本发明的系统中的其他数据。
[0053]日志服务器203(a)-(b)中的每一个都具有将所接收的应用数据消息写入到当前应用数据文件209(a)中,并将控制消息写入到控制文件211中的日志服务器实例205和记帐插件207。如此,相同应用消息从应用服务器201(a)-(c)发送到全部日志服务器203(a)-(b)。可能所有日志服务器201 (a)-(c)接收相同应用消息。然而,在实际中,应用消息中的至少某些可以不由所有日志服务器201(a)_(c)接收。
[0054]如在本文中稍后描述的,控制消息是每隔一段时间发送的,控制消息导致当前应用数据文件209(a)关闭,创建多个应用数据文件209(b)-(c),每一个都表示给定间隔的记帐应用消息。
[0055]控制消息的目的是双面的。首先,这些消息用于(重新)同步将应用消息流拆分为文件209 (a) - (C)。关键的是每一个日志服务器在流中的相同的点拆分流以便创建同步的文件。其次,每一个控制消息都将被关联算法用来选择同步的文件中的最佳候选。因此,控制消息的概述存储在控制文件211中。
[0056]包括关联批213、关联输出215和发送批217的记帐部分负责确定应用数据文件209 (a)-(c)的最佳候选,并将最佳候选转发到记帐框架219。
[0057]图3示出了所传输并存储在控制文件211中的控制消息的结构。相同控制消息从应用服务器201(a)_(c)发送到全部日志服务器203 (a)-(b)。可能所有日志服务器201 (a)-(c)接收相同控制消息。然而,在实际中,控制消息中的至少某些可以不由所有日志服务器201 (a)-(c)接收。
[0058]由应用201 (a)-(c)所发送的每一个控制消息都优选地包括至少四个元素。
[0059]控制消息包括标识作为控制消息的始发者的应用服务器的应用标识符303。每个应用201(a)-(c)都具有唯一地标识应用的应用标识符303。此元素允许不同的计费应用向相同集群(即,日志服务器203 (a)-(b))发送数据和控制消息。集群可以轻松地根据源分离消息。
[0060]时间戳305定义发送方应用服务器中的单一时间基准。全部同步步骤都将基于发送方应用服务器的时间戳305。这避免了在服务器203 (a)-(b)的集群中通常发现的时钟差异。此特征是最有利的,因为应用服务器201(a)、201(b)、201(c)的数目高。
[0061]控制消息编号307表明当前控制消息的唯一连续标识符。此编号可使日志服务器知道前一控制消息是否丢失。例如,如果在日志服务器中连续地接收到的两个控制消息呈现相差一个以上的增量的控制消息编号307,那么它表示至少一个控制消息没有被所述日志服务器接收到。
[0062]应用消息编号309表明由应用201(a)_(c)所发送的应用消息的数目。由于每一个日志服务器都知道它实际接收到多少应用消息,因此,每一个日志服务器都基于此值,知道有多少应用消息丢失。
[0063]消息311的类型表明正在被转发的控制消息的类型。
[0064]图4示出了从应用201(a)_(c)转发到日志服务器203 (a)-(c)的控制消息的类型。应用-启动403表明应用已经启动,因此,应该创建新应用数据文件。这样的控制消息的推论是应用-停止409,当应用停止时,关闭当前应用数据文件209 (a)。
[0065]计时器时间间隔405每隔X时间段发送消息,其中,X是例如,并优选地是2分钟。每隔N个,例如,由应用201 (a) - (c)所发送的N = 5 (五)检查点(叫做拆分检查点),被日志服务器203 (a)-(b)用来拆分流:日志服务器关闭当前应用数据文件209(a),并创建新文件,在该新文件中将存储下一组连续应用消息。这样的拆分在一个应用数据文件中创建停止点,在新应用数据文件中创建开始点。如此,当接收第N检查点控制消息时,关闭当前应用数据文件,然后,创建变为当前应用数据文件的新应用数据文件。
[0066]每一个开始点和停止点都与用于标识传输次序的控制消息编号307相关联。因此,易于标识具有相同开始点的应用数据文件。还易于标识具有相同停止点的应用数据文件。因此,可以轻松地实现各种日志服务器的应用数据文件的比较以及流的拆分。
[0067]由于检查点也可能会丢失,日志服务器203(a)_(b)使用控制消息的控制消息编号307来检测这样的丢失。然而,如果拆分点丢失,控制消息编号还通知日志服务器[控制消息编号模N = O]。取决于系统的要求,可以使用五之外的其他值。
[0068]在非拆分检查点丢失的情况下,日志服务器203(a)_(b)将简单地将该丢失的事件写入到控制文件211。控制文件211中的任何丢失的事件都将降低合适的应用数据文件的可靠性。
[0069]在拆分检查点丢失的情况下,日志服务器203 (a)-(b)将关闭当前应用数据文件209(a),并打开新的(好像接收到拆分检查点)。然而,当前应用数据文件和新应用数据文件将不同步,因为它们在拆分检查点没有被关闭/打开。控制文件211被相应地更新:丢失检查点的丢失的事件,创建新文件的事件,以及时间戳。没有用于关闭应用数据文件的事件。这将就拆分检查点丢失通知关联算法。
[0070]在由应用确定的时间,由应用201(a)_(c)发送“时间段结束” 407控制消息。通常,此控制消息在午夜为记帐应用发送,以便分离两个工作日。基本上,此消息强制计费的应用和日志服务器之间的完整的再同步。所有内部计数器都被设置为零,新应用数据文件和新控制文件被启动。还可以理解,“时间段结束”可以是某种其他时间段,如多天,一周,月或年。
[0071]由于每个控制消息都包含计费应用的当前时间戳,因此,发现“时间段结束”控制消息是否丢失是无足轻重的:由计费应用所发送的时间戳元素中的日期不再与日志服务器上的最后接收到的日期相同。在此情况下,日志服务器模拟“时间段结束”消息407的接收,将所有内部计数器设置为零,并启动新应用数据文件。控制文件211如同拆分检查点丢失那样被更新。
[0072]在控制文件211中所存储的控制消息403-409的类型允许将应用消息的流拆分为同步的应用数据文件209 (a)-209 (C)。如果没有控制消息丢失,则所有文件将被同步。当控制消息丢失时,集群中文件的数量将不同步:在不同的时间戳将关闭/打开某些文件。除知道文件被同步之外,还将每一个文件的正确性通知系统。有关应用数据文件的两个事实将被关联算法利用。
[0073]如本发明的系统中所实现的记帐服务器219必须通过确定日志服务器203 (a)-(b)中的每一个上的日志文件209 (a)-(c)的最佳候选来接收。最佳候选的确定由关联批213来执行。
[0074]最佳候选选择基于比较每一个日志服务器203 (a)-(b)的控制文件211。通过不比较数量多并且大的应用数据文件209 (a)_ (C),实时地执行此步骤。
[0075]系统对齐每一个日志服务器203 (a)-(b)的不同的控制文件211中的打开文件/关闭文件事件。对齐基于事件的时间戳。需要[(n+l)/2]的法定数来商定对齐。对齐简单地表明流在相同时间点被拆分的文件。在此额定情况下,系统通过选择首先包含最多消息并其次包含最少丢失的检查点消息的应用数据文件,来确定同步的应用数据文件209 (a) - (C)中的最佳候选。
[0076]如果没有达到法定数,则系统将首选发现打开文件事件和关闭文件事件两者的文件。在丢失的拆分检查点的情况下,没有在控制文件211中注册的关闭事件。这意味着,系统将降低法定数,但是,仍将只考虑接收到打开文件和关闭文件事件两者的文件。系统首先基于应用消息的数目以及其次基于丢失的检查点消息的数目,定义最佳候选。
[0077]在没有单一文件具有关闭文件事件的极端情况下,(这意味着,拆分检查点被所有日志服务器丢失),系统将首选首先具有最少丢失的检查点消息,其次具有最多消息的文件。
[0078]重要的是,要考虑的接下来的打开文件事件必须按时间顺序遵循当前选择的最佳候选的关闭事件,以便避免将重复的消息发送到记帐服务器219。
[0079]系统还通过检索其他同步的文件中的丢失消息的一部分,改善所选最佳候选的质量。改善只对于其中最佳候选丢失小于消息的(即,接收到的消息数目大于(100-x) %)的同步的文件适用。有利地,15〈x〈45,更有利地,X = 30,S卩,接收到的消息的数目大于70%。如果甚至最佳候选文件丢失了多于的消息,则可以认为其他应用数据文件不能提供丢失的消息。
[0080]在最终改善的情况下,比较同步的文件的每一个检查点。由于每一个检查点都包含最后“m”分钟(例如,m = 2)的丢失的消息,因此,系统可以标识哪一个文件具有最佳数据块。如果最佳候选之外的另一个包含“m”分钟跨度内的更多消息,则提取消息块,并在最佳候选文件中替换。
[0081]此方法允许实时地改善最佳候选,因为只有概要控制文件211中的事件用于标识应用数据文件209 (a)-(c)中的最佳候选。
[0082]图5示出了实现本发明的应用201(a)_(c)的线程所采取的步骤的示例。在步骤501中,过程开始,在步骤503中,向日志服务器203 (a)-(c)立即发送应用-启动控制消息403。
[0083]应用记帐线程重复找工作。在步骤505中,判断自从发生了最后一个控制消息以来是否消逝了超过预定的时间长度(通常是2分钟),如果回答是,那么,在步骤507中,检查点控制消息405将被发送到日志服务器203 (a)-(c)。如果回答否,则转到步骤509,判断是否需要发送应用消息(例如,记帐应用消息)。如果回答是,则在步骤511中,向日志服务器203 (a)-(c)发送带有数据的应用消息。
[0084]如果回答否,则转到步骤513,在那里,判断它是否是新的一天,或其他记帐时间段。如果回答是,则在步骤515中,向日志服务器203 (a)-(c)发送“时间段结束”控制消息407。
[0085]如果回答否,则转到步骤517,在那里,判断是否正在停止应用程序。如果回答是,则在步骤519中发送应用-停止控制消息409,然后,在步骤521中结束处理,以别的方式继续迭代。
[0086]图6示出了在日志服务器203 (a) - (b)上接收日志消息的程序的步骤的示例。过程开始步骤601。在步骤603中,判断消息是否是应用消息(例如,记帐应用消息),如果是,则在步骤605中,将应用消息存储到当前日志文件209(a)中。如果否,则在步骤607中,将控制消息301存储到控制文件中,然后,确定接收到了什么类型的控制消息301。在步骤609中,判断控制消息301是否是应用-启动控制消息403,如果是,那么,在步骤611中,打开新当前应用数据文件209 (a)。如果否,则转到下一步骤613,在那里,通过在步骤615中检查控制消息编号307,判断控制消息301是否是第N个(N是预定的,并例如,是五(5))检查点消息405。如果是,则在步骤617中,关闭当前应用数据文件209(a),现在变为序列209 (b, C,...)中的下一应用数据文件。打开新文件,作为当前应用数据文件209(a)。
[0087]如果否,则步骤619判断任何前面的控制消息是否丢失,如果丢失这样的消息,然后,执行步骤617。
[0088]在步骤621中,判断控制消息301是否是“时间段结束”控制消息403,如果是,那么,执行步骤617。如果否,在步骤623中,判断控制消息301是否是应用-停止。如果是,那么,在步骤625中,关闭现在变为序列209 (b,C,..)中的下一应用数据文件的当前应用数据文件209 (a)。在步骤627中,结束处理。
[0089]图7示出了用于确定来自日志服务器203(a)_(b)中的每一个的日志文件209 (a)-(c)的最佳候选选择的根据本发明的方法的示例。从步骤701开始,在步骤703中,通过比较日志服务器203 (a)-(b)中的每一个中的控制消息301,确定在相同的时间点被拆分的应用数据文件209 (a)-(C)。从在日志服务器203 (a)-(b)中的每一个上在相同的时间点被拆分的应用数据文件209 (a)-(c)的列表,确定705具有最大数量的接收到的应用消息的日志文件。优选地,在至少两个应用数据文件209 (a)-(c)包括相同数量的应用消息的情况下,系统比较一定数量的丢失的控制消息。在日志服务器203 (a)-(b)中的每一个上在相同的时间点被拆分应用数据文件209(a)_(c)中的最佳候选是具有最高数量的应用消息并且具有最高数量的控制消息的应用数据文件209 (a)-(c)。
[0090]将选择的应用数据文件转发709到用于处理的记帐框架,结束处理711。
[0091]图8示出了组合文件以提高质量的方法。如果在步骤705中确定801应用数据文件被同步并且最佳候选具有超过70%的其记帐应用消息但是小于100%的消息,则将来自其他日志服务器的相同间隔内的应用数据文件的任何丢失的应用消息补充到最佳候选日志文件中。
[0092]图9示出了其中应用201向被称为11^#1、11^#2、11^#3和11^#4的四个日志服务器203的集群发送消息的示例性实施例。
[0093]第一同步的检查点100(检查点i)在四个日志服务器203的每一个中触发应用数据文件的启动。如此,四个日志服务器203的应用数据文件具有相同开始点。应用消息还被发送到日志服务器203。每一个日志服务器203都接收这些应用消息,并将它们存储到刚刚被打开的应用数据文件中。如此,应用消息分别由日志服务器LGS#1、LGS#2、LGS#3和LGS#4存储在应用数据文件101、102、103、104中。
[0094]每隔时间间隔105,由应用服务器201发送新控制消息。
[0095]某些日志服务器可以不接收普通检查点。例如,LGS#2丢失了具有编号i+3的检查点,LGS#3丢失了检查点编号i+2,检查点编号i+3、检查点编号i+4,LGS#4丢失了检查点编号i+Ι和检查点编号i+3。某些日志服务器还可以丢失同步检查点。例如,LGS#4丢失了具有编号i+5的检查点,所述检查点是同步检查点。此检查点是打开/关闭控制消息,该消息触发当前应用数据文件的关闭和新应用数据文件的打开。因此,在日志服务器LGS#1、LGS#2和LGS#3,在接收到控制消息i+5时,应用数据文件101、102、103在相同时间关闭。然而,在日志服务器LGS#4,应用数据文件104稍后关闭。如此,应用数据文件101、102、103具有相同起始点和停止点,应用数据文件104没有与其他停止点相同的停止点。
[0096]在此实施例中,打开/关闭控制消息是第五个控制消息,通过箭头105描绘了用于转发控制消息的时间间隔。
[0097]从具有相同起始点和停止点的应用数据文件组,S卩,应用数据文件101、102、103,中选择最佳候选文件。在此组应用数据文件101、102、103之中,将被视为最佳候选的应用数据文件是包括最高数量的应用消息的应用数据文件。应用消息的数量的此比较基于由每一个日志服务器所创建的控制文件的比较。因此,不需要比较应用数据文件,这要求多得多的时间和处理能力。在两个或更多应用数据文件101,102,103具有相同数量的应用消息的情况下,最佳候选是包括最高数量的控制消息的应用数据文件。例如,如果应用数据文件102和103具有相同数量的应用消息,此数量高于应用数据文件101中的一个,那么,应用数据文件102将被视为最佳候选,应用数据文件101,103和104将被丢弃。
[0098]虽然参考特别有利的应用(即,记帐消息的递送)描述了示例性实施例,但是,所描述的和所示出的所有特征适用于其他应用。
[0099]那些本领域技术人员可以理解,上面的系统和方法可以被实现为存储在诸如图10的硬盘驱动器903、DVD/⑶-R0M905、拇指驱动器907之类的计算机可读存储介质上的计算机程序,其中,CPU 901跨总线911将计算机程序加载到RAM909中,并作为一系列指令来执行程序,访问如上文所描述的设备,跨网络适配器913与网络105进行通信,使用显示器915和诸如键盘和鼠标等等之类的输入输出设备917。由于计算机程序存储在计算机可读存储介质中,此处动词“存储”意味着使永久地位于计算机可读存储介质上,因此,从计算机可读存储介质的含义中排除传播信号。
[0100]可以理解,有许多通过使用本发明实现的优点和技术效果。具体而言,本发明允许通过向各种日志服务器发送相同消息而同时维护高吞吐量,来显著提高消息的可靠性,因为可以选择最可靠的消息,而不要求处理大量的数据。通常,本发明允许每秒钟发送超过10000个事务,而将丢失的消息的比率维持在0.14%以下。
【权利要求】
1.一种计算机实现的提供应用消息递送的方法,其特征在于,它包括利用至少一个数据处理器执行的下列步骤: 在耦接到至少应用服务器(201a-C)的多个日志服务器(203a_b):从所述至少一个应用服务器(201a_c)异步地接收包含应用信息的应用消息,每个应用消息都由所述多个日志服务器(203a-b)中的至少一些日志服务器(203a-b)接收;以预定的间隔,从所述至少一个应用服务器(201a_c)异步地接收控制消息,每个控制消息都由所述多个日志服务器(203a-b)中的至少一些日志服务器(203a-b)接收的; 在所述多个日志服务器(203a-b)中的每一个:将所接收的应用消息存储在当前应用数据文件(209)中;将所接收的控制消息存储在控制文件(211)中,以及在接收到打开-关闭控制消息时,关闭所述当前应用数据文件,存储所述关闭的应用数据文件,并创建新应用数据文件作为所述当前应用数据文件; 在给定间隔比较所述多个日志服务器(203a-b)的所述控制文件;以及 基于此比较,确定来自所述日志服务器(203a-b)中的每一个的多个应用数据文件(209)中的应用数据文件作为给定间隔的最佳候选,并转发所述最佳候选文件用于后处理。
2.根据权利要求1所述的方法,其中,每个日志服务器(203a-b)都耦接到多个应用服务器(201a_c),每个应用服务器(201a_c)都被关联到至少一个应用。
3.根据权利要求1到2中的任何一项所述的方法,其中,所述控制消息包括由所述应用服务器(201a-c)传输的一定数量(309)的应用消息和标识控制消息序列中的每个控制消息的控制消息编号(307)。
4.根据权利要求1到3中的任何一项所述的方法,其中,所述控制消息包括下列各项中的至少一项:应用的标识符(303)和所述应用服务器的时间戳(305)。
5.根据前面的权利要求中的任何一项所述的方法,其中,转发控制消息的所述间隔是给定时间段。
6.根据前面的权利要求中的任何一项所述的方法,其中,所述打开/关闭控制消息是控制消息序列中的第N个控制消息,N是预定的。
7.根据前面的权利要求所述的方法,其中,所述第N个控制消息是所述控制消息序列中的第五个控制消息,所述给定时间段是两分钟时间段。
8.根据前面的权利要求中的任何一项所述的方法,其中,所述最佳候选文件是从来自所述多个日志服务器(203a-b)并且具有相同起始点和停止点的一组应用数据文件中选择的。
9.根据前面的权利要求所述的方法,其中,所述最佳候选文件是从所选择的文件组中选择的,所述应用数据文件具有最低应用消息丢失率。
10.根据前面的权利要求所述的方法,其中,在一些应用数据文件具有相同数量的应用消息的情况下,所述最佳候选文件是从具有最低应用消息丢失率的所述应用数据文件中选择的,所述应用数据文件具有最低控制消息丢失率。
11.根据前面两个权利要求中的任何一项所述的方法,其中,具有丢失的应用消息但在所述间隔内不丢失多于的应用消息的所述最佳候选文件利用存在于所述文件组的其他文件中的所述丢失的应用消息增强,X是预定的。
12.根据前面的权利要求中的任何一项所述的方法,其中,所述应用是航空公司记帐事务应用。
13.一种包含软件程序指令的非瞬时的计算机可读介质,其中,由至少一个数据处理器对所述软件程序指令的执行导致进行包括执行前面的权利要求中的任何一项中方法的操作。
14.一种用于高可靠性和高性能应用消息递送的系统,其特征在于,它包括: 耦接到至少一个应用服务器(201a_c)的所述输出端的多个日志服务器(203a_b); 每个日志服务器(203a_b)都被配置成从所述至少一个应用服务器(201a_c)异步地接收:包含应用信息和控制消息的应用消息; 每个日志服务器(203a_b)还被配置成:将所接收的应用消息存储在当前应用数据文件(209)中,并将所接收的控制消息存储在控制文件(211)中;以及在接收到打开-关闭控制消息时,关闭所述当前应用数据文件,存储所述关闭的应用数据文件,以及创建新应用数据文件作为所述当前应用数据文件; 耦接到所述多个日志服务器(203a-b)的服务器,所述服务器被配置成:在给定间隔比较所述多个日志服务器(203a-b)的所述控制文件;基于此比较,确定来自所述日志服务器(203a-b)中的每一个的多个应用数据文件(209)中的应用数据文件作为给定间隔的最佳候选;并转发所述最佳候选文件用于后处理。
15.根据权利要求14所述的系统,其中,所述系统包括多个应用服务器(201a-c)和在所述多个应用服务器(201a-c)中的任何一个的处理器上执行的多个应用,所述应用服务器(201a_c)中的每一个都具有耦接到所述日志服务器(203a_b)中的每一个的输入端的输出端。
【文档编号】H04L29/08GK104205775SQ201280068838
【公开日】2014年12月10日 申请日期:2012年12月27日 优先权日:2011年12月29日
【发明者】P·德萨赫特, T·佩尔, M·帕斯卡尔 申请人:艾玛迪斯简易股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1