ES2642669T3 - Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo - Google Patents

Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo Download PDF

Info

Publication number
ES2642669T3
ES2642669T3 ES12368017.5T ES12368017T ES2642669T3 ES 2642669 T3 ES2642669 T3 ES 2642669T3 ES 12368017 T ES12368017 T ES 12368017T ES 2642669 T3 ES2642669 T3 ES 2642669T3
Authority
ES
Spain
Prior art keywords
message
sequence
range
storage
handlers
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
Application number
ES12368017.5T
Other languages
English (en)
Inventor
Nicolas KRASENSKY
Clement Seveillac
Didier SPEZIA
Pierre Dor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amadeus SAS filed Critical Amadeus SAS
Application granted granted Critical
Publication of ES2642669T3 publication Critical patent/ES2642669T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Metodo, sistema y productos de programa informatico para secuenciar mensajes asmcronos en un entorno distribuido y paralelo
Campo tecnico:
La presente invencion se refiere, en general, al procesamiento de datos y de informacion para sistemas de comunicacion y, mas en particular, a un metodo, un aparato y un sistema para procesar mensajes asmcronos de una secuencia en un entorno de procesamiento distribuido y paralelo.
Antecedentes:
En un procesamiento de eventos o llamadas de servicio, que usa una arquitectura de soporte logico distribuida, la transmision de mensajes puede ser o bien smcrona o bien asmcrona. Los mensajes se distribuyen y se someten a multidifusion con pleno aislamiento de destinatario, en el que cada mensaje de multidifusion se procesa independientemente unos de otros.
Tanto el documento WO 2012/051366 A2 como el documento US 5 588 117 A divulgan un metodo de secuenciacion de mensajes asmcronos. Una pluralidad de nodos de procesamiento, dotado cada uno de una cola de entrada, procesa mensajes entrantes.
De acuerdo con el documento WO 2012/051366 A2, algunos mensajes que pertenecen a un grupo de mensajes se almacenan en una memoria intermedia hasta que todos los mensajes del grupo se encuentran presentes en la memoria intermedia. Cuando se recibe la totalidad de los mensajes, se inicia el procesamiento.
De acuerdo con el documento US 5 588 117 A, se determina si el mensaje entrante es el siguiente mensaje a procesar; de lo contrario el mensaje se almacena en una cola.
La figura 1 muestra una transmision smcrona de mensajes o llamadas de servicio entre dos sistemas, en un lado un sistema que llama 110 y en el otro lado un sistema remoto 120, en la que el sistema que llama 110 controla el orden del procesamiento de mensajes. En este caso, el sistema que llama 110 esta esperando el resultado del procesamiento remoto; como consecuencia, la parte que llama es el maestro en lo que respecta al orden en el que los mensajes se procesan en la practica en un sistema de servidor o el sistema remoto.
Una transmision 111 de un primer mensaje A a partir del sistema que llama 110 se procesa en el sistema remoto 120 y va seguida de un mensaje A procesado 121 que se devuelve al sistema que llama 110. Una vez que se ha recibido el mensaje A procesado, el sistema que llama 110 puede comenzar una transmision 113 de un segundo mensaje B al sistema remoto 120. El segundo mensaje B se procesa entonces en el sistema remoto 120 y un mensaje B procesado 123 se devuelve al sistema que llama 110.
En este diagrama de flujo a modo de ejemplo, el procesamiento cronologico de las llamadas o mensajes smcronos entre el sistema que llama 110 y el sistema remoto 120 muestra que el proceso 112 del primer mensaje A por el sistema de servidor o el sistema remoto 120 tiene lugar antes del proceso 114 del segundo mensaje B.
La figura 2 muestra una transmision asmcrona de mensajes o llamadas de servicio entre un sistema que llama 210 y un sistema de servidor o un sistema remoto 220, en la que el sistema que llama 210 envfa una llamada de servicio o mensaje al sistema de servidor o un sistema remoto 220 que procesara entonces el mensaje sobre la base de su propia programacion. El sistema de cliente o el sistema que llama 210 esta perdiendo el control de la temporizacion del procesamiento de mensajes.
Una transmision 211 de un primer mensaje A a partir del sistema que llama 210 se procesa en el sistema remoto 220. Mientras tanto, el sistema que llama 210 ha comenzado una transmision 213 de un segundo mensaje B al sistema remoto 220. El segundo mensaje B se procesa entonces en el sistema remoto 220 y el mismo no se puede determinar si un mensaje B procesado se devuelve al sistema que llama 210 antes de un mensaje A procesado.
En este diagrama de flujo a modo de ejemplo, el procesamiento cronologico de las llamadas o mensajes asmcronos entre el sistema que llama 210 y el sistema remoto 220 muestra que el proceso 212 del primer mensaje A por el sistema de servidor o el sistema remoto 220 tiene lugar mas o menos al mismo tiempo que el proceso 214 del segundo mensaje B. Tambien sena posible que el segundo mensaje B se procesara antes del primer mensaje A, lo que podfa afectar en gran medida a la relevancia de la secuencia que contiene los mensajes A y B.
La figura 3 es un diagrama de flujo a modo de ejemplo que muestra un procesamiento paralelo de llamadas de servicio o mensajes en un sistema distribuido. En los sistemas distribuidos, para cumplir con los requisitos de resiliencia y escalabilidad, las llamadas de servicio o mensajes se procesan en paralelo mediante instanciacion y / o por subprocesos. En esta figura, los casos 1, 2, 3, ... , y n, a los que se hace referencia como 310-1, 310-2, ... , y
5
10
15
20
25
30
35
40
45
50
55
60
65
310-n del sistema de proceso estan procesando cuatro mensajes 1, 2, 3 y 4 en la cola de mensajes 340 con una secuencia de entrada.
Los procesos paralelizados no garantizan el orden en el que se procesaran y se finalizaran las llamadas de servicio o mensajes consecutivos. No obstante, las llamadas de servicio o procesos de mensajes requieren a veces un fuerte cumplimiento de una secuencia entre mensajes o eventos correlacionados.
Por lo tanto, el mensaje 2 se procesa en primer lugar, seguido por el mensaje 1, entonces el mensaje 4 y, por ultimo, el mensaje 3. Este es un orden de procesamiento transaccional inconsistente.
En esta figura, la secuencia se refiere al orden en el que las llamadas de servicio o mensajes van a ser transportados y/o procesados por el sistema distribuido. En general, este orden es controlado por el proceso de negocio o una norma industrial. Al no respectar este orden, el resultado da como resultado un procesamiento inadecuado y, en el caso mas desfavorable, la corrupcion irreversible de los datos funcionales almacenados, que tambien se denomina corrupcion de base de datos.
La figura 4 es un diagrama de flujo a modo de ejemplo que muestra un procesamiento paralelo de llamadas o mensajes asmcronos en un sistema de proceso distribuido, lo que da como resultado un riesgo de desordenacion del procesamiento de mensajes y datos corrompidos.
En un entorno smcrono, la secuenciacion es asegurada por el sistema emisor o el sistema que llama que inicia los mensajes para el sistema remoto uno tras otro, controlando de facto el flujo de secuencias entre mensajes correlacionados.
Esta secuenciacion se vuelve imposible cuando el sistema emisor o el sistema que llama 410 se ha de ocupar de procesos asmcronos y distribuidos, debido a que el mismo es incapaz de determinar el fin del procesamiento de un mensaje en el sistema remoto 420. La figura 4 muestra este riesgo en el que una transmision 411 de un primer mensaje A desde el sistema que llama 410 al sistema remoto 420 va seguida de una transmision 413 de un segundo mensaje B. El proceso 414 del segundo mensaje B comienza antes del proceso 412 del proceso 414 del primer mensaje A. Por lo tanto, el procesamiento de mensajes se puede invertir, lo que da como resultado un procesamiento inadecuado y, en el caso mas desfavorable, la corrupcion irreversible de los datos funcionales almacenados, o corrupcion de base de datos.
Por lo tanto, la presente invencion tiene como objetivo mitigar el problema que se ha mencionado en lo que antecede y evitar toda corrupcion irreversible de los datos funcionales almacenados, o toda corrupcion de base de datos.
Sumario
En una realizacion, la invencion proporciona un metodo implementado por ordenador con las caractensticas de la reivindicacion 1. El metodo de secuenciacion de mensajes asmcronos distribuidos en un sistema distribuido y paralelo que tiene una pluralidad de manejadores de entrada y una pluralidad de manejadores de salida, comprendiendo el metodo las siguientes etapas que se realizan con al menos un procesador de datos:
recibir en un manejador de entrada un mensaje entrante con un valor de correlacion de secuencia que identifica una secuencia que comprende el mensaje entrante,
comprobar un estatus de secuencia de dicha secuencia en un almacenamiento de secuencias;
determinar si el mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en
dicha secuencia;
si el estatus de secuencia indica que ninguno de los manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y si se determina que el mensaje entrante es el siguiente mensaje a procesar para dicha secuencia, reenviar entonces el mensaje entrante a un almacenamiento de puesta en cola y, posteriormente, reenviar el mismo a un manejador de salida disponible para su procesamiento; si el estatus de secuencia indica que al menos uno de los manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si el almacenamiento de puesta en cola ya comprende un mensaje a procesar para dicha secuencia; o si se determina que el mensaje entrante no es el siguiente mensaje a procesar para dicha secuencia, almacenar entonces el mensaje entrante en una memoria de un almacenamiento de desbordamiento para conservarlo para su procesamiento adicional.
La etapa de determinar si el mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia, comprende:
- determinar un rango de mensaje que indica el orden del mensaje entrante en dicha secuencia,
- comparar el rango de mensaje con un rango de secuencia que define el rango del siguiente mensaje a procesar para dicha secuencia,
5
10
15
20
25
30
35
40
45
50
55
60
65
- si el rango de mensaje es igual al rango de secuencia, entonces se determina que el mensaje es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia,
- si el rango de mensaje es mas grande que el rango de secuencia, entonces se determina que el mensaje no es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia.
Preferiblemente, el rango de secuencia se indica en el almacenamiento de secuencias.
Por lo tanto, el sistema se puede ver como un encaminador que incluye: unos manejadores de entrada que reciben mensajes que se refieren a muchas secuencias; una capa de almacenamiento que comprende un almacenamiento de secuencias y un almacenamiento de puesta en cola y que esta configurada para recibir los mensajes de los manejadores de entrada, para almacenar los mismos en una memoria y para reenviar los mensajes a los manejadores de salida al tiempo que se asegura la secuenciacion correcta de los mensajes dentro de su secuencia respectiva; estando configurados los manejadores de salida para recibir mensajes, para procesar los mismos y para posiblemente entregarlos al destinatario correcto.
Por lo tanto, la invencion proporciona una solucion para mantener el orden de los mensajes que se refieren a una misma secuencia al tiempo que permite un procesamiento paralelo de diversas secuencias en un entorno distribuido. Ademas, el desacoplamiento de los manejadores de entrada y los de salida permite aislar la capacidad de proceso de los emisores con respecto a la capacidad de proceso de los destinatarios. Ademas, el numero de manejadores de entrada y manejadores de salida es muy escalable. Adicionalmente, la invencion evita crear una afinidad entre una secuencia y un manejador de entrada / salida, permitiendo de ese modo que cualquier manejador de entrada / salida maneje un mensaje de cualquier secuencia. Por lo tanto, la invencion ofrece una fuerte resiliencia, debido a que la interrupcion de algunos manejadores o manejadores de salida no afecta al procesamiento de los mensajes.
El metodo de acuerdo con la invencion tambien puede comprender una cualquiera de las siguientes caractensticas y etapas adicionales:
Por lo general, procesar un mensaje en un manejador de salida quiere decir que el manejador de salida envfa o entrega el mensaje a un destinatario.
De forma ventajosa, tras la complecion del procesamiento de un mensaje de una secuencia dada en un manejador de salida, se incrementa el rango de secuencia de dicha secuencia dada.
Preferiblemente, cuando se incrementa el rango de secuencia de una secuencia, el metodo comprende comprobar si el almacenamiento de desbordamiento comprende un mensaje con un rango de mensaje que es igual al rango de secuencia tal como se incrementa y, posteriormente, reenviar este mensaje al almacenamiento de puesta en cola.
De acuerdo con una realizacion ventajosa, si el mensaje entrante tal como se recibe no esta dotado de mdice alguno que indique el rango de mensaje dentro de la secuencia, entonces la etapa de determinar un rango de mensaje comprende asignar al mensaje entrante un rango de mensaje que indica el rango del mensaje entrante en su secuencia y almacenar el rango de mensaje asignado en el almacenamiento de secuencias.
Preferiblemente, el rango de mensaje asignado se corresponde con el rango del ultimo mensaje recibido en uno cualquiera de los manejadores de entrada para dicha secuencia mas un incremento. Por lo tanto, si el mensaje entrante es el primer mensaje para dicha secuencia, entonces el rango de mensaje es 1. Si el rango de mensaje del mensaje previo que se recibio en un manejador de entrada es N, entonces el rango de mensaje que se asigna al mensaje recien entrante es N + 1.
En otra realizacion ventajosa, el mensaje entrante tal como se recibe en el manejador de entrada esta dotado de un mdice que indica el rango de mensaje dentro de la secuencia.
Preferiblemente, si el rango de mensaje es mas grande que el rango de secuencia, entonces el estatus de la secuencia se ajusta a “pendiente”. Por lo tanto, “Pendiente” quiere decir que el area de almacenamiento de desbordamiento contiene al menos un mensaje para la secuencia dada, pero que este o estos mensajes tienen un rango de mensaje que no es igual al rango de secuencia.
Por lo general, el estatus de secuencia se ajusta a “esperando” cuando ninguno de los manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y cuando no se encuentra mensaje alguno para esa secuencia en el area de almacenamiento de desbordamiento. Por lo general, el estatus de secuencia se ajusta a “Procesando” cuando al menos uno de los manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia.
De forma ventajosa, si el almacenamiento de puesta en cola no comprende mensaje alguno para la secuencia del mensaje entrante y si el rango de mensaje del mensaje entrante es mas grande que el rango de secuencia que se indica en el almacenamiento de secuencias, entonces el mensaje entrante se almacena en el almacenamiento de desbordamiento hasta que el rango de secuencia se ha incrementado y es igual al rango de mensaje del mensaje
5
10
15
20
25
30
35
40
45
50
55
60
65
entrante.
Por lo tanto, si el mensaje fue dotado de un rango de mensaje por el originador del mensaje o un tercero, y si el rango de mensaje es mas grande que el rango de secuencia, entonces el mensaje se almacena en el almacenamiento de desbordamiento. Cuando se procesen otros mensajes que tienen un rango de mensaje mas bajo, entonces el rango de secuencia se incrementara hasta que la misma haya alcanzado el rango de mensaje del mensaje previamente almacenado. Este mensaje se puede liberar entonces del almacenamiento de secuencias y se puede enviar al almacenamiento de puesta en cola una vez que el almacenamiento de puesta en cola y los manejadores de entrada no estan almacenando y procesando un mensaje de esta secuencia.
Esto mismo es de aplicacion a los mensajes que no estan dotados de un rango de mensaje sino para los cuales un rango de mensaje fue asignado por el sistema de acuerdo con su orden de llegada.
De forma ventajosa, cuando un mensaje ha sido procesado con exito por un manejador de salida, el mismo se retira entonces del almacenamiento de puesta en cola.
De forma ventajosa, los manejadores de salida operan de forma asmcrona, permitiendo de ese modo que un manejador de salida envfe un mensaje y que entonces se encuentre disponible para otro procesamiento tras el envfo del mensaje y antes de recibir un acuse de recibo de respuesta de un destinatario del mensaje.
De acuerdo con una realizacion ventajosa, un manejador de salida comprende un proceso de entrega que envfa mensajes a destinatarios y un proceso de acuse de recibo que recibe un acuse de recibo de los destinatarios. El proceso de entrega y el acuse de recibo operan de forma independiente, permitiendo de ese modo que un proceso de entrega se encuentre disponible de forma inmediata tras el envfo de un mensaje.
De forma ventajosa, tras la recepcion del mensaje entrante y antes de la etapa de comprobacion, comprendiendo el metodo realizar una etapa de bloqueo de entrada en la que se evita que todos los manejadores de entrada reciban otro mensaje de dicha secuencia hasta que el mensaje entrante se ha almacenado en el almacenamiento de secuencias o se ha enviado al almacenamiento de puesta en cola.
De forma ventajosa, un mensaje entrante se puede aceptar en un manejador de entrada mientras que otro mensaje para la misma secuencia esta siendo o procesado por un manejador de salida. Los unicos casos limitados para los cuales es necesario que un mensaje entrante aguarde la liberacion del bloqueo son:
- otro mensaje entrante se esta almacenando en la capa de almacenamiento o se esta recibiendo en un manejador de entrada,
- la respuesta de un destinatario acerca de un mensaje de dicha secuencia esta siendo recibida y procesado por un manejador de salida. Cuando un manejador de salida recibe una respuesta, es decir, un acuse de recibo, de un destinatario, este bloquea la secuencia y el rango correspondiente, tiempo de buscar el siguiente mensaje a enviar en dicha secuencia si es que lo hay y de incrementar el rango.
Preferiblemente, la etapa de bloqueo de entrada comprende bloquear una exclusion mutua dedicada a dicha secuencia, almacenandose dicha exclusion mutua en el almacenamiento de secuencias.
Preferiblemente, antes de recibir un mensaje entrante, el manejador de entrada comprueba el valor de correlacion de secuencia de la secuencia de dicho mensaje entrante y lee el parametro de exclusion mutua para dicha secuencia. El manejador de entrada acepta el mensaje entrante si la exclusion mutua no esta bloqueada. Si la exclusion mutua esta bloqueada, el mensaje entrante espera la liberacion de la exclusion mutua.
Mas precisamente, la exclusion mutua se almacena en un registro de secuencias que esta comprendido en el almacenamiento de secuencias.
De forma ventajosa, hay solo una exclusion mutua por secuencia y para los manejadores de entrada y los de salida. La cola de almacenamiento asegura que, para una secuencia dada, solo se propaga un mensaje a un manejador de salida hasta que la capa de manejadores de salida ha completado el procesamiento del mensaje para esa secuencia.
Preferiblemente, la etapa de bloqueo de salida comprende bloquear una exclusion mutua dedicada a dicha secuencia, almacenandose dicha exclusion mutua en el almacenamiento de secuencias.
De forma ventajosa, cuando se encuentra disponible un manejador de salida, este comprueba en el almacenamiento de puesta en cola si se encuentra disponible un mensaje para su procesamiento, entonces el mismo recupera dicho mensaje y lo procesa.
Preferiblemente, cuando se encuentra disponible un manejador de salida, este comprueba en el almacenamiento de puesta en cola 850 si hay un mensaje disponible que procesar. Si hay un mensaje, entonces este mensaje es, de
5
10
15
20
25
30
35
40
45
50
55
60
65
forma automatica, el mensaje correcto a procesar para dicha secuencia dada.
En una realizacion, tras el almacenamiento del mensaje entrante en el almacenamiento de secuencias, el manejador de entrada env^a un mensaje de acuse de recibo.
Por lo general, el mensaje de acuse de recibo se envfa a un originador del mensaje.
De forma ventajosa, un mensaje que tiene un rango de mensaje mas grande que el rango de secuencia se
almacena en el almacenamiento de desbordamiento para bloquear la secuencia de mensajes en el almacenamiento de desbordamiento, siempre que su rango de mensaje no este coincidiendo con el rango de secuencia, es decir, el rango del siguiente mensaje a procesar.
Preferiblemente, un mensaje que tiene un rango de mensaje mas grande que el rango de secuencia se almacena en primer lugar en el almacenamiento de desbordamiento y se descarta entonces del almacenamiento de desbordamiento despues de que se haya alcanzado un valor de expiracion que esta asignado a la secuencia del
mensaje. Como alternativa o ademas, un mensaje que tiene un rango de mensaje mas grande que el rango de
secuencia se almacena en primer lugar en el almacenamiento de desbordamiento y se descarta entonces del almacenamiento de desbordamiento despues de que se haya alcanzado un valor de expiracion que esta asignado al mensaje.
En otra realizacion, la invencion se refiere a un soporte informatico de lectura no transitorio con las caractensticas de la reivindicacion 13 que contiene unas instrucciones de programa de soporte logico, en el que la ejecucion de las instrucciones de programa de soporte logico por al menos un procesador de datos da como resultado la realizacion de operaciones que comprenden la ejecucion del metodo de acuerdo con la invencion.
En otra realizacion, la invencion se refiere a un sistema de procesamiento distribuido y paralelo con las caractensticas de la reivindicacion 14 para secuenciar mensajes asmcronos, que comprende:
- una pluralidad de manejadores de entrada, que comprende al menos un procesador de datos, estando configurado cada uno de la pluralidad de manejadores de entrada para recibir, de forma independiente, una pluralidad de mensajes entrantes que se refieren a varias secuencias;
- una pluralidad de manejadores de salida, que comprende al menos un procesador de datos, estando configurado cada uno de la pluralidad de manejadores de salida para procesar y reenviar, de forma independiente, la pluralidad de mensajes entrantes; y
- una capa de almacenamiento que comprende al menos una memoria y que comprende:
• una cola de almacenamiento para almacenar mensajes entrantes listos para ser transmitidos a la pluralidad de manejadores de salida;
• un almacenamiento de secuencias que comprende: un contexto de estatus de secuencia (802) para mantener y actualizar un estatus de secuencias de los mensajes entrantes; y un almacenamiento de desbordamiento que esta configurado para recibir los mensajes de los manejadores de entrada y para reenviar los mismos de forma secuencial al almacenamiento de puesta en cola,
estando tambien configurado el sistema para determinar si un mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en la secuencia de este mensaje y para realizar las siguientes etapas que se realizan con al menos un procesador de datos;
si el estatus de secuencia indica que ninguno de los manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y si se determina que el mensaje entrante es el siguiente mensaje a procesar para dicha secuencia, reenviar entonces el mensaje entrante al almacenamiento de puesta en cola y, posteriormente, reenviar el mismo a un manejador de salida disponible para su procesamiento;
si el estatus de secuencia indica que al menos uno de los manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si el almacenamiento de puesta en cola ya comprende un mensaje a procesar para dicha secuencia; o si se determina que el mensaje entrante no es el siguiente mensaje a procesar para dicha secuencia, almacenar entonces el mensaje entrante en el almacenamiento de desbordamiento para conservarlo para su procesamiento adicional.
De acuerdo con una realizacion opcional, la cola de almacenamiento y el almacenamiento de secuencias de la capa de almacenamiento se implementan en unos datos en memoria o en un almacenamiento basado en archivos. Como alternativa, la cola de almacenamiento y el almacenamiento de secuencias de la capa de almacenamiento se implementan en una base de datos de almacenamiento de cliente - servidor.
Preferiblemente, comprobar el estatus de secuencia comprende recuperar el estatus de una secuencia sobre la base del valor de correlacion de secuencia de dicha secuencia.
En otra realizacion, la invencion se refiere a un metodo implementado por ordenador de supervision de viajes para
5
10
15
20
25
30
35
40
45
50
55
60
65
procesar mensajes asmcronos entre al menos una aplicacion de servidor y al menos una aplicacion de cliente en un entorno paralelo que tiene una pluralidad de manejadores de entrada y una pluralidad de manejadores de salida, comprendiendo el metodo las siguientes etapas que se realizan con al menos un procesador de datos:
- recibir en un manejador de entrada un mensaje entrante con un valor de correlacion de secuencia que identifica una secuencia que comprende el mensaje entrante,
- comprobar un estatus de secuencia de dicha secuencia en un almacenamiento de secuencias;
- determinar si el mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia;
si el estatus de secuencia indica que ninguno de los manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y si se determina que el mensaje entrante es el siguiente mensaje a procesar para dicha secuencia, reenviar entonces el mensaje entrante a un almacenamiento de puesta en cola y, posteriormente, reenviar el mismo a un manejador de salida disponible para su procesamiento; si el estatus de secuencia indica que al menos uno de los manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si el almacenamiento de puesta en cola ya comprende un mensaje a procesar para dicha secuencia; o si se determina que el mensaje entrante no es el siguiente mensaje a procesar para dicha secuencia, almacenar entonces el mensaje entrante en un almacenamiento de desbordamiento para conservarlo para su procesamiento adicional,
en el que los mensajes comprenden datos en relacion con los pasajeros y el valor de correlacion de secuencia contiene datos en relacion con referencias de un servicio de transporte.
El metodo de acuerdo con la invencion tambien puede comprender una cualquiera de las siguientes caractensticas y etapas adicionales.
Una vez que se han procesado, los mensajes se reenvfan desde los manejadores de salida a al menos uno de: una reservacion de viajes y un sistema de reservas, un sistema de inventario de una lmea aerea, un sistema de billetes electronicos de una lmea aerea, un sistema de control de salidas de un aeropuerto, el sistema operativo de un aeropuerto, el sistema operativo de una lmea aerea, el sistema operativo de una empresa de atencion en tierra.
En una realizacion, las referencias de un servicio de transporte comprenden al menos uno de los siguientes: un numero de vuelo, una fecha y una reservacion de clase.
En una realizacion, los mensajes son indicativos de uno cualquiera de: pasajeros que embarcan, pasajeros cancelados, pasajeros anadidos.
En una realizacion, se proporciona un valor de expiracion de secuencia para cada mensaje entrante con el fin de retirar el mensaje entrante que esta almacenado en el almacenamiento de desbordamiento despues de que se haya alcanzado un valor de expiracion de secuencia, siendo desencadenado el valor de expiracion de secuencia por el tiempo de salida de un vuelo o siendo una cualquiera de: una expiracion de una oferta de vuelo o una expiracion de una promocion.
En otra realizacion, la invencion se refiere a un soporte informatico de lectura no transitorio que contiene unas instrucciones de programa de soporte logico, en el que la ejecucion de las instrucciones de programa de soporte logico por al menos un procesador de datos da como resultado la realizacion de operaciones que comprenden la ejecucion del metodo anterior de acuerdo con la invencion.
En aun otra realizacion, la invencion se refiere a un metodo implementado por ordenador de secuenciacion de mensajes asmcronos distribuidos en un sistema distribuido y paralelo que tiene una pluralidad de manejadores de entrada y una pluralidad de manejadores de salida que comprenden al menos un procesador para procesar los mensajes, comprendiendo el metodo las siguientes etapas que se realizan con al menos un procesador de datos:
- recibir en un manejador de entrada un mensaje entrante con un valor de correlacion de secuencia que identifica una secuencia que comprende el mensaje entrante y que determina un rango de mensaje que indica el orden del mensaje entrante en dicha secuencia;
- comprobar de un estatus de secuencia de dicha secuencia en un almacenamiento de secuencias;
si el estatus de secuencia indica que ninguno de los manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y:
si el mensaje entrante tal como se recibe no esta dotado de mdice alguno que indique el rango de mensaje dentro de la secuencia y el almacenamiento de secuencias no comprende ya mensaje alguno a procesar para dicha secuencia, o
si el mensaje entrante tal como se recibe esta dotado de un mdice que indica el rango de mensaje dentro de la secuencia, siendo dicho rango de mensaje igual a un rango de secuencia que se indica en el almacenamiento de secuencias y que define el rango del siguiente mensaje a procesar para dicha secuencia,
5
10
15
20
25
30
35
40
45
50
55
60
65
reenviar entonces el mensaje entrante a un almacenamiento de puesta en cola y, posteriormente, reenviar el mismo a un manejador de salida disponible para su procesamiento;
si el estatus de secuencia indica que al menos uno de los manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si el almacenamiento de puesta en cola ya comprende un mensaje a procesar para dicha secuencia; o si el mensaje entrante tal como se recibe esta dotado de un mdice que indica el rango de mensaje dentro de la secuencia, siendo dicho rango de mensaje mas grande que un rango de secuencia que se indica en el almacenamiento de secuencias y que define el rango del siguiente mensaje a procesar para dicha secuencia, almacenar entonces el mensaje entrante en un almacenamiento de desbordamiento para conservarlo para su procesamiento adicional.
Breve descripcion de los dibujos
Los anteriores y otros aspectos de las realizaciones de la presente invencion se hacen mas evidentes en la siguiente Descripcion detallada, cuando se lea junto con las figuras adjuntas, en las que:
La figura 1A es un diagrama de flujo a modo de ejemplo que muestra un procesamiento cronologico de unas llamadas o mensajes smcronos entre un sistema que llama y un sistema remoto.
La figura 2 es un diagrama de flujo a modo de ejemplo que muestra un procesamiento cronologico de llamadas o mensajes asmcronos entre un sistema que llama y un sistema remoto.
La figura 3 es un diagrama de flujo a modo de ejemplo que muestra un procesamiento paralelo de llamadas o mensajes en un sistema de proceso distribuido.
La figura 4 es un diagrama de flujo a modo de ejemplo que muestra un procesamiento paralelo de llamadas o mensajes asmcronos en un sistema de proceso distribuido, lo que da como resultado un riesgo de desordenacion del procesamiento de mensajes y datos corrompidos.
La figura 5 muestra un diagrama de bloques a modo de ejemplo de una gestion de secuencias de alto nivel en un contexto de secuencia centralizado y compartido de acuerdo con la presente invencion.
La figura 6 es un diagrama de flujo a modo de ejemplo del proceso para identificar secuencias dentro de un canal de transmision y de procesamiento de acuerdo con la presente invencion.
La figura 7 muestra un ejemplo de un sistema de procesamiento asmcrono y distribuido de acuerdo con la presente invencion.
La figura 8A es una etapa a modo de ejemplo de un proceso de secuenciacion en el que un manejador de entrada recibe un primer mensaje en la secuencia A de acuerdo con la presente invencion.
La figura 8B es otra etapa a modo de ejemplo de un proceso de secuenciacion en el que un manejador de entrada recibe un segundo mensaje en la secuencia A de acuerdo con la presente invencion.
La figura 8C es otra etapa a modo de ejemplo de un proceso de secuenciacion en el que un manejador de salida procesa un primer mensaje en la secuencia A de acuerdo con la presente invencion.
La figura 8D es otra etapa a modo de ejemplo de un proceso de secuenciacion en el que un manejador de salida ha procesado un primer mensaje en la secuencia A de acuerdo con la presente invencion.
La figura 8E es una etapa a modo de ejemplo de un proceso de secuenciacion en el que una secuencia se redispone de acuerdo con la presente invencion.
Descripcion detallada
A pesar de que la siguiente descripcion se da en el contexto de una aplicacion al sector industrial de los viajes, esta no representa un ejemplo limitante debido a que la presente invencion es aplicable a todos los tipos de procesamiento de datos asf como productos de viajes tales como habitaciones de hotel, alquiler de coches, billetes de tren o similares.
De acuerdo con la presente invencion, el orden de procesamiento de un mensaje es definido en un entorno asmcrono y paralelo por el emisor del mensaje o el sistema que llama, o bien de forma explfcita mediante la provision de un mdice que indica el rango de cada mensaje dentro de la secuencia, o bien de forma implfcita al entregar mensajes de forma secuencial y esperar un acuse de recibo de transporte de un mensaje dado antes de enviar el siguiente mensaje en la secuencia dada.
La presente invencion tiene como objetivo asegurar que procesos concurrentes e independientes respetan el orden de secuenciacion para procesar un conjunto dado de mensajes que se definen como una secuencia.
A ese respecto, el metodo, aparato y sistema para secuenciar mensajes asmcronos distribuidos de acuerdo con la presente invencion realizan diversas acciones que se van a explicar brevemente en lo sucesivo y que se detallaran mas adelante con detalles adicionales con referencia a los dibujos.
Cada mensaje o llamada de servicio que pertenece a una secuencia dada es etiquetado, mediante una definicion de interfaz, para realmente hacer referencia a la secuencia espedfica a la que pertenece el mismo.
El rango de un mensaje o llamada de servicio dentro de una secuencia de mensajes se proporciona:
5
10
15
20
25
30
35
40
45
50
55
60
65
• o bien de forma expUcita por el emisor/remitente de los mensajes o llamadas de servicio, a traves de una interfaz adecuada. Por ejemplo, el mensaje comprende un campo que incluye un mdice que define el rango del mensaje dentro de su secuencia
• o bien de forma implfcita mediante el uso del orden secuencial en el que los mensajes o llamadas de servicio en la secuencia se reciben con el tiempo.
Una vez que se han identificado la secuencia y el rango de mensaje o el orden de las llamadas de servicio, la secuencia se ha de gestionar de forma apropiada.
La figura 5 muestra un diagrama de bloques a modo de ejemplo de una gestion de secuencias de alto nivel en un contexto de secuencia centralizado y compartido. En esta figura, las caractensticas principales del sistema y las etapas principales se muestran con detalle.
El sistema de procesamiento asmcrono y distribuido comprende un manejador de entrada 510 que recibe unos mensajes entrantes 501, un manejador de salida 530 que esta configurado para procesar mensajes y entregar los mismos. El sistema tambien comprende un area de almacenamiento de desbordamiento 540 que posiblemente almacena los mensajes que se reciben de los manejadores de entrada si el procesamiento del mensaje 501 se ha de retener para mantener el orden de la secuencia a la que pertenece el mensaje.
Tambien se puede hacer referencia al manejador de entrada como un responsable de aceptacion o un proceso responsable de aceptacion. Por lo tanto, tambien se puede hacer referencia a la capa de manejadores de entrada como una capa responsable de aceptacion.
Tambien se puede hacer referencia al manejador de salida como un procesador o un proceso de entrega. Por lo tanto, tambien se puede hacer referencia a la capa de manejadores de entrada como una capa de entrega.
En particular, el manejador de entrada 510 esta configurado para realizar uno cualquiera de: recibir mensajes de emisores tales como publicadores; validar la integridad de los mensajes; realizar el bloqueo de secuencia y la validacion de estatus; almacenar el mensaje en una de las dos areas, (es decir, la cola de almacenamiento o el area de desbordamiento); responder al emisor.
De acuerdo con una realizacion ventajosa, los manejadores de salida 530 estan compuestos por dos procesos. Un primer proceso, al que se hace referencia como el proceso de entrega 531 y que esta configurado para realizar uno cualquiera de: obtener un mensaje a partir de una cola de almacenamiento; enviar el mismo al destinatario por medio del canal de comunicacion; salir para encontrarse disponible para otros procesos.
Un segundo proceso, al que se hace referencia como el proceso de acuse de recibo 532 y que esta configurado para: recibir, del destinatario, un acuse de recibo; realizar la gestion de secuencias en lo que respecta a poner el siguiente mensaje en la secuencia correspondiente, de haber alguno, en la cola de almacenamiento; salir para encontrarse disponible para otros procesos.
Por lo tanto, la capa de entrega que esta formada por los manejadores de salida 532 es asmcrona, lo que permite cumplir con el requisito de alta escalabilidad. De esta forma, el sistema es independiente de la latencia del destinatario. Mas precisamente, esto quiere decir que un manejador de salida puede recuperar y entregar un mensaje de una primera secuencia y, entonces, puede recuperar y entregar otro mensaje de una segunda secuencia antes de que el mismo reciba un acuse de recibo para la entrega del mensaje para la primera secuencia. Por lo tanto, un manejador de salida puede manejar, de forma asmcrona, mensajes a partir de muchas secuencias, aumentando de ese modo el numero de mensajes que puede encaminar el sistema al tiempo que se mantiene siempre el orden correcto para cada secuencia.
De acuerdo con la presente invencion, se implementa un contexto de secuencia central y compartido, en el que se usa una maquina de estados para cada secuencia. Siempre que se recibe un mensaje entrante 501 en un manejador de entrada 510, se comprueba un estatus de contexto de secuencia correspondiente 520. De acuerdo con una realizacion, si no existe el contexto de secuencia correspondiente, este se crea de forma dinamica y transparente. Por lo tanto, la invencion no requiere que se definan secuencias por adelantado en el sistema, sino que es plenamente dinamica a este respecto. Ademas, si el mensaje no se ha dotado de un mdice que indique su rango dentro de la secuencia, entonces se asigna un rango de mensaje al mensaje de acuerdo con el orden de llegada del mensaje.
• Si el estatus de secuencia indica que la capa de manejadores de salida esta esperando el siguiente mensaje de la secuencia, es decir, el estatus de secuencia es “Esperando”: entonces el mensaje entrante 501 se procesa 522 normalmente de acuerdo con el comportamiento convencional por un manejador de salida 530 (el mensaje se encontrara disponible para el procesamiento asmcrono); o
• si el estatus de secuencia indica que un mensaje de la secuencia ya se esta procesando en la actualidad, es decir, el estatus de secuencia es “Procesando”: entonces el mensaje entrante 501 se almacena en un area de almacenamiento de desbordamiento de secuencia 540 espedfica con el fin de procesarse mas adelante 524. El
5
10
15
20
25
30
35
40
45
50
55
60
65
area de almacenamiento de desbordamiento 540 se estructura / se indexa de una forma tal que no se pierde el orden del mensaje entrante. De esta forma, el mensaje entrante 501 se conserva para su procesamiento adicional y este no se encuentra disponible para su procesamiento inmediato (como fuera de secuencia).
La capa de manejadores de salida recibe los mensajes a procesar de acuerdo con el comportamiento convencional, en el que los mensajes se encuentran, de facto, en el rango de secuencia correcta.
Una vez que se ha procesado un mensaje 501, la capa de manejadores de salida busca el siguiente mensaje a procesar en la secuencia en el area de almacenamiento de desbordamiento 540. Si se halla un mensaje de ese tipo, este se inserta en la capa de manejadores de salida, de acuerdo con el proceso convencional. Si no se halla mensaje alguno, entonces el estatus de secuencia se ajusta a de vuelta a “Esperando”.
Se mantiene el orden de cada mensaje dentro de la secuencia. El almacenamiento de secuencias define un rango de secuencia que indica el rango del siguiente mensaje que se ha de procesar para conservar el orden del mensaje de una secuencia. El rango de secuencia se actualiza de forma incremental cada vez que se ha completado el procesamiento de un mensaje. Por lo tanto, el rango de secuencia se puede ver como un contador.
Cualquier mensaje entrante que no coincida con el rango de secuencia, es decir, el rango del siguiente mensaje a procesar, se almacena en el area de almacenamiento de desbordamiento 540, hasta que el mensaje correcto a procesar ha sido recibido por el manejador de entrada 510. Esto quiere decir que las operaciones de insercion / retirada en el area de almacenamiento de desbordamiento 540 se realizan teniendo en cuenta el rango de la secuencia y el rango de cada mensaje.
Cuando se almacenan mensajes en el area de almacenamiento de desbordamiento 540 a la espera de su turno para ser procesados en la secuencia, puede ocurrir que la secuencia nunca sea desbloqueada por el siguiente mensaje en secuencia. A pesar de que esta situacion no ocurre muy a menudo, la presente invencion proporciona una forma dinamica de dejar un indicador en el contexto de la secuencia, para adoptar medidas sobre una secuencia cuando la misma se considera expirada, tal como descartar el mensaje expirado o la secuencia expirada.
Algunos Soportes Logicos Intermedios Orientados a Mensajes, a los que se hace referencia como MOM (Message Oriented Middleware), proporcionan una caractenstica de secuenciacion al evitar el uso de paralelismo (es decir, estos exigen solo un consumidor de retirada de la cola). Por lo tanto, los mismos proporcionan una garantfa de secuencia a costa de la escalabilidad. La Puesta en Cola Avanzada de Oracle® es un ejemplo tfpico.
Algunos otros MOM (por ejemplo, la Serie MQ) proporcionan, de hecho, una caractenstica de secuenciacion sobre la base de un correlador, pero los mismos requieren que los mensajes de la secuencia se procesen como si los mismos estuvieran logicamente agrupados entre sr Ademas, el tamano del grupo ha de ser limitado y el MOM puede requerir restricciones adicionales sobre el proceso de retirada de la cola.
El procesamiento distribuido y paralelo de acuerdo con la presente invencion proporciona una secuenciacion estricta al tiempo que se mantiene el paralelismo y la escalabilidad, y sin requerir restricciones particulares en la forma en la que los mensajes o las llamadas de servicio se correlacionan, o se procesan por parte del proceso de retirada de la cola. La alta escalabilidad y resiliencia del metodo, aparato y sistema de la presente invencion posibilita:
• implementar un proceso de entrega plenamente desincronizado usando los principios de “publicar y salir” en los que el mensaje se publica y el proceso no espera un acuse de recibo, estando otro proceso (el proceso de acuse de recibo) a cargo de recibir el acuse de recibo, que permiten hacer frente a una capacidad de proceso de mensajes muy alta; y
• implementar un proceso plenamente distribuido y eliminar toda afinidad entre las secuencias y los manejadores de entrada / salida, permitiendo de ese modo que cualquier manejador de entrada / salida maneje un mensaje de cualquier secuencia.
El enfoque trivial para hacer frente a la secuenciacion de mensajes puede ser revertir a una arquitectura monoproceso, la cual plantea unas restricciones enormes y a veces inaceptables en terminos de resiliencia y escalabilidad. Por el contrario, la presente invencion permite el pleno beneficio de un procesamiento distribuido y paralelo en dos niveles, el nivel de los manejadores de entrada y el nivel de los manejadores de salida, al tiempo que se asegura la secuenciacion debido a que la cardinalidad de las secuencias es alta. Esto quiere decir que la invencion aprovecha al maximo la paralelizacion del procesamiento de secuencias solo si el sistema ha de hacer frente a un alto numero de secuencias en paralelo.
No hay prerrequisito alguno sobre el area de almacenamiento y el proceso de retirada de la cola en lo que respecta al mantenimiento de secuencias:
• no es necesario que el proceso de puesta en cola de aceptacion de mensajes en la capa de manejadores de entrada y el proceso de puesta en cola del procesamiento de mensajes en la capa de manejadores de salida soporten la conservacion de secuencias debido a que esto sera posible de acuerdo con la invencion;
5
10
15
20
25
30
35
40
45
50
55
60
65
• el almacenamiento paralelo y la recuperacion paralela de mensajes (es decir, la puesta en cola / retirada de la cola) se conserva plenamente;
• de acuerdo con una realizacion no limitante, la propia cola de almacenamiento puede ser local al nodo, mientras que el area de almacenamiento de desbordamiento sigue siendo global, es decir, es compartida por todos los manejadores de salida. Es necesario que el almacenamiento de desbordamiento se comparta debido a que cualquiera de los nodos puede procesar una secuencia dada, por lo tanto, los mismos debenan de tener acceso a la unica area de desbordamiento para realmente poner en la cola y retirar de la cola en este almacenamiento. En el caso en el que una cola de almacenamiento no es compartida por todos los manejadores de salida, la misma puede estar dedicada o bien a un unico manejador de salida o bien a una pluralidad de manejadores de salida. En estos casos en los que el almacenamiento de puesta en cola no es compartido por todos los manejadores de salida, cada mensaje es recibido por solo un almacenamiento de puesta en cola local.
• El almacenamiento de los mensajes rechazados es mas sencillo, debido a que no hay necesidad alguna de una cola de excepciones debido a que el mensaje puede permanecer en el area de desbordamiento con un estatus alterado.
De acuerdo con el metodo, aparato y sistema de la presente invencion, la secuencia de mensajes se procesa en un modo distribuido y paralelo mediante la realizacion de la identificacion de la secuencia y la identificacion del rango de mensaje en la secuencia. Ademas de la identificacion, la secuencia se ha de gestionar y de redisponer, incluyendo los bloqueos de secuencia y las expiraciones. Estos aspectos se detallan en lo sucesivo con mas detalles.
Identificacion de la secuencia
En un flujo de mensajes o eventos que comparten un canal de transmision dado, cada conjunto de mensajes correlacionados, en el sentido de la secuencia a respetar, requiere ser definido de forma explfcita, la figura 6. Esta figura muestra un diagrama de flujo a modo de ejemplo del proceso para identificar secuencias dentro de un canal de transmision y de procesamiento 620 entre un sistema emisor 610 y un sistema de proceso 630.
Se proporciona un parametro dedicado a cada primitiva de mensajena que esta involucrada en una transmision dada. Este parametro dedicado es un identificador de secuencia al que tambien se hace referencia como valor de correlacion de secuencia. Por lo general, este es un valor alfanumerico que es establecido por el sistema emisor del mensaje. Este parametro es usado por cada componente involucrado para identificar en la practica los mensajes que pertenecen a la misma secuencia. Por ejemplo, los mensajes 1a 4 se analizan en el canal de transmision 620 y se identifican como los mensajes n.° 1, ... , n.° 4. A pesar de que estos mensajes correlacionados y ordenados estan compartiendo el mismo canal de transmision 620, los mismos no van uno siguiendo a otro de forma consecutiva. Estos estan entrelazados en el canal de transmision 620 con mensajes que pertenecen a otra secuencia.
El parametro de correlacion de secuencias se define de una forma que asegure que el mismo no es compartido por distintos procesos en conflicto en una cadena de transmision y de procesamiento dada. En este contexto, es obligatorio tener una estricta singularidad. Preferiblemente, esta definicion del parametro de correlacion de secuencias es responsabilidad del proceso de negocio que usa el sistema.
Identificacion del rango de mensaje en la secuencia
Los mensajes que requieren ser procesados en un orden espedfico se pueden categorizar en dos tipos:
• el primer tipo de mensajes para los cuales el orden o rango dentro de la secuencia es conocido en el momento de la creacion del mensaje y, preferiblemente, para los cuales el numero total de mensajes tambien es conocido en el momento de la creacion del mensaje; en el que el proceso de generacion es capaz de asignar, a cada mensaje, un numero de rango de secuencia espedfico en la primitiva de la transmision. Este numero de rango de secuencia es transportado y almacenado entonces por cada proceso como parte de una cadena global hasta que se realiza el procesamiento final; y
• el segundo tipo de mensajes para los cuales la ordenacion dentro de la secuencia se determina en el momento de la generacion. En general, el procesamiento de este segundo tipo de mensajes es incremental, lo que quiere decir que cada nuevo mensaje (o evento) en el proceso altera los resultados del proceso del mensaje previo en la secuencia. A ese respecto, el sistema emisor de un mensaje no conoce ni el numero de rango de secuencia de un mensaje en una secuencia dada, ni el numero total de mensajes dentro de una secuencia.
Por razones de concision, en la presente descripcion, se hace referencia al numero de rango de secuencia de un
mensaje en una secuencia dada como el rango de mensaje.
Gestion de secuencias centrales
Tal como se ilustra en la figura 7, un ejemplo de un sistema de procesamiento asmcrono y distribuido comprende:
• una pluralidad de manejadores de entrada 710, 720, ... , 740 que forma una capa de manejadores de entrada. Los manejadores de entrada reciben unos mensajes entrantes 711, 721, 731 y 741, almacenan los mismos, de
5
10
15
20
25
30
35
40
45
50
55
60
65
forma respectiva, en una cola de almacenamiento 750 y posiblemente dan acuse de recibo de una buena recepcion de estos mensajes entrantes 711, 721, 731 y 741 al sistema emisor;
• una pluralidad de manejadores de Salida 760, 770, ... , 790 que forma una capa de manejadores de salida. Cada manejador de salida esta configurado para recuperar mensajes de la cola de almacenamiento 750 y para procesar los mismos. Los manejadores de salida tambien estan a cargo de reenviar los mensajes procesados a las aplicaciones.
Tambien se puede hacer referencia a los manejadores de entrada como responsables de aceptacion o procesos responsables de aceptacion. Tambien se puede hacer referencia a los manejadores de salida como procesadores o procesos de entrega.
La figura 8A muestra una mejora de la realizacion de la figura 7 que ilustra unas etapas a modo de ejemplo de un proceso de secuenciacion de un primer mensaje de la secuencia A que es recibida por un manejador de entrada a partir del sistema emisor. En esta mejora, un componente adicional, al que se hace referencia como almacenamiento de secuencias 800, se implementa como parte de la capa de almacenamiento entre una pluralidad de manejadores de entrada de entrada 810, 820, ... , 840 y una pluralidad de manejadores de salida 860, 870, ... , 890. El almacenamiento de secuencias 800 comprende:
• una Exclusion Mutua de secuencias centralizada o comun o compartida 804, a la que tambien se hace referencia como Exclusion Mutua para asegurar que solo un manejador esta manejando un mensaje para una secuencia dada (o con el mismo valor de correlacion de secuencia) de cada vez; cualquier intento paralelo sera atendido segun el modelo de primero en llegar, primero en ser atendido.
• Un contexto de estatus de secuencia centralizado o comun o compartido 802, al que tambien se hace referencia como Estatus, para mantener un estatus de secuencia compartido entre todos los procesos; siendo identificada una secuencia, de forma singular, por su valor de correlacion de secuencia. El Estatus tambien posibilita determinar, para cada evento en una secuencia dada, el comportamiento a aplicar:
◦ estatus “esperando”, lo que quiere decir que el siguiente mensaje entrante se puede poner en cola para su entrega;
◦ estatus “entregando”, lo que quiere decir que se retiene el siguiente mensaje entrante.
• un almacenamiento de Desbordamiento centralizado o comun o compartido 806, al que tambien se hace referencia como area de Desbordamiento o de almacenamiento de Desbordamiento para asegurar que la pluralidad de manejadores de salida solo puedan acceder al siguiente mensaje a ser procesado por los mismos, encontrandose otros “pendientes” en este almacenamiento de Desbordamiento. El almacenamiento de Desbordamiento es un almacenamiento para mensajes secuenciados, indexados y ordenados, que no estan listos para ser entregados en lo que respecta al estatus de secuencia actual.
Estos tres componentes, el Estatus 802, la Exclusion Mutua 804 y el almacenamiento de Desbordamiento 806, que son una informacion de procesamiento contextual, son de la misma naturaleza que la cola de almacenamiento 850. Los mismos se pueden implementar:
- en un almacenamiento basado en archivos o datos de memoria, si todos los procesos distribuidos se ejecutan en el mismo nodo, o
- en una base o bases de datos de almacenamiento de cliente - servidor, si los procesos distribuidos se ejecutan en varios nodos en los que el sistema de servidor es un sistema remoto.
La maxima consistencia entre la capa de almacenamiento y el almacenamiento de mensajes convencional se puede obtener mediante la implementacion de ambos en un motor de RDBMS comun que comparte una unica transaccion.
De acuerdo con el metodo, aparato y sistema de la presente invencion:
• la cola de almacenamiento 850 permite el intercambio de mensajes entre la pluralidad de manejadores de entrada y la pluralidad de manejadores de salida, y opera independientemente del almacenamiento de secuencias 800; y
• el almacenamiento de desbordamiento 806 del almacenamiento de secuencias 800 asegura la secuenciacion del intercambio de mensajes entre la pluralidad de manejadores de entrada 810, 820, ... , 840 y una pluralidad de manejadores de salida 860, 870, ... , 890.
La figura 8A ilustra el proceso de secuenciacion de un mensaje entrante de la presente invencion:
• un mensaje 801-1 que pertenece a un valor de correlacion de secuencia “A” es recibido por un manejador de entrada 810;
• el manejador de entrada 810 bloquea 812 la exclusion mutua 804 de la secuencia “A”, evitando que cualquier manejador de entrada o manejador de salida maneje otro mensaje con el valor de correlacion de secuencia “A”;
• el manejador de entrada 810 comprueba 814 el contexto de estatus central 802 de la secuencia “A”: en el que o
5
10
15
20
25
30
35
40
45
50
55
60
65
bien la secuencia no existe o bien la secuencia se encuentra en el estatus “Esperando”;
• el manejador de entrada 810 ajusta 814 el contexto de estatus 802 de la secuencia “A” a “Procesando”. La invencion asigna al mensaje entrante un rango de mensaje que es igual al rango del mensaje previamente recibido mas un incremento. Debido a que el mensaje entrante es el primero para esta secuencia, el rango de mensaje que se asigna al mensaje se ajusta a 1. Preferiblemente, el rango de mensaje se almacena en el almacenamiento de secuencias 800 y mas precisamente en el contexto de secuencia 802. Preferiblemente, el manejador de entrada 810 almacena 816 el mensaje 851 en la cola de almacenamiento 850; y
• el manejador de entrada 810 da acuse de recibo al emisor de mensajes, libera la exclusion mutua 804 de la secuencia “A” y esta listo para recibir cualquier otro mensaje entrante.
La figura 8B ilustra las siguientes etapas del proceso de secuenciacion en el que se recibe otro mensaje entrante en el sistema:
• un segundo mensaje, 801-2 que pertenece a la secuencia “A” es recibido por un manejador de entrada 820;
• el manejador de entrada 820 bloquea 822 la exclusion mutua 804 de la secuencia “A” evitando que cualquier manejador de entrada 810, 830 u 840 o manejador de salida maneje otro mensaje dentro de la secuencia “A”
• el manejador de entrada 820 comprueba 824 el contexto de estatus central 802 de la secuencia “A” en donde el estatus de secuencia es “Procesando”. Debido a que el mensaje no se puede facilitar a manejador de salida alguno, el manejador de entrada 820 almacena 826 el mensaje 807 en el almacenamiento de desbordamiento 806. Un rango de mensaje que se corresponde con el rango de mensaje del mensaje previamente entrante mas un incremento se asigna al mensaje entrante. Debido a que el rango de mensaje del mensaje previo era 1, por lo tanto, el rango de mensaje que se asigna al mensaje entrante es 2. Ademas, la invencion incrementa un rango de secuencia que define el rango del siguiente mensaje a procesar para esa secuencia. Por lo tanto, en el caso en el que una pluralidad de mensajes a partir de la misma secuencia se almacenan en el almacen de secuencias (800), sus rangos de mensaje permiten que el sistema identifique el mensaje correcto que se ha de reenviar al almacenamiento de puesta en cola (850). El mensaje correcto es el que tiene un rango de mensaje que se corresponde con el rango de secuencia tal como se define en la secuencia. De forma ventajosa, esto es de aplicacion cuando el mensaje entrante tiene un rango de mensaje que fue asignado por el emisor y cuando el rango del mensaje entrante se asigna de acuerdo con su orden de llegada en los manejadores de entrada.
• El manejador de entrada 820 da acuse de recibo al emisor de mensajes, libera la exclusion mutua de la secuencia “A” y esta listo para recibir cualquier otro mensaje entrante;
La figura 8C ilustra las siguientes etapas del proceso de secuenciacion en el que el mensaje almacenado en la cola de almacenamiento se retira de la cola a uno de los manejadores de salida para su procesamiento:
• uno de los manejadores de salida 870 recupera 871 el mensaje 851 de la secuencia “A” a partir del almacenamiento de puesta en cola 850. Gracias a la invencion, este mensaje es, de forma automatica, el siguiente mensaje de la secuencia que se ha de procesar. Por lo tanto, su rango es el rango del ultimo mensaje que se ha procesado mas un incremento. En la presente realizacion a modo de ejemplo, debido a que el mensaje almacenado en la cola de almacenamiento es el primero de la secuencia A, entonces su rango es necesariamente “1”;
• el manejador de salida 870 entrega 873 el mensaje con el rango “1” a un destinatario relevante o a otros medios de encaminamiento antes de una entrega adicional al destinatario. Una vez que el mensaje se ha enviado en la etapa 873, el manejador de salida 870 se encuentra disponible para otro procesamiento. Este puede seguir operando a pesar de que el mismo no ha recibido aun el acuse de recibo del destinatario. Por ejemplo, el manejador de salida 870 puede recuperar y enviar otro mensaje que se refiere a otra secuencia, logrando de ese modo una entrega asmcrona para potenciar la capacidad de proceso. Este tambien puede recibir un acuse de recibo de cualquier emisor y para cualquier mensaje. Por lo tanto, el numero de mensajes y procesamientos que puede ejecutar el manejador de salida no esta limitado por el tiempo de respuesta del emisor del mensaje que se envio en la etapa 873.
• El destinatario recibe el mensaje enviado en la etapa 873 a partir del proceso de entrega 8701 del manejador de salida 870. En respuesta, el destinatario envfa un mensaje de acuse de recibo al sistema. El proceso de acuse de recibo 8702 del mismo manejador de salida 870 o el proceso de acuse de recibo 8602 de otro manejador de salida 860 recibe el mensaje de acuse de recibo. Esto se corresponde con la etapa 874 que se muestra en la figura 8C.
La figura 8D ilustra las siguientes etapas del proceso de secuenciacion en el que el siguiente mensaje que esta almacenado en el area de almacenamiento de desbordamiento 806 se reenvfa a la cola de almacenamiento 850 antes de reenviarse a uno de los manejadores de salida para su procesamiento. Las etapas que se muestran en la figura 8D son desencadenadas por la recepcion 875 del mensaje de acuse de recibo en un manejador de entrada del sistema.
• El manejador de salida 860 comprueba 862 en el contexto de estatus 802 el rango de secuencia para determinar el rango del siguiente mensaje que se ha de procesar, dentro de la secuencia del mensaje del que se esta dando acuse de recibo. Debido a que el rango de secuencia se ajusta a “2”, el manejador de salida 860 recupera 809 el mensaje 807 de la secuencia “A” que tiene un rango de mensaje “2” a partir del area de almacenamiento de
5
10
15
20
25
30
35
40
45
50
55
60
65
desbordamiento 806. Este mensaje 807 se almacenara entonces en la cola de almacenamiento 850, y se facilitara a todos los manejadores de salida. El contexto de estatus 802 sigue “procesando”. El rango de secuencia se incrementa y se ajusta a “3”, indicando de ese modo que el siguiente mensaje a procesar es el que tiene un rango de mensaje igual a “3”;
• el manejador de salida 860 sale y esta listo para procesar otro mensaje almacenado en la cola de almacenamiento 850.
• Y el proceso continua hasta que se ha procesado y entregado la secuencia completa de los mensajes entrantes.
El proceso que se ha descrito en lo que antecede en las figuras 8A-8D es identico si los mensajes entrantes se reciben con o sin un mdice de secuencia que indique el rango del mensaje dentro de la secuencia. En el caso en el que se proporciona el mismo, este se usa como atribucion de rangos de secuenciacion de lo contrario; la atribucion de rangos es generada por el manejador de entrada sobre la base del orden de recepcion dentro de la misma secuencia.
Redisposicion de la secuencia
Ademas del proceso que se ha detallado previamente en las figuras 8A- 8D, en el que los mensajes entrantes son recibidos por manejadores de entrada en un rango de secuencia estricto, el mismo proceso tambien se implementa con el fin de hacer frente a los mensajes que se reciben fuera de secuencia. El unico prerrequisito de facto es que los emisores de mensajes proporcionen un mdice para cada mensaje dentro de la misma secuencia, indicando el mdice, para cada mensaje, su rango dentro de la secuencia.
Tal como se ha indicado previamente, la invencion incrementa un rango de secuencia que define el rango del siguiente mensaje a procesar para esa secuencia. Cuando la cola de almacenamiento 850 puede recibir un mensaje a partir de una secuencia dada, se comprueba entonces el rango de secuencia. Solo el mensaje con un rango de mensaje igual al rango de secuencia se reenvfa al almacenamiento de puesta en cola 850. Si no hay mensaje alguno en el almacenamiento de secuencias 800 que tenga un rango de mensaje que sea igual al rango de secuencia, entonces el procesamiento de esta secuencia se retiene hasta que un mensaje con el rango correcto se ha recibido de un manejador de entrada. Por lo tanto, el rango de secuencia opera como un contador que indica el mensaje que se ha de procesar. Preferiblemente, el rango de secuencia se almacena en el almacenamiento de secuencias 800.
La figura 8E ilustra las etapas del proceso de secuenciacion de un mensaje entrante 801 con la redisposicion de la secuencia:
Ademas del proceso previamente descrito que es realizado por la pluralidad de manejadores de entrada 810, ... , 840, pueden tener lugar etapas adicionales para la redisposicion controlada por un orden de mdice:
• el rango del mensaje tal como es indicado por el mdice del mensaje se compara con el rango del siguiente mensaje a procesar con el fin de mantener el rango de secuencia. Este rango del siguiente mensaje a procesar con el fin de mantener el rango de secuencia es indicado por el rango de secuencia que se actualiza de forma incremental, preferiblemente en el almacenamiento de secuencias.
• Si el rango del mensaje coincide 818 con el rango de secuencia, entonces el mensaje entrante 815 se almacena en la cola de almacenamiento 850, para encontrarse disponible a la pluralidad de manejadores de salida. El estatus de secuencia se ajusta a procesando. El rango de secuencia a procesar se incrementa y es de aplicacion el proceso previamente descrito.
• Si el rango del mensaje tal como es indicado por el mdice es superior al rango de secuencia 819, entonces el mensaje 813 se almacena en el almacenamiento de desbordamiento 806. El estatus de secuencia 802 se ajusta a “Pendiente”. El mensaje no se procesara de facto. La secuenciacion se reanudara cuando un mensaje con el rango de mensaje esperado a procesar sea recibido por un manejador de entrada. En ese caso, el manejador de entrada almacenara el mensaje correspondiente en la cola de almacenamiento y ajustara el estatus de secuencia a “Procesando”.
Al igual que para el proceso que se muestra en las figuras 8A - 8D que se muestran, cuando un manejador de salida termina trabajando sobre un mensaje, este buscara en el almacenamiento de desbordamiento 806, un mensaje con un rango de mensaje que coincide con el rango de secuencia (indicando, el rango de secuencia, el rango del siguiente mensaje a procesar para mantener el orden de la secuencia). Si se halla este, se almacena en la cola 850; en caso contrario, el estatus de secuencia se ajusta o bien a “Pendiente” (si algunos mensajes en esta secuencia existen en el area de desbordamiento, pero con un rango no igual al rango de secuencia) o bien a “Esperando” (si no se encuentra mensaje alguno para esa secuencia en el area de almacenamiento de desbordamiento).
Gestion de expiraciones y bloqueos de secuencia
Tal como se ha descrito previamente, los mensajes que se reciben para una secuencia dada se almacenan en el almacenamiento de desbordamiento 806, siempre que sus rangos de mensaje no estan coincidiendo con el del mensaje a procesar. Esta es una situacion de bloqueo para la totalidad de la secuencia, siempre que el siguiente
5
10
15
20
25
30
35
40
45
50
55
60
65
mensaje esperado a procesar no sea recibido por un manejador de entrada.
En una realizacion particular, la presente invencion asegura que esta situacion de bloqueo es limitada en el tiempo, si alguna vez la misma es requerida por el proceso. El proceso tambien define un valor de expiracion de secuencia global, que se expresa como una duracion (en segundos, minutos, d^as, ...).
En otra realizacion, el contexto de secuencia 802 puede contener un valor de tiempo absoluto, que se define como la expiracion de secuencia. Cada vez que un manejador de entrada o un manejador de salida tiene acceso a un registro de contexto de secuencia dado, lo que quiere decir que el mismo esta procesando, de alguna forma, un mensaje que pertenece a la secuencia, que es una indicacion de la actividad sobre la secuencia, este valor de tiempo absoluto se actualiza a un valor que es la suma del tiempo de sistema actual y la duracion de expiracion de secuencia.
En aun otra realizacion, un recopilador de secuencias de expiracion se puede implementar para, con regularidad, activarse y explorar la lista completa de contextos de secuencia. En esta implementacion particular, se detecta cualquier secuencia que haya expirado con respecto a su duracion de secuencia. Este proceso hace uso de los valores de expiracion de secuencia para lograr la seleccion.
Dependiendo de la implementacion, el metodo, aparato y sistema de acuerdo con la presente invencion puede:
• eliminar todo mensaje correspondiente en el almacenamiento de desbordamiento 806 y en el contexto de secuencia 802;
• realizar cualquier procesamiento e inicio de sesion adecuado para un evento de expiracion de secuencia espedfico:
◦ entregar fuera de sincroma tal como tomar los artmulos en orden, o ignorar el artmulo o artmulos mientras se espera el correcto hasta que se halla),
◦ generar alarmas ...
Existen muchas aplicaciones de la presente invencion en el procesamiento de datos. Pero la misma es adecuada, en particular, para:
• servidor de mensajena, tal como Servidor de Mensajena de Amadeus (AMS, Amadeus Messaging Server): en el que la aplicacion se ocupa de la mensajena persistente, actuando como un concentrador en una infraestructura de una empresa y, mas en particular, una empresa de soporte logico. En el sector industrial de reservas o de reservacion, el AMS puede ser usado como tanto un sistema de reservacion como un sistema de control de salidas. La secuenciacion es exigida para todos los traficos de Teletipo. Por lo general, se hace referencia a un mensaje de Teletipo como TTY. Un TTY de tipo B es una norma industrial de las lmeas aereas para intercambiar mensajes por medio de canales asmcronos con un orden estricto de procesamiento para un contexto funcional dado. Por ejemplo, un primer mensaje contiene una lista de pasajeros que embarcan, una segunda lista contiene una lista de pasajeros cancelados, una tercera lista contiene una lista de pasajeros anadidos. Estas listas de pasajeros han de ir a seguidas en un orden estricto.
• Otro campo de aplicacion es, por ejemplo, el marco de alto nivel de OTF (OHF, OTF high-level framework) que es un componente de soporte logico intermedio que es usado por un numero de aplicaciones para implementar una entrega asmcrona garantizada. El uso principal de la secuenciacion con OHF es la sincronizacion que tiene lugar entre la base de datos de cupones (cDb, coupon database) y la aplicacion de control de billetes electronicos. A menudo, ocurre que se hacen muchos cambios a un unico cupon en un periodo de tiempo limitado. Estos cambios se han de reenviar en el orden correcto a la aplicacion de billetes electronicos o la base de datos de cupones con el fin de mantener sincronizados los mismos.
A pesar de que se han descrito en lo que antecede principalmente en el contexto de las soluciones de viajes proporcionadas por lmeas aereas o compares aereas, los expertos en la materia han de apreciar que las realizaciones de la presente invencion no se limitan a su uso solo con lmeas aereas, sino que se podnan adaptar asimismo para su uso con otros tipos de modalidades de viajes y proveedores de viajes, incluyendo, como ejemplos no limitantes, proveedores de viajes en barco, en tren, automovil, autobus y productos de viajes tales como hoteles.
La descripcion anterior ha proporcionado, por medio de ejemplos a modo de ejemplo y no limitantes, una descripcion plena e informativa de diversos metodos, aparatos y soporte logico para implementar las realizaciones a modo de ejemplo de la presente invencion. No obstante, diversas modificaciones y adaptaciones se pueden volver evidentes a los expertos en las materias relevantes a la vista de la descripcion anterior, cuando se lea junto con los dibujos anexos y las reivindicaciones adjuntas. No sino como algunos ejemplos, el uso de otros procesos o algoritmos, y representaciones de datos, similares o equivalentes, puede ser intentado por los expertos en la materia. Ademas, los diversos nombres que se usan para los diferentes elementos, funciones y algoritmos (por ejemplo, etc.) son meramente descriptivos y no se tiene por objeto que sean lefdos en un sentido limitante, como estos diversos elementos, se puede hacer referencia a funciones y algoritmos mediante cualquier nombre adecuado. La totalidad de tales modificaciones y otras modificaciones similares de las ensenanzas de la presente invencion seguiran
5
10
15
20
25
30
35
40
45
cayendo dentro del alcance de las realizaciones de la presente invencion.
Ademas, algunas de las caractensticas de las realizaciones a modo de ejemplo de la presente invencion se pueden aprovechar sin el uso correspondiente de otras caractensticas. En ese sentido, la descripcion anterior se debena considerar como meramente ilustrativa de los principios, ensenanzas y realizaciones de la presente invencion, y no en limitacion de los mismos.
Las realizaciones de las diversas tecnicas que se describen en el presente documento se pueden implementar en conjuntos de circuitos electronicos digitales, en soporte ffsico de ordenador, o soporte logico, soporte logico inalterable o soporte ffsico de dispositivo electronico de mano, o en combinaciones de los mismos. Las realizaciones se pueden implementar como un programa o producto de soporte logico, es decir, un programa informatico que se materializa de forma tangible en un portador de informacion, por ejemplo, en un dispositivo de almacenamiento legible por maquina o en una senal propagada, para su ejecucion por, o para controlar el funcionamiento de, un aparato de procesamiento de datos, por ejemplo, un procesador programable, un ordenador, una tableta o multiples ordenadores. Un programa, tal como el programa o programas informaticos que se han descrito en lo que antecede, se puede escribir en cualquier forma de lenguaje de programacion, incluyendo lenguajes compilados o interpretados, y se puede desplegar en cualquier forma, incluyendo como un programa autonomo o como un modulo, componente, subrutina, u otra unidad adecuada para su uso en un entorno informatico. Un programa se puede desplegar para ejecutarse en un ordenador o tableta o en multiples ordenadores o tabletas en un emplazamiento o distribuidos por multiples emplazamientos e interconectados por una red de comunicacion o una red inalambrica.
Los procesadores adecuados para la ejecucion de un programa informatico incluyen, a modo de ejemplo, microprocesadores de proposito tanto general como especial, y uno o mas procesadores cualesquiera de cualquier tipo de ordenador digital, tableta o dispositivo electronico. En general, un procesador recibira instrucciones y datos a partir de una memoria de solo lectura o una memoria de acceso aleatorio, o ambas. Los elementos de un ordenador pueden incluir al menos un procesador para ejecutar instrucciones y uno o mas dispositivos de memoria para almacenar instrucciones y datos. En general, un ordenador o dispositivo electronico tambien puede incluir, o estar operativamente acoplado para recibir datos de o transferir datos a, o ambos, uno o mas dispositivos de almacenamiento masivo para almacenar datos, por ejemplo, discos magneticos o magnetoopticos, o discos opticos.
Las realizaciones se pueden implementar en un sistema informatico que incluye un componente de extremo posterior, por ejemplo, como un servidor de datos, o que incluye un componente de soporte logico intermedio, por ejemplo, un servidor de aplicaciones, o que incluye un componente de extremo frontal, por ejemplo, un ordenador de cliente que tiene una interfaz grafica de usuario o un navegador Web a traves del cual un usuario puede interaccionar con una implementacion, o cualquier combinacion de tales componentes de extremo posterior, de soporte logico intermedio o de extremo frontal. Los componentes se pueden interconectar mediante cualquier forma o medio de comunicacion de datos digital, por ejemplo, una red de comunicacion, una red inalambrica o una red de telecomunicaciones. Los ejemplos de redes de comunicacion o de telecomunicaciones incluyen una red de area local (LAN, local area network) y una red de area extensa (WAN, wide area network), por ejemplo, Internet o una red inalambrica tal como una red Wifi.
A pesar de que en el presente documento se han ilustrado ciertas caractensticas de las implementaciones descritas, a los expertos en la materia se les ocurriran en lo sucesivo muchas modificaciones, substituciones, cambios y equivalentes. Por lo tanto, se ha de entender que se tiene por objeto que las reivindicaciones adjuntas cubran la totalidad de tales modificaciones y cambios en la medida en la que caigan dentro del verdadero espffitu y el alcance de las realizaciones de la invencion.

Claims (14)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    REIVINDICACIONES
    1. Un metodo implementado por ordenador de secuenciacion de mensajes asmcronos distribuidos en un sistema distribuido y paralelo que tiene una pluralidad de manejadores de entrada (810, 820, ... , 840) y una pluralidad de manejadores de salida (860, 870, 880, 890), comprendiendo el metodo las siguientes etapas:
    recibir en un manejador de entrada (810) un mensaje entrante (801-1) que se refiere a cualquiera de diversas secuencias, comprendiendo el mensaje entrante un valor de correlacion de secuencia que identifica una secuencia que comprende el mensaje entrante,
    comprobar un estatus de secuencia de dicha secuencia en un almacenamiento de secuencias (800), caracterizado por que la pluralidad de manejadores de entrada (810, 820, ... , 840) esta dispuesta en paralelo y forma una capa de manejadores de entrada y el mensaje entrante (801-1) se recibe en cualquier manejador de entrada (810) comprendido en la capa de manejadores de entrada y la pluralidad de manejadores de salida (860, 870, 880, 890) esta dispuesta en paralelo y forma una capa de manejadores de salida, y por que las etapas se realizan con al menos un procesador de datos en la capa de manejadores de entrada y con al menos un procesador de datos en la capa de manejadores de salida, estando el metodo adicionalmente caracterizado por que comprobar un estatus de secuencia (802, 804) de dicha secuencia en un almacenamiento de secuencias (800) comprende comprobar en un almacenamiento de secuencias (800) que esta compartido por la pluralidad de manejadores de entrada y la pluralidad de manejadores de salida, en el que el estatus de secuencia (802, 804) indica si un mensaje de la secuencia esta siendo procesado en la actualidad en la capa de manejadores de salida o esta almacenado en un area de almacenamiento de desbordamiento (806) que esta compartida por todos los manejadores de salida;
    determinar si el mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia, que comprende:
    - determinar un rango de mensaje que indica el orden del mensaje entrante en dicha secuencia,
    - comparar el rango de mensaje con un rango de secuencia que define el rango del siguiente mensaje a procesar para dicha secuencia,
    - si el rango de mensaje es igual al rango de secuencia, entonces se determina que el mensaje es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia,
    - si el rango de mensaje no es igual al rango de secuencia, entonces se determina que el mensaje no es el siguiente mensaje a procesar para mantener el orden de los mensajes en dicha secuencia;
    - si el estatus de secuencia (802, 804) indica que ninguno de los manejadores de salida (860, 870, 880, 890)
    en la capa de manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y si
    se determina que el mensaje entrante es el siguiente mensaje a ser procesado para dicha secuencia,
    entonces el manejador de entrada de recepcion reenvfa el mensaje entrante a un almacenamiento de puesta en cola (850) y, posteriormente, el mensaje entrante se reenvfa a un manejador de salida disponible (860, 870, 880, 890) en la capa de manejadores de salida para su procesamiento;
    - si el estatus de secuencia (802, 804) indica que al menos uno de los manejadores de salida (860, 870, 880, 890) en la capa de manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si el almacenamiento de puesta en cola (850) ya comprende un mensaje a procesar para dicha secuencia; o si se determina que el mensaje entrante no es el siguiente mensaje a ser procesado para dicha secuencia, entonces el manejador de entrada de recepcion almacena el mensaje entrante (801-1) en una memoria del area de almacenamiento de desbordamiento (806) para conservarlo para su procesamiento adicional.
  2. 2. El metodo de acuerdo con la reivindicacion anterior, en el que, tras la complecion del procesamiento de un
    mensaje de una secuencia dada en un manejador de salida (860, 870, 880, 890), se incrementa el rango de
    secuencia de dicha secuencia dada y en el que, cuando se incrementa el rango de secuencia de una secuencia, si el almacenamiento de desbordamiento (806) comprende un mensaje con un rango de mensaje que es igual al rango de secuencia tal como se incrementa, reenviar entonces este mensaje al almacenamiento de puesta en cola (850).
  3. 3. El metodo de acuerdo con una cualquiera de las dos reivindicaciones anteriores, en el que si el mensaje entrante (801-1) tal como se recibe no esta dotado de mdice alguno que indique el rango de mensaje de la secuencia, entonces la etapa de determinar un rango de mensaje comprende asignar al mensaje entrante un rango de mensaje que indica el rango del mensaje entrante en su secuencia y almacenar el rango de mensaje asignado en el almacenamiento de secuencias (800).
  4. 4. El metodo de acuerdo con la reivindicacion anterior, en el que el rango de mensaje asignado se corresponde con el rango del ultimo mensaje recibido en uno cualquiera de los manejadores de entrada (810, 820, ... , 840) para dicha secuencia mas un incremento.
  5. 5. El metodo de acuerdo con una cualquiera de las reivindicaciones 1 a 2, en el que el mensaje entrante (801-1) tal como se recibe en el manejador de entrada (810, 820, ... , 840) esta dotado de un mdice que indica el rango de mensaje dentro de la secuencia.
  6. 6. El metodo de acuerdo con una cualquiera de las cinco reivindicaciones anteriores, en el que si el almacenamiento
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    de puesta en cola (850) no comprende mensaje alguno para la secuencia del mensaje entrante y si el rango de mensaje del mensaje entrante es mas grande que el rango de secuencia que se indica en el almacenamiento de secuencias (800), entonces el mensaje entrante se almacena en el almacenamiento de desbordamiento (806) hasta que el rango de secuencia se haya incrementado y sea igual al rango de mensaje del mensaje entrante.
  7. 7. El metodo de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que el metodo comprende adicionalmente procesar un segundo mensaje por un manejador de salida (860, 870, 880, 890) despues de que el manejador de salida (860, 870, 880, 890) haya enviado un primer mensaje y antes de que el manejador de salida (860, 870, 880, 890) haya recibido un acuse de recibo de respuesta de un destinatario del primer mensaje.
  8. 8. El metodo de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que el metodo comprende adicionalmente realizar un proceso de entrega por un manejador de salida (860, 870, 880, 890), enviando, el proceso de entrega, mensajes a destinatarios y operando con independencia de un proceso de acuse de recibo comprendido en el manejador de salida (860, 870, 880, 890), recibiendo el proceso de acuse de recibo un acuse de recibo de los destinatarios.
  9. 9. El metodo de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que, tras la recepcion del mensaje entrante y antes de la etapa de comprobacion, realizar una etapa de bloqueo de entrada en la que se evita que todos los manejadores de entrada (810, 820, ... , 840) reciban otro mensaje de dicha secuencia hasta que el mensaje entrante se haya almacenado en el almacenamiento de secuencias (800) o se haya enviado al almacenamiento de puesta en cola (850) y en el que la etapa de bloqueo de entrada comprende bloquear (812) una exclusion mutua dedicada a dicha secuencia, almacenandose dicha exclusion mutua en el almacenamiento de secuencias (800).
  10. 10. El metodo de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que, tras reenviar el mensaje entrante desde la cola de almacenamiento (850) a un manejador de salida, realizar una etapa de bloqueo de salida en la que se evita que todos los otros manejadores de salida (860, 870, 880, 890) reciban otro mensaje de dicha secuencia hasta que se haya completado el procesamiento del mensaje entrante, y en el que la etapa de bloqueo de salida comprende bloquear una exclusion mutua dedicada a dicha secuencia, almacenandose dicha exclusion mutua en el almacenamiento de secuencias (800).
  11. 11. El metodo de acuerdo con la reivindicacion anterior, en el que, cuando se encuentra disponible un manejador de salida (860, 870, 880, 890), este comprueba en el almacenamiento de puesta en cola (850) la exclusion mutua para la secuencia de dicho mensaje y recupera dicho mensaje solo si la exclusion mutua no esta bloqueada.
  12. 12. El metodo de acuerdo con una cualquiera de las reivindicaciones anteriores, en el que un mensaje que tiene un rango de mensaje mas grande que el rango de secuencia se almacena en primer lugar en el almacenamiento de desbordamiento (806) y se descarta del almacenamiento de desbordamiento (806) despues de que se haya alcanzado un valor de expiracion, estando asignado el valor de expiracion a uno cualquiera de: la secuencia del mensaje y el mensaje.
  13. 13. Un soporte informatico de lectura no transitorio que contiene unas instrucciones de programa de soporte logico, en el que la ejecucion de las instrucciones de programa de soporte logico por al menos un procesador de datos da como resultado la realizacion de operaciones que comprenden la ejecucion del metodo segun una cualquiera de las reivindicaciones 1-12.
  14. 14. Un sistema de procesamiento distribuido y paralelo para secuenciar mensajes asmcronos, caracterizado por que el sistema comprende:
    - una capa de manejadores de entrada que comprende una pluralidad de manejadores de entrada (810, 820, ... , 840) que esta dispuesta en paralelo, que comprende al menos un procesador de datos, estando configurado cada uno de la pluralidad de manejadores de entrada para recibir, de forma independiente, una pluralidad de mensajes entrantes (801-1, 801-2) que se refieren a varias secuencias;
    - una capa de manejadores de salida que comprende una pluralidad de manejadores de salida (860, 870, 880, 890) que esta dispuesta en paralelo, que comprende al menos un procesador de datos, estando configurado cada uno de la pluralidad de manejadores de salida para procesar y enviar, de forma independiente, la pluralidad de mensajes entrantes (801-1, 801-2); y
    - una capa de almacenamiento (800, 850) que comprende al menos una memoria y que comprende:
    • un almacenamiento de puesta en cola (850) para almacenar mensajes entrantes listos para ser reenviados a cualquiera de la pluralidad de manejadores de salida;
    • un almacenamiento de secuencias (800) que es compartido por los manejadores de entrada y por los manejadores de salida, que comprende:
    - un contexto de estatus de secuencia (802) para mantener y actualizar un estatus para cada secuencia de los mensajes entrantes, en el que el estatus de secuencia indica si un mensaje de la secuencia esta siendo
    procesado en la actualidad en la capa de manejadores de salida o esta almacenado en un area de almacenamiento de desbordamiento compartida; y
    - el almacenamiento de desbordamiento compartido (806) que esta configurado para recibir los mensajes de los manejadores de entrada (810, 820, ... , 840) y para reenviar los mismos de forma secuencial al almacenamiento
    5 de puesta en cola (850),
    estando tambien configurado el sistema para determinar si un mensaje entrante es el siguiente mensaje a procesar para mantener el orden de los mensajes en su secuencia y para realizar las siguientes etapas;
    - si el estatus de secuencia (802, 804) indica que ninguno de los manejadores de salida (860, 870, 880, 890) en la capa de manejadores de salida esta procesando en la actualidad un mensaje para dicha secuencia y si se
    10 determina que el mensaje entrante es el siguiente mensaje a procesar para dicha secuencia, reenviar entonces el mensaje entrante al almacenamiento de puesta en cola (850) y, posteriormente, reenviar el mismo a un manejador de salida disponible (860, 870, 880, 890) para su procesamiento;
    - si el estatus de secuencia (802, 804) indica que al menos uno de los manejadores de salida (860, 870, 880, 890) en la capa de manejadores de salida esta procesando en la actualidad un mensaje de dicha secuencia; o si
    15 el almacenamiento de puesta en cola (850) ya comprende un mensaje a procesar para dicha secuencia; o si se determina que el mensaje entrante no es el siguiente mensaje a procesar para dicha secuencia, almacenar entonces el mensaje entrante (801-1) en el almacenamiento de desbordamiento compartido (806) para conservarlo para su procesamiento adicional.
ES12368017.5T 2012-08-02 2012-08-02 Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo Active ES2642669T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP12368017.5A EP2693337B1 (en) 2012-08-02 2012-08-02 Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment

Publications (1)

Publication Number Publication Date
ES2642669T3 true ES2642669T3 (es) 2017-11-17

Family

ID=46704579

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12368017.5T Active ES2642669T3 (es) 2012-08-02 2012-08-02 Método, sistema y productos de programa informático para secuenciar mensajes asíncronos en un entorno distribuido y paralelo

Country Status (2)

Country Link
EP (1) EP2693337B1 (es)
ES (1) ES2642669T3 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959858B (zh) * 2017-03-29 2021-06-15 联想(北京)有限公司 信息处理方法及装置
EP3513292B1 (en) 2017-06-08 2021-10-20 Amadeus S.A.S. Multi-standard message processing
US10623523B2 (en) 2018-05-18 2020-04-14 Oracle International Corporation Distributed communication and task handling to facilitate operations of application system
CN111683140B (zh) * 2020-06-05 2024-03-19 北京百度网讯科技有限公司 用于分发消息的方法和装置
CN114625546B (zh) * 2020-12-11 2025-06-13 银联数据服务有限公司 一种数据处理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588117A (en) * 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
PL2254046T3 (pl) * 2009-05-18 2014-12-31 Amadeus Sas Sposób i system zarządzania kolejnością wiadomości
US8495656B2 (en) * 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages

Also Published As

Publication number Publication date
EP2693337B1 (en) 2017-05-17
EP2693337A8 (en) 2014-04-09
EP2693337A1 (en) 2014-02-05

Similar Documents

Publication Publication Date Title
US8903767B2 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
JP6198825B2 (ja) 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品
US10679210B2 (en) Blockchain transaction commitment ordering
US9888048B1 (en) Supporting millions of parallel light weight data streams in a distributed system
CN102414663B (zh) 用于管理报文排序的方法和系统
US20130304826A1 (en) Scheduled messages in a scalable messaging system
CN106462449B (zh) 具有多项目事务支持的多数据库日志
Turek et al. The many faces of consensus in distributed systems
JPH10224395A (ja) 電子会議システム
US8276160B2 (en) Managing queues in an asynchronous messaging system
US8984530B2 (en) Queued message dispatch
CN108572970A (zh) 一种结构化数据的处理方法和分布式处理系统
US20080201712A1 (en) Method and System for Concurrent Message Processing
US20100257240A1 (en) Method and system for implementing sequence start and increment values for a resequencer
EP2693337B1 (en) Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
JP5395517B2 (ja) 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム
US8254391B2 (en) Method and system for performing blocking of messages on errors in message stream
US9124448B2 (en) Method and system for implementing a best efforts resequencer
WO2016209459A1 (en) Devices and/or methods to provide a query response based on ephemeral data
US9652310B1 (en) Method and apparatus for using consistent-hashing to ensure proper sequencing of message processing in a scale-out environment
CN118689618B (zh) 任务处理方法、装置、设备、可读存储介质和程序产品
US12423139B2 (en) Event scheduler sub-system for aggregation, prioritization, and serialization of software application events
CN109039846A (zh) 环形互联总线的避免死锁的方法、系统和跨环装置
CN107949856B (zh) 电子邮件停放区
KR20200012901A (ko) 다중-표준 메시지 프로세싱