ES2705708T3 - Sistemas y procedimientos para comunicaciones tolerantes a fallos - Google Patents
Sistemas y procedimientos para comunicaciones tolerantes a fallos Download PDFInfo
- Publication number
- ES2705708T3 ES2705708T3 ES15814364T ES15814364T ES2705708T3 ES 2705708 T3 ES2705708 T3 ES 2705708T3 ES 15814364 T ES15814364 T ES 15814364T ES 15814364 T ES15814364 T ES 15814364T ES 2705708 T3 ES2705708 T3 ES 2705708T3
- Authority
- ES
- Spain
- Prior art keywords
- control node
- node
- work
- main control
- project
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2025—Failover techniques using centralised failover control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2033—Failover techniques switching over of hardware resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2035—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Testing And Monitoring For Control Systems (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephonic Communication Services (AREA)
Abstract
Un procedimiento implementado por ordenador, que comprende: recibir, en un nodo de control de respaldo conectado a un nodo de control principal y a un nodo de trabajo en una red de comunicaciones, información del estado de la red, incluyendo la información del estado de la red un estado del proyecto del nodo de control principal o un estado del proyecto del nodo de trabajo, en el que el estado del proyecto del nodo de control principal y el estado del proyecto del nodo de trabajo incluyen un estado de una o varias partes de un proyecto que está siendo ejecutado por los nodos principal y de trabajo en la red de comunicaciones, y en el que la información del estado de la red incluye un punto de control del proyecto que indica un punto durante la ejecución de una parte del proyecto antes de un fallo del nodo de control principal; almacenar la información del estado de la red en el nodo de control de respaldo; recibir una comunicación de fallo que incluye una indicación de que el nodo de control principal ha fallado; designar un nodo de control de respaldo como un nuevo nodo de control principal en base a la comunicación de fallo tras recibir la comunicación de fallo; recibir información actualizada del estado de la red en base a la indicación de que el nodo de control principal ha fallado, en el que la información actualizada del estado de la red incluye un estado del proyecto actualizado del nodo de control principal o un estado del proyecto actualizado del nodo de trabajo; determinar que el nodo de control principal ha fallado mientras el proyecto estaba pendiente; y transmitir un conjunto de instrucciones en base a la información actualizada del estado de la red, en el que el conjunto de instrucciones incluye el punto de control del proyecto que indica el punto durante la ejecución de una parte del proyecto anterior al fallo del nodo de control principal, y en el que el conjunto de instrucciones incluye instrucciones para que los nodos de trabajo continúen el trabajo sobre el proyecto pendiente a partir del punto de control del proyecto después del fallo del nodo de control principal.
Description
DESCRIPCIÓN
Sistemas y procedimientos para comunicaciones tolerantes a fallos
REFERENCIA A SOLICITUDES RELACIONADAS
Esta es una no provisional y reivindica el beneficio y la prioridad bajo 35 U.S.C. § 119(e) de la solicitud provisional de EE.UU. número 62/019.426, titulada "Fault-Tolerant Communication Strategies for Distributed Processing". La solicitud provisional de EE.UU. se presentó el 1 de julio de 2014.
SECTOR TÉCNICO
La presente invención se refiere a una tecnología informática para tolerar fallos en una red de comunicaciones. Específicamente, se dan a conocer varias técnicas y sistemas para detectar un error o un fallo mediante un nodo en una red de nodos informáticos en una red de comunicaciones, ajustar la red para evitar un fallo de la red y adoptar una acción en base al fallo.
ANTECEDENTES
En una red de comunicaciones que incluye una red de nodos informáticos que ejecutan un trabajo, un nodo puede fallar. Un fallo de un nodo puede provocar un fallo de toda la red, y por lo tanto un fallo de todo el trabajo, provocando que se vuelva a iniciar el trabajo desde el principio. Para un trabajo que incluye un conjunto grande de datos o que puede tardar un periodo largo de tiempo en completarse, dicho fallo puede ser especialmente problemático.
El documento US-B1-8041798 da a conocer un mecanismo de red de auto-recuperación que utiliza protocolos de plataforma entre pares. En una realización, dos o más nodos en una red se pueden configurar como nodos maestros. Uno de los nodos maestros configurados puede servir como el nodo maestro real, y uno puede ser un nodo maestro de respaldo u "oculto", no activamente en servicio como un nodo maestro. Si el nodo maestro activo se cae, se pueden utilizar protocolos entre pares para detectar que el nodo maestro no está activo y el nodo maestro de respaldo puede asumir las operaciones del nodo maestro para la red. El nodo de respaldo puede "ocultar" el nodo maestro, manteniendo información actualizada sobre la configuración y las operaciones de la red por medio de protocolos de plataforma entre pares, de tal modo que puede asumir sin interrupciones las operaciones de gestión de la red.
BREVE RESUMEN
La presente invención se refiere a una tecnología informática para tolerar fallos en una red de comunicaciones. Específicamente, se dan a conocer varias técnicas y sistemas para detectar un error o un fallo mediante un nodo en una red de nodos informáticos en una red de comunicaciones, ajustar la red para evitar un fallo de la red y adoptar una acción en base al fallo.
En una primera realización que se define en la reivindicación 1, un procedimiento implementado por ordenador puede recibir, en un nodo de control de respaldo conectado a un nodo de control principal y un nodo de trabajo en una red de comunicaciones, información del estado de la red, incluyendo la información del estado de la red un estado del proyecto del nodo de control principal o un estado del proyecto del nodo de trabajo, en el que el estado del proyecto del nodo de control principal y el estado del proyecto del nodo de trabajo incluyen un estado de una o varias partes de un proyecto que está siendo ejecutado por los nodos principal y de trabajo en la red de comunicaciones, y en el que la información del estado de la red incluye un punto de control del proyecto que indica un punto durante la ejecución de una parte del proyecto antes del fallo del nodo de control principal; almacenar la información del estado de la red dentro del nodo de control de respaldo; recibir una comunicación de fallo que incluye una indicación de que el nodo de control principal ha fallado; designar el nodo de control de respaldo como un nuevo nodo de control principal en base a la comunicación de fallo tras la recepción de la comunicación de fallo; recibir información actualizada del estado de la red, en base a la indicación de que el nodo de control principal ha fallado, en el que la información actualizada del estado de la red incluye un estado del proyecto actualizado del nodo de control principal o un estado del proyecto actualizado del nodo de trabajo; determinar que el nodo de control principal ha fallado mientras el proyecto estaba pendiente; y transmitir un conjunto de instrucciones en base a la información actualizada del estado de la red, donde el conjunto de instrucciones incluye el punto de control del proyecto, que indica el punto durante la ejecución de una parte del proyecto antes del fallo del nodo de control principal, y en el que el conjunto de instrucciones incluye instrucciones para que el nodo de trabajo continúe trabajando en el proyecto pendiente a partir del punto de control del proyecto después del fallo del nodo de control principal.
En un aspecto, el procedimiento puede comprender además recibir, en el nodo de control de respaldo, una comunicación del nodo principal que incluye una indicación de que el nodo de control de respaldo es el nuevo nodo de control principal. En otro aspecto, tras recibir la comunicación de fallo, el nodo de control de respaldo determina si el nodo de respaldo se debería designar como el nuevo nodo de control principal en base a un identificador único o rango del nodo de control de respaldo, y asigna un nuevo nodo de control principal. En otro aspecto, tras recibir la
comunicación de fallo, el nodo de control de respaldo determina que el nodo de control de respaldo es el único nodo de control de respaldo en la red de comunicaciones. En otro aspecto, el nodo de control principal controla las partes del proyecto de cuya ejecución es responsable cada nodo de trabajo. En otro aspecto, cada nodo de control y nodo de trabajo en la red de comunicaciones es asignado a un identificador único almacenado, donde los identificadores únicos de los nodos indican una jerarquía de los nodos dentro de la red de comunicaciones, y donde cada nodo de control y cada nodo de trabajo almacenan el identificador único para cada otro nodo de control y nodo de trabajo en la red de comunicaciones. En otro aspecto, nodos de trabajo del nodo de trabajo ejecutan diferentes partes del proyecto. En otro aspecto, el procedimiento puede comprender además determinar que el nodo de control principal ha fallado, donde determinar que el nodo de control principal ha fallado incluye determinar que el nodo de control de respaldo no recibió una comunicación de latido del corazón ("heartbeat"), donde la comunicación de latido del corazón indica que el nodo de control principal está operativo. En otro aspecto, determinar que el nodo de control principal ha fallado incluye determinar que el nodo de control de respaldo no ha recibido una comunicación de latido del corazón desde el nodo de control principal después de un periodo de tiempo predeterminado.
En otra realización que se define en la reivindicación 12, un producto de programa informático se puede realizar de manera tangible en un medio de almacenamiento no transitorio legible a máquina, que incluye instrucciones configuradas para hacer que un aparato de procesamiento de datos lleve a cabo operaciones según el procedimiento de cualquiera de las reivindicaciones 1 a 11.
En otra realización que se define en la reivindicación 13, un dispositivo informático puede comprender uno o varios procesadores; y una memoria que tiene instrucciones almacenadas en la misma, que cuando son ejecutadas por dichos uno o varios procesadores hacen que el dispositivo informático lleva a cabo operaciones según el procedimiento de cualquiera de las reivindicaciones 1 a 11.
Este resumen no está destinado a identificar características clave o esenciales de la materia reivindicada, ni está destinado a su utilización aislada para determinar el alcance de la materia reivindicada. La materia se deberá comprender haciendo referencia las partes adecuadas de toda la especificación de esta patente, de cualesquiera o la totalidad de los dibujos, y de cada reivindicación.
Lo anterior, junto con otras características y realizaciones, resultará más evidente al hacer referencia a la siguiente descripción, reivindicaciones y dibujos adjuntos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 muestra un ejemplo de un bus de diagrama de bloques que proporciona una ilustración generalizada de componentes de hardware y de software de una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 2 muestra un ejemplo de una red de comunicaciones que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 3 muestra un ejemplo de una red de comunicaciones que incluye dos nodos de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 4 muestra un ejemplo de una red de comunicaciones que incluye tres nodos de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 5 muestra un ejemplo de una red de comunicaciones que incluye dos nodos de control, incluyendo un nodo de control de respaldo con una instantánea de la red almacenada, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 6 muestra un ejemplo de una red de comunicaciones que incluye dos nodos de control, incluyendo un nodo de control de respaldo con una instantánea de la red almacenada, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 7 muestra un ejemplo de una red de comunicaciones que incluye dos nodos de control, incluyendo un nodo de control de respaldo con una instantánea de la red almacenada, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 8 muestra un ejemplo de una red de comunicaciones que incluye un nuevo nodo de control principal y un nodo de control de respaldo anterior, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 9 muestra un ejemplo de una red de comunicaciones que incluye un nodo de control principal y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 10 muestra un ejemplo de una red de comunicaciones que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 11 muestra un ejemplo de una red de comunicaciones que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 12 muestra un ejemplo de una red de comunicaciones que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 13 es un diagrama de flujo que muestra un proceso de ejemplo para recuperarse de un fallo del nodo de control principal en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 14 es un diagrama de flujo que muestra un proceso de ejemplo para recuperarse de un fallo de un nodo de trabajo en una red de comunicaciones después de un fallo de un nodo de trabajo, de acuerdo con realizaciones de la presente tecnología.
La figura 15 es un diagrama de flujo que muestra un proceso de ejemplo para recuperarse de un fallo de nodo de control en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 16 es un diagrama de flujo que muestra un proceso de ejemplo para autenticar una conexión entre nodos desde la perspectiva de un servidor de red, de acuerdo con realizaciones de la presente tecnología.
La figura 17 es un diagrama de flujo que muestra un proceso de ejemplo para autenticar una conexión entre nodos desde la perspectiva de un cliente de red, de acuerdo con realizaciones de la presente tecnología.
La figura 18 es un diagrama de flujo que muestra un proceso de ejemplo para asignar una lista de nodos, numerados desde m hasta n, como hijos a un nodo, tal como un nodo de control, de acuerdo con realizaciones de la presente tecnología.
La figura 19 es un diagrama de flujo que muestra un proceso de ejemplo para que un nodo de control principal distribuya trabajo para un proyecto de cliente entre los otros nodos en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 20 es un diagrama de flujo que muestra un proceso de ejemplo para que un nodo de control de respaldo reciba y almacene información de estado actualizada, en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 21 es un diagrama de flujo que muestra un procedimiento de ejemplo para que un nodo de trabajo procese un trabajo durante un cálculo de la red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. La figura 22 es un diagrama de flujo que muestra un proceso de ejemplo para difundir datos dentro de una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
La figura 23 es un diagrama de flujo que muestra un proceso de ejemplo para reducción dentro de una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología.
DESCRIPCIÓN DETALLADA
En la siguiente descripción, se exponen con fines explicativos detalles específicos para proporcionar una comprensión exhaustiva de realizaciones de la tecnología. Sin embargo, resultará evidente que las diversas realizaciones se pueden practicar sin estos detalles específicos. Las figuras y la descripción no están destinadas a ser limitativas.
La siguiente descripción proporciona solamente realizaciones de ejemplo y no está destinada limitar el alcance, la aplicabilidad o la configuración de la invención. Por el contrario, la siguiente descripción de las realizaciones de ejemplo proporcionará a los expertos en la materia una descripción que haga posible implementar una realización de ejemplo. Se debe entender que se pueden realizar varios cambios en la función y disposición de los elementos, sin apartarse del alcance de la tecnología que se expone en las reivindicaciones adjuntas.
Se proporcionan detalles específicos en la siguiente descripción detallada para proporcionar una comprensión exhaustiva de las realizaciones. Sin embargo, un experto en la materia comprenderá que las realizaciones se pueden practicar sin estos detalles específicos. Por ejemplo, circuitos, sistemas, redes, procesos y otros componentes se pueden haber mostrado como componentes en forma de diagrama de bloques para no oscurecer las realizaciones con detalles innecesarios. En otros casos, circuitos, procesos, algoritmos, estructuras y técnicas bien conocidas se pueden mostrar sin detalles innecesarios para evitar oscurecer las realizaciones.
Asimismo, se debe observar que las realizaciones individuales pueden estar descritas como un proceso que está representado como un flujograma, un diagrama de flujo, un diagrama de flujo de datos, un diagrama de estructura o un diagrama de bloques. Aunque un flujograma puede describir las operaciones como un proceso secuencial, muchas de las operaciones se pueden realizar en paralelo o simultáneamente. Además, el orden de las operaciones se puede reordenar. Un proceso finaliza cuando sus operaciones se completan, pero podría tener etapas adicionales no incluidas en la figura. Un proceso puede corresponder a un método, una función, un procedimiento, una
subrutina, un subprograma, etc. Cuando un proceso corresponde a una función, su terminación puede corresponder a un retorno de la función a la función que la invoca o función principal.
La expresión "medio de almacenamiento legible a máquina" o "medio de almacenamiento legible por ordenador" incluye, de forma no limitativa, dispositivos de almacenamiento portátiles o no portátiles, dispositivos de almacenamiento óptico y algunos otros medios que pueden almacenar, contener o transportar una o varias instrucciones y/o datos. Un medio legible a máquina puede incluir un medio no transitorio en el que se pueden almacenar datos. Ejemplos de un medio no transitorio pueden incluir, de forma no limitativa, un disco o cinta magnética, un medio de almacenamiento óptico, tal como un disco compacto (CD, compact disk) o un disco versátil digital (DVD, digital versatile disk), memoria flash, memoria o dispositivos de memoria. Un producto de programa informático puede incluir código y/o instrucciones legibles a máquina que pueden representar un procedimiento, una función, un subprograma, un programa, una rutina, una subrutina, un módulo, un paquete de software, una clase o cualquier combinación de instrucciones, estructuras de datos o declaraciones de programa. Un segmento de código se puede acoplar a otro segmento de código o a un circuito de hardware mediante pasar y/o recibir información, datos, argumentos, parámetros o contenidos de memoria. La información, argumentos, parámetros, datos, etc. se pueden pasar, reenviar o transmitir a través de cualquier medio adecuado incluyendo compartición de memoria, transferencia de mensajes, transferencia de testigos, transmisión de red, etc.
Además, las realizaciones se pueden implementar mediante hardware, software, software inalterable, software intermedio, microcódigo, lenguajes de descripción de hardware o cualquier combinación de los mismos. Cuando se implementan en software, software inalterable, software intermedio o microcódigo, el código de programa o los segmentos de programa para llevar a cabo las tareas necesarias (por ejemplo, un producto de programa informático) se pueden almacenar en un medio legible a máquina. Uno o varios procesadores pueden llevar a cabo las tareas necesarias.
Los sistemas representados en algunas de las figuras se pueden disponer en diversas configuraciones. En algunas realizaciones, los sistemas se pueden configurar como un sistema distribuido donde uno o varios componentes del sistema están distribuidos a través de una o varias redes en un sistema informático en la nube.
La figura 1 muestra un diagrama de bloques de un hardware de ejemplo para una arquitectura de ordenador independiente 100, que puede ser utilizada para contener y/o implementar las instrucciones de programa de realizaciones del sistema de la presente invención. Más específicamente, la arquitectura 100 puede estar incluida dentro de un nodo de una red de comunicaciones, tal como se describe más adelante con respecto a las figuras 2 a 23. Un bus 152 puede servir como la autopista de información que interconecta los otros componentes de hardware mostrados. Un sistema de procesamiento 154 denominado CPU (central processing unit, unidad central de proceso) (por ejemplo, uno o varios procesadores informáticos) puede realizar cálculos y operaciones lógicas necesarias para ejecutar un programa. Un medio de almacenamiento legible por ordenador, tal como una memoria de sólo lectura (ROM, read only memory) 156 y una memoria de acceso aleatorio (RAM, random access memory) 158, puede estar en comunicación con el sistema de procesamiento 154 y puede contener una o varias instrucciones de programación. Opcionalmente, las instrucciones de programa se pueden almacenar en un medio de almacenamiento legible por ordenador, tal como un disco magnético, un disco óptico, un dispositivo de memoria grabable, memoria flash u otro medio de almacenamiento físico. Las instrucciones informáticas pueden asimismo comunicarse por medio de transmisión de comunicaciones, flujo de datos, o una onda portadora modulada.
Un controlador de disco 160 interconecta una o varias unidades de disco opcionales con el sistema de bus 152. Estás unidades de disco pueden ser unidades de disco flexible externas o internas, tal como 162, unidades de CD-ROM, CD-R, CD-RW o DVD externas o internas, tal como 164, o discos duros externos o internos 166. Tal como se ha indicado anteriormente, estas diversas unidades de disco y controladores de disco son dispositivos opcionales.
Cada uno de los gestores de elementos, memorias tampón de datos en tiempo real, transportadores, procesador de entrada de archivos, cargador de memoria de acceso compartido de índice de base de datos, memoria tampón de datos de referencia y gestores de datos pueden incluir una aplicación de software almacenada en una o varias de las unidades de disco conectadas al controlador de disco 160, la ROM 156 y/o la RAM 158. El sistema de procesamiento 154 puede acceder a cada componente cuando sea necesario.
Una interfaz de visualización 168 puede permitir que se visualice información del bus 156 en un visualizador 170 en formato de audio, gráfico o alfanumérico. La comunicación con dispositivos externos se puede producir opcionalmente utilizando varios puertos de comunicaciones 178.
Además de los componentes estándar de tipo informático, el hardware puede incluir asimismo dispositivos de entrada de datos, tales como un teclado 172, u otro dispositivo de entrada 174, tal como un micrófono, mando a distancia, teclado táctil, teclado numérico, lápiz, sensor de movimiento y/o gestual, sensor de localización, cámara fotográfica y/o de video, puntero, ratón y/o palanca de mando.
La presente invención se refiere a una tecnología informática para tolerar fallos en una red de comunicaciones. Específicamente, se dan a conocer varias técnicas y sistemas para detectar un error o un fallo mediante un nodo en una red de nodos informáticos en una red de comunicaciones, ajustar la red para evitar un fallo de la red y adoptar una acción en base al fallo. Más específicamente, las realizaciones de los procedimientos y sistemas descritos en la
presente memoria incluyen identificar o detectar un fallo de un nodo de control principal en una red de comunicaciones, y utilizar el estado de la red o información de punto de control para permitir que un nodo de respaldo tome el relevo como nodo de control principal. El nuevo nodo de control principal puede a continuación controlar los nodos de trabajo conectados al mismo, para completar el proyecto que está siendo realizado por la red. Las realizaciones alternativas pueden incluir identificar o detectar un fallo de un nodo de trabajo en una red de comunicaciones, y utilizar el estado de la red o información de punto de control para permitir a otro nodo de trabajo, bajo el control y supervisión de un nodo de control, encargase del trabajo que está siendo realizado por el nodo de trabajo que ha fallado. El trabajo se puede redistribuir entre los nodos de trabajo operativos. Realizaciones alternativas incluyen la utilización de umbrales para determinar cuándo, después de una cantidad predeterminada de tiempo, se debería establecer o asumir que un nodo ha fallado. Dicha determinación puede permitir que un nodo de control de respaldo tome el relevo de un nodo de control principal que ha fallado, o que un nodo de control redistribuya trabajo que está siendo realizado por un nodo de trabajo que ha fallado, a otro nodo de trabajo. Los nodos dentro de la red de comunicaciones pueden ser capaces de detectar una jerarquía o llevar a cabo otros procedimientos para determinar qué nodos deberían intervenir después de un fallo. Dichas realizaciones de la presente tecnología se describen en la presente memoria con respecto a las figuras 2 a 23.
Se describen diversas redes de comunicaciones descritas en la presente memoria, incluyendo uno o varios nodos de control (por ejemplo, un nodo de control principal, un nodo de control de respaldo, etc.) y uno o varios nodos de trabajo. Un nodo puede ser, por ejemplo, un dispositivo informático tal como un ordenador, o un tipo diferente dispositivo de red o electrónico tal como, por ejemplo, un servidor o un encaminador. Los nodos de control pueden contener conocimiento del estado de los nodos en la red (por ejemplo, información del estado de la red), aceptar solicitudes de trabajo de clientes, subdividir el trabajo entre nodos de trabajo (tanto inicialmente como después de un fallo de nodo de trabajo), coordinar los nodos de trabajo, entre otras responsabilidades. Los nodos de trabajo pueden aceptar solicitudes de trabajo de un nodo de control y proporcionar al nodo de control los resultados del trabajo realizado por el nodo de trabajo. Una red se puede iniciar a partir de un único nodo (por ejemplo, una máquina, ordenador, servidor, etc.). Este primer nodo se puede asignar como, o puede comenzar como el nodo de control principal que controlará cualesquiera nodos adicionales que entren en la red.
Para añadir otro nodo o máquina a la red, el nodo de control principal puede abrir un par de conexiones de escucha, por ejemplo. Las conexiones se pueden utilizar por diferentes razones relacionadas con los trabajos del nodo de control. La primera de estas conexiones puede ser utilizada para aceptar solicitudes de trabajo de clientes, y la segunda conexión se puede utilizar para aceptar conexiones de otros nodos de la red (por ejemplo, nodos de trabajo u otros nodos de control). El nodo de control principal puede estar dotado de una lista de otros nodos (por ejemplo, otras máquinas, ordenadores, servidores) que participarán en la red, y el rol que cada nodo ocupará en la red. El nodo de control principal puede mantener una base de datos de todos los nodos configurados en la red. La base de datos puede adoptar diversas formas incluyendo, por ejemplo, una tabla de memoria, un simple archivo de texto, un archivo completo de configuración, en un servidor de configuración, entre otros. Después del arranque del nodo de control principal (por ejemplo, el primer nodo en la red), el nodo de control principal puede utilizar un protocolo de red (por ejemplo, protocolo Shell Protocol, o SSH) para iniciar el proceso de servidor en cada uno de los otros nodos de la red. Parámetros en línea de comandos, por ejemplo, pueden informar a cada nodo de uno o varios elementos de información, tales como: el rol que el nodo tendrá en la red, el nombre de anfitrión del nodo de control principal, el número de puerto en el que el nodo de control principal acepta conexiones de nodos pares, entre otros. La información se puede proporcionar asimismo en un archivo de configuración, transmitido sobre un túnel de intérprete de comandos, recuperado de servicio de configuración, entre otros. Aunque las otras máquinas en la red pueden no conocer inicialmente la configuración de la red, la información puede asimismo ser enviada a cada uno de los otros nodos por el nodo de control principal. A continuación se pueden enviar asimismo actualizaciones de la información de la red a dichos nodos.
Para cualquier nodo de control aparte del nodo de control principal añadido a la red, el nodo de control puede abrir tres conexiones. La primera conexión puede aceptar solicitudes de trabajo de clientes, la segunda conexión puede aceptar conexiones de otros miembros de la red, y la tercera conexión puede conectar (por ejemplo, permanentemente) al nodo de control principal. Cuando un nodo de control (por ejemplo, el nodo de control principal) recibe una conexión de otro nodo de control, comprueba en primer lugar si el nodo par está en la lista de nodos configurados en la red. Si no está en la lista, el nodo de control puede interrumpir la conexión. Si está en la lista, puede intentar entonces autenticar la conexión. La autenticación de un nodo se describe en mayor detalle en la presente memoria con respecto a las figuras 16 y 17. Si la autenticación es satisfactoria, el nodo de autenticación puede transmitir información a su par, tal como el número de puerto en el que el nodo está escuchando conexiones, el nombre de anfitrión del nodo, información sobre cómo autenticar el nodo, entre otra información. Cuando un nodo, tal como el nuevo nodo de control, recibe información sobre otro nodo activo, confirmará si ya tiene una conexión con dicho otro nodo. Si no tiene una conexión con ese nodo, puede establecer a continuación una conexión con dicho nodo de control.
Cualquier nodo de trabajo añadido a la red puede establecer una conexión con el nodo de control principal y cualesquiera otros nodos de control en la red. Después de establecer la conexión, se puede autenticar en la red (por ejemplo, cualesquiera nodos de control, incluyendo tanto el principal como los de respaldo, o un servidor o un usuario que controla la red). La autenticación de un nodo se describe en mayor detalle en la presente memoria con
respecto a las figuras 16 y 17. Después de una autenticación satisfactoria, el nodo de trabajo puede aceptar información de configuración desde el nodo de control.
La red puede añadir nuevas máquinas en cualquier momento, iniciándose en cualquier nodo de control. Después de añadir un nuevo nodo a la red, el nodo de control puede en primer lugar añadir el nuevo nodo a su lista de nodos de la red. El nodo de control puede asimismo notificar a continuación a todos los demás nodos de control sobre el nuevo nodo. Los nodos que recibe la notificación pueden acusar recibo de que han actualizado su información de configuración.
La figura 2 muestra una red de comunicaciones 200 que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 200 incluye el nodo de control 202, identificado como nodo de control A. La red de comunicaciones 200 incluye asimismo uno o varios nodos de trabajo. Tal como se muestra en la figura 2, hay seis nodos de trabajo, el nodo de trabajo 210 (identificado como nodo de trabajo 1), el nodo de trabajo 212 (identificado como nodo de trabajo 2), el nodo de trabajo 214 (identificado como nodo de trabajo 3), el nodo de trabajo 216 (identificado como nodo de trabajo n - 2), el nodo de trabajo 218 (identificado como nodo de trabajo n - 1) y el nodo de trabajo 220 (identificado como nodo de trabajo n). Aunque la figura 2 muestra seis nodos de trabajo, una red de comunicaciones de acuerdo con realizaciones de la presente tecnología puede incluir más o menos de seis nodos de trabajo. Por ejemplo, una red de comunicaciones puede incluir uno, dos o cualquier otro número de nodos de trabajo. Cada nodo de trabajo dentro de la red de comunicaciones 200 está conectado (de manera cableada o inalámbrica, y directa o indirectamente) al nodo de control 202. Por lo tanto, cada nodo de trabajo puede recibir información del nodo de control 202 (por ejemplo, una instrucción para realizar trabajo en un proyecto) y puede transmitir información al nodo de control 202 (por ejemplo, un resultado de un trabajo realizado sobre un proyecto). Sin embargo, en determinadas realizaciones, los nodos de trabajo pueden, por ejemplo, no estar conectados (comunicativamente o de otro modo) a otros nodos de trabajo. Por ejemplo, los nodos de trabajo pueden ser capaces solamente de comunicar con el nodo de control que los controla, y pueden no ser capaces de comunicar con otros nodos de trabajo en la red de comunicaciones, ya sean otros nodos de trabajo controlados por el nodo de control que controla el nodo de trabajo o nodos de trabajo que están controlados directamente por otros nodos de control en la red de comunicaciones. En realizaciones alternativas, los nodos de trabajo pueden comunicar entre sí (ya sea directa o indirectamente). Por ejemplo, los nodos de trabajo pueden transmitir datos entre sí en relación con un trabajo que se está realizando o con una tarea individual dentro de un trabajo que está siendo realizado por dicho nodo de trabajo. Alternativamente, los nodos de trabajo pueden comunicar entre sí para llevar a cabo operaciones de difusión o reducción, por ejemplo, tal como las discutidas en la presente memoria con respecto a las figuras 22 y 23, respectivamente.
Un nodo de control, tal como un nodo de control 202, puede conectar con un dispositivo externo con el que el nodo de control puede comunicar (por ejemplo, un usuario de la red, tal como un servidor o un ordenador, puede conectar con un controlador principal de la red). Por ejemplo, un servidor o un ordenador puede conectar con un nodo de control 202 y puede transmitir un proyecto o trabajo al nodo. El proyecto puede incluir un conjunto de datos. El conjunto de datos puede ser de cualquier tamaño. Una vez que el nodo de control recibe un proyecto de este tipo que incluye un gran conjunto de datos, el nodo de control puede distribuir el conjunto de datos, o proyectos relacionados con el conjunto de datos para que sean realizados por los nodos de trabajo. Alternativamente, para un proyecto que incluye un gran conjunto de datos, el conjunto de datos puede ser recibido o almacenado por una máquina aparte del nodo de control (por ejemplo, un nodo de datos Hadoop). Dicha estructura puede impedir un problema de cuello de botella.
Cuando se inicia un proyecto en la red de comunicaciones 200, el nodo de control 202 controla que se lleve a cabo el trabajo para el proyecto (por ejemplo, sobre el conjunto de datos). Puesto que los nodos de trabajo en la red de comunicaciones 200 llevarán a cabo el trabajo para completar cada tarea dentro del proyecto, el nodo de control 202 asigna trabajo del proyecto a cada nodo de trabajo. El nodo de control coordina el trabajo, de tal modo que cada nodo de trabajo tiene una parte del proyecto que el nodo de trabajo puede manejar y puede ejecutar, y en la cantidad de tiempo deseada por el usuario o por el nodo de control. Por ejemplo, el nodo de control puede distribuir trabajo a los nodos de trabajo en base a diversos factores, tales como qué subconjuntos o partes del proyecto pueden ser completadas de manera más eficiente y en la cantidad correcta de tiempo. Por ejemplo, un nodo de trabajo puede llevar a cabo el análisis sobre una parte de los datos que son ya locales (por ejemplo, están almacenados) en el nodo de trabajo. El nodo de control coordina asimismo los resultados del trabajo realizado por cada nodo de trabajo después de que cada nodo de trabajo ejecute y complete su trabajo. Por ejemplo, el nodo de control puede recibir un resultado de uno o varios nodos de trabajo, y el nodo de control puede organizar los resultados recibidos y compilarlos para producir un resultado completo para el proyecto recibido del usuario final.
Los nodos de trabajo dentro de la red de comunicaciones 200 realizan trabajos sobre la parte del proyecto que es asignado al nodo de trabajo por el nodo de control 202. Después de que el nodo de trabajo recibe una instrucción o proyecto (o una parte de un proyecto) del nodo de control, el nodo de trabajo ejecuta la instrucción asignada, y puede producir un resultado. El nodo de trabajo puede a continuación transmitir de vuelta el resultado al nodo de control 202 (o a cualquier otro dispositivo de red o dispositivo externo designado por la asignación o las instrucciones del nodo de control 202 que se han distribuido con la asignación, o después de la misma).
Cuando un nodo se une a la red de comunicaciones 200 (por ejemplo, cuando un nodo se enciende o se conecta a un nodo existente en la red, o ambas cosas), se asigna al nodo (por ejemplo, mediante un sistema operativo de la red) un identificador único universalmente (UUID, universally unique identifier). Este identificador único puede ayudar a otros nodos y entidades externas (dispositivos, usuarios, etc.) para identificar el nodo y diferenciarlo de otros nodos. Cuando un nodo está conectado a la red, el nodo puede compartir su identificador único con los otros nodos de la red. Dado que cada nodo puede compartir su identificador único, cada nodo puede conocer el identificador único de cada uno de los otros nodos en la red. Los identificadores únicos pueden asimismo indicar una jerarquía de cada uno de los nodos (por ejemplo, nodos de control de respaldo) dentro de la red. Por ejemplo, los identificadores únicos de cada uno de los nodos de control de respaldo se pueden almacenar en una lista de nodos de control de respaldo para indicar un orden en el que los nodos de control de respaldo relevarán a un nodo de control principal en fallo, para convertirse en un nuevo nodo de control principal. Sin embargo, una jerarquía de los nodos se puede determinar asimismo utilizando procedimientos diferentes a utilizar identificadores únicos de los nodos. Por ejemplo, la jerarquía puede estar predeterminada, o se puede asignar en base a otros factores predeterminados.
Cuando se presenta un proyecto para ejecución (por ejemplo, mediante un cliente o un controlador de la red), este se puede asignar a un conjunto de nodos. Uno de los nodos de control se puede asignar como un nodo de control principal para el trabajo. Cualesquiera nodos de control restantes se pueden asignar como nodos de control de respaldo para el proyecto. Todos los nodos de trabajo activos pueden ser asignados al proyecto. Sin embargo, en algunas realizaciones, se puede asignar un subconjunto de nodos de trabajo al proyecto, para proyectos que requieren menos recursos. Después de que se asignen nodos a un proyecto, se puede crear una estructura de datos (por ejemplo, un comunicador). El comunicador puede ser utilizado por el proyecto para información que tiene que ser compartida entre el código de proyecto que se ejecuta en cada nodo. Se puede crear una etiqueta de comunicación en cada nodo. Una etiqueta es, por ejemplo, una referencia a un comunicador que es válida dentro de un único proceso de un único nodo, y la etiqueta puede ser utilizada cuando se solicitan comunicaciones entre nodos.
Dentro de un comunicador, se puede asignar un rango a cada nodo de trabajo y al nodo de control principal. Cada rango puede ser, por ejemplo, un entero no negativo. Cuando se combina con una etiqueta de comunicador, un rango de nodo puede ser utilizado para comunicar con el código que se ejecuta en el mismo proyecto en otro nodo. A diferencia de un identificador único asignado al nodo, un rango puede ser único solamente dentro de un comunicador. Por lo tanto, el mismo número de rango puede hacer referencia a diferentes nodos en la red a través de diferentes proyectos. Cuando el código de proyecto define un nodo específico en la red, puede utilizar el UUID que se asigna a dicho nodo dado que dichos UUID pueden ser permanentes.
Tal como se ha indicado, la red de comunicaciones 200 incluye un único nodo de control, el nodo de control 202. Por lo tanto, si el nodo de control 202 falla, por ejemplo si el nodo de control 202 se apaga, se rompe o falla de otro modo o deja de estar disponible para controlar y coordinar los nodos de trabajo que están conectados al mismo, la red de comunicaciones 200 puede fallar a continuación. En otras palabras, si el nodo de control 202 falla, entonces cualquier proyecto o trabajo que se ejecute en la red de comunicaciones 200 puede fallar y puede no completarse. Aunque el proyecto se puede ejecutar de nuevo, dicho fallo puede provocar un retardo (un retardo grave en algunos casos, tal como un retardo de una noche) en la finalización del proyecto. Por lo tanto, un sistema tolerante a fallos con múltiples nodos de control, incluyendo un nodo de control de respaldo, puede ser beneficioso.
La figura 3 muestra una red de comunicaciones 300 que incluye dos nodos de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 300 incluye el nodo de control 302 y el nodo de control 304. El nodo de control 302 y el nodo de control 304 están conectados comunicativamente por medio del camino de comunicaciones 351. Por lo tanto, el nodo de control 302 y el nodo de control 304 pueden transmitir entre sí y recibir información, incluyendo información relacionada con la red de comunicaciones o notificaciones. Aunque la red de comunicaciones 300 se muestra en la figura 3 incluyendo dos nodos de control, la red de comunicaciones puede incluir más de dos nodos de control (por ejemplo, tal como se muestra en la figura 7) o menos de dos nodos de control (tal como se muestra, por ejemplo, en la figura 5).
La red de comunicaciones 300 incluye asimismo uno o varios nodos de trabajo. En la figura 3 se muestran seis nodos de trabajo: el nodo de trabajo 310 (o nodo de trabajo 1), el nodo de trabajo 312 (o nodo de trabajo 2), el nodo de trabajo 314 (o nodo de trabajo 3), el nodo de trabajo 316 (o nodo de trabajo n-2), el nodo de trabajo 318 (o nodo de trabajo n-1) y el nodo de trabajo 320 (o nodo de trabajo n). Aunque la figura 3 muestra seis nodos de trabajo, una red de comunicaciones de acuerdo con realizaciones de la presente tecnología puede incluir más o menos de seis nodos de trabajo. Por ejemplo, una red de comunicaciones puede incluir uno, dos o cualquier otro número de nodos de trabajo. Por ejemplo, el número de nodos de trabajo incluidos en una red de comunicaciones puede depender de cómo de grande es el proyecto o el conjunto de datos que está siendo implementado por la red de comunicaciones. El número de nodos de trabajo incluidos en una red de comunicaciones puede depender asimismo de otros factores, tales como la capacidad de cada nodo de trabajo, el tiempo en el que la red de comunicaciones querría completar el proyecto, entre otros.
Tal como se ha señalado, cada nodo de trabajo dentro de la red de comunicaciones 300 puede estar conectado al nodo de control 302 (aunque, en otras realizaciones, solamente algunos nodos de trabajo pueden estar conectados al nodo de control 302). Por lo tanto, cada nodo de trabajo puede recibir información del nodo de control 302 (por
ejemplo, una instrucción para realizar trabajo en un proyecto) y puede transmitir información al nodo de control 302 (por ejemplo, un resultado de un trabajo realizado sobre un proyecto). Sin embargo, en ciertas realizaciones, los nodos de trabajo no se pueden conectar (comunicativamente o de otro modo) a otros nodos de trabajo. Por ejemplo, los nodos de trabajo se pueden conectar solamente al nodo de control que los controla, y no se pueden conectar a otros nodos de trabajo en la red de comunicaciones, compartan o no un nodo de control. Cada nodo de trabajo dentro de la red de comunicaciones 300 está conectado asimismo al nodo de control 304. Por lo tanto, cada nodo de trabajo puede recibir información del nodo de control 304 y puede transmitir información al nodo de control 304. Un nodo de control, tal como el nodo de control 302, puede ser designado como el nodo de control principal. Un servidor, ordenador u otro dispositivo externo puede conectar al nodo de control principal, tal como el nodo de control 302. Una vez que el nodo de control recibe un proyecto, el nodo de control principal puede distribuir partes del proyecto a sus nodos de trabajo para su ejecución. Por ejemplo, cuando se inicia un proyecto en la red de comunicaciones 300, el nodo de control principal 302 controla que se realiza el trabajo para el proyecto, con el fin de completar el proyecto según se ha solicitado u ordenado. Dado que los nodos de trabajo en la red de comunicaciones 300 realizarán el trabajo para completar cada tarea dentro del proyecto, el nodo de control principal 302 puede asignar trabajo del proyecto a cada nodo de trabajo. El nodo de control principal coordina el trabajo, de tal modo que cada nodo de trabajo tiene una parte del proyecto que el nodo de trabajo puede gestionar y puede ejecutar completamente de manera eficiente. El nodo de control principal coordina y procesa asimismo los resultados del trabajo realizado por cada nodo de trabajo después de que cada nodo de trabajo ejecute y complete su trabajo. Por ejemplo, el nodo de control principal puede recibir un resultado de uno o varios nodos de trabajo, y el nodo de control puede organizar (por ejemplo, reunir y ensamblar) los resultados recibidos y compilarlos para producir un resultado completo para el proyecto recibido del usuario final.
Otro nodo de control, tal como el nodo de control 304, puede ser designado como el nodo de control de respaldo. El nodo de control de respaldo 304 no puede controlar ninguna parte de un proyecto que está siendo implementado por la red de comunicaciones 300. En cambio, el nodo de control de respaldo 304 puede servir como un respaldo para el nodo de control principal 302. Por ejemplo, el nodo de control de respaldo 304 puede ser capaz de tomar el relevo como nodo de control principal 302, si el nodo de control principal fallara. El nodo de control principal 302 puede, por ejemplo, transmitir una o varias comunicaciones al nodo de control de respaldo 304 (y, por ejemplo, a otros nodos de control o de trabajo dentro de la red de comunicaciones). Dichas comunicaciones se pueden enviar periódicamente, a intervalos de tiempo fijos, entre fases fijas conocidas de la ejecución del proyecto, entre otros protocolos. Las comunicaciones transmitidas por el nodo de control principal 302 pueden ser de diversos tipos y pueden incluir varios tipos de información. Por ejemplo, el nodo de control principal 302 puede transmitir instantáneas (por ejemplo, información de estado) de la red de comunicaciones, de tal modo que el nodo de control de respaldo 304 tiene siempre una instantánea reciente de la red de comunicaciones. La instantánea o el estado de la red puede incluir la estructura de la red (incluyendo, por ejemplo, los nodos de trabajo en la red, identificadores únicos de los nodos, o sus relaciones con el nodo de control principal), el estado de un proyecto (incluyendo, por ejemplo, el estado de cada parte de nodo de trabajo del proyecto), entre otra información relacionada con la red de comunicaciones o sus nodos. La instantánea puede incluir asimismo análisis o resultados recibidos de nodos de trabajo en la red de comunicaciones para cualquier parcial de las partes totales del proyecto. El nodo de control de respaldo 304 puede recibir y almacenar los datos de respaldo recibidos del nodo de control principal 302. El nodo de control de respaldo 304 puede solicitar dicha instantánea (u otra información) del nodo de control principal, o el nodo de control principal puede enviar periódicamente dicha información al nodo de control de respaldo.
Tal como se ha indicado, los datos de respaldo pueden permitir que el nodo de control de respaldo tome el relevo como nodo de control principal si el nodo de control principal falla. Más específicamente, los datos de respaldo pueden permitir que el nodo de control de respaldo continúe el proyecto que está siendo implementado y controlado por el nodo de control principal, después de un fallo del nodo de control principal sin tener que volver a empezar el proyecto desde cero. Si el nodo de control principal falla, el nodo de control de respaldo 304 puede recuperar la versión más reciente de la instantánea recibida desde el nodo de control principal 302 y utilizar la instantánea para continuar el proyecto desde la fase del proyecto indicada por los datos de respaldo.
El nodo de control de respaldo 304 puede utilizar varios procedimientos para determinar qué nodo de control principal 302 ha fallado. En un ejemplo de dicho procedimiento, el nodo de control principal 302 puede transmitir una comunicación al nodo de control de respaldo 304 que indica que el nodo de control principal 302 está funcionando y no ha fallado, tal como una comunicación de latido del corazón. Este tipo de comunicación puede ser transmitida por el nodo de control principal periódicamente (por ejemplo, una vez cada segundo, una vez cada cinco segundos, una vez cada milisegundo o en cualquier otro intervalo). El nodo de control de respaldo 304 puede ser capaz de determinar que el nodo de control principal 302 ha fallado si el nodo de control de respaldo 304 no ha recibido una comunicación de latido del corazón durante un cierto periodo de tiempo determinado (es decir, un umbral de tiempo o de latido del corazón) o, en otras palabras, no ha recibido una comunicación de latido del corazón que esperaba recibir antes de que haya transcurrido una determinada cantidad de tiempo. Por ejemplo, el nodo de control principal 302 puede transmitir un mensaje de latido del corazón cada sesenta segundos. Si el nodo de control de respaldo 304 no ha recibido un mensaje de latido del corazón del nodo de control principal 302 durante un periodo de tiempo de más de sesenta segundos, por ejemplo setenta segundos, entonces el nodo de control de respaldo 304 puede determinar o asumir que el nodo de control principal 302 ha fallado.
Como otro ejemplo de un procedimiento que el nodo de control de respaldo 304 puede utilizar para determinar o asumir que el nodo de control principal 302 ha fallado, el nodo de control de respaldo 304 puede recibir una comunicación de uno o varios nodos de trabajo, que pueden estar conectados tanto al nodo de control principal 302 como al nodo de control de respaldo 304, de que el nodo de control principal 302 ha fallado. Por ejemplo, un nodo de trabajo puede haber reconocido que el nodo de control principal 302 no ha podido comunicar con el nodo de trabajo. Por ejemplo, el nodo de control principal 302 puede no haber respondido a una consulta o solicitud transmitida por el nodo de trabajo al nodo de control principal. En otro ejemplo, el nodo de control principal 302 puede no haber transmitido un mensaje de acuse de recibo (por ejemplo, ACK) de vuelta al nodo de trabajo, después de que el nodo de trabajo enviara una comunicación (por ejemplo, una comunicación que incluye resultados de una parte de un trabajo en el que está trabajando el nodo de trabajo). El nodo de control de respaldo 304 puede asimismo, por ejemplo, haber recibido una comunicación de que el nodo de control principal ha fallado, desde otro dispositivo, tal como un dispositivo externo a la red de comunicaciones. Por ejemplo, un dispositivo externo (por ejemplo, un controlador) puede haber recibido una indicación de uno o varios nodos de trabajo de que el nodo de control principal ha fallado, y el dispositivo externo puede haber transmitido una comunicación al nodo de control de respaldo de que el nodo de control principal ha fallado. El nodo de control de respaldo 304 puede asimismo haber recibido directamente una indicación del nodo de control principal 302 (o de cualquier otro lugar), de que el nodo de control principal ha fallado o va a hacerlo. Por ejemplo, el nodo de control principal (u otro dispositivo) puede ser capaz de predecir, en base a datos históricos o a patrones detectados, que el nodo de control principal va a fallar. Sin embargo, antes de que falle, el nodo de control principal puede transmitir (por ejemplo, difundir, o por medio de mensajes directos a otros nodos) una comunicación que incluye una indicación de que ha fallado o va a hacerlo.
Tal como se ha indicado, después de que el nodo de control de respaldo 304 detecte, o sea notificado de que el nodo de control principal 302 ha fallado, el nodo de control de respaldo 304 puede asumir las responsabilidades del nodo de control principal. Además, el nodo de control 304 puede continuar el proyecto que estaba siendo implementado por la red de comunicaciones 300 y controlado por el nodo de control 302, mediante utilizar datos (por ejemplo, información de estado) recibidos del nodo de control principal antes de que este fallara. De este modo, la red de comunicaciones puede ser capaz de evitar el fallo del proyecto debido a un fallo en el nodo de control principal.
La figura 4 muestra una red de comunicaciones 400 que incluye tres nodos de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 400 incluye el nodo de control 402, el nodo de control 404 y el nodo de control 406. El nodo de control 402 y el nodo de control 404 están conectados comunicativamente por medio del camino de comunicaciones 451. Por lo tanto, el nodo de control 402 y el nodo de control 404 pueden transmitir información, por medio del camino de comunicaciones 451, que incluye información relacionada con la red de comunicaciones o notificaciones, y recibir información mutuamente. El nodo de control 402 y el nodo de control 406 están conectados comunicativamente por medio del camino de comunicaciones 453. Por lo tanto, el nodo de control 402 y el nodo de control 406 pueden transmitir información, por medio del camino de comunicaciones 453, que incluye información relacionada con la red de comunicaciones o notificaciones, y recibir información mutuamente. El nodo de control 404 y el nodo de control 406 están conectados comunicativamente por medio del camino de comunicaciones 455. Por lo tanto, el nodo de control 404 y el nodo de control 406 pueden transmitir información, por medio del camino de comunicaciones 455, que incluye información relacionada con la red de comunicaciones o notificaciones, y recibir información mutuamente. Aunque la red de comunicaciones 600 se muestra en la figura 6 incluyendo tres nodos de control, la red de comunicaciones puede incluir más de tres nodos de control o menos de dos nodos de control (tal como se muestra, por ejemplo, en las figuras 5 y 6).
La red de comunicaciones 400 incluye asimismo uno o varios nodos de trabajo. En la figura 4 se muestran seis nodos de trabajo: el nodo de trabajo 410 (o nodo de trabajo 1), el nodo de trabajo 412 (o nodo de trabajo 2), el nodo de trabajo 414 (o nodo de trabajo 3), el nodo de trabajo 416 (o nodo de trabajo n-2), el nodo de trabajo 418 (o nodo de trabajo n-1) y el nodo de trabajo 420 (o nodo de trabajo n). Aunque la figura 4 muestra seis nodos de trabajo, una red de comunicaciones de acuerdo con realizaciones de la presente tecnología puede incluir más o menos de seis nodos de trabajo. Por ejemplo, una red de comunicaciones puede incluir uno, dos o cualquier otro número de nodos de trabajo. Por ejemplo, el número de nodos de trabajo incluidos en una red de comunicaciones puede depender de cuán grande es el proyecto o el conjunto de datos que está siendo implementado por la red de comunicaciones. El número de nodos de trabajo incluidos en una red de comunicaciones puede depender asimismo de otros factores, tales como la capacidad de cada nodo de trabajo, el tiempo designado para que la red de comunicaciones complete el proyecto, entre otros.
De manera similar al nodo de control 602 en la figura 6, un nodo de control, tal como el nodo de control 402, se puede designar como el nodo de control principal en la red de comunicaciones 400. El nodo de control principal 402 puede estar configurado para tener un rol similar (y realizar funciones iguales o similares) en la red de comunicaciones 400 al nodo de control principal 602 en la red de comunicaciones 600 que se ha descrito con respecto a la figura 6 (y al nodo de control 502 en la figura 5). Los otros dos nodos de control en la red de comunicaciones 400, tales como los nodos de control 404 y 406, se pueden designar como nodos de control de respaldo. Los nodos de control 404 y 406 se pueden denominar en la presente memoria nodos de control de respaldo. Sin embargo, los nodos de control 404 y 406 pueden ser nodos de control principal en otras realizaciones.
En una realización de este tipo en la que los nodos de control 404 y 406 son nodos de control de respaldo, cada uno de los nodos de control de respaldo 404 y 406 pueden realizar funciones similares, ya sea individualmente o en combinación, al nodo de control de respaldo 304 en la red de comunicaciones 300. Por ejemplo, los nodos de control de respaldo 404 y 406 pueden recibir cada uno información relativa a la red de comunicaciones 400, incluyendo instantáneas periódicas u otra información sobre la red de comunicaciones, desde el nodo de control principal 402.
Cualquiera del nodo de control de respaldo 404 o el nodo de control de respaldo 406 pueden, de manera similar al nodo de control de respaldo 304 en la red de comunicaciones 300, relevar o sustituir el nodo de control principal 402 si el nodo de control principal 402 falla. El nodo de control de respaldo que releva un nodo de control principal 402 en fallo puede hacerlo de tal modo que puede llevar a cabo funciones similares al nodo de control de respaldo 304 en la red de comunicaciones 300 después de un fallo del nodo de control principal 302, y por lo tanto puede continuar las funciones o los proyectos que estaban siendo realizados por el nodo de control principal 402 en fallo. Por ejemplo, el nodo de control de respaldo, ya sea el nodo de control de respaldo 404 o el nodo de control de respaldo 406, puede controlar los nodos de trabajo que estaban conectados al nodo de control principal 402 antes de que el nodo de control principal 402 fallara (y que, tal como se ha indicado, pueden estar conectados asimismo a nodos de control 404 y 406) y controlar el proyecto o proyectos que están siendo realizados por estos nodos de trabajo.
Se pueden llevar a cabo diferentes procedimientos para determinar qué nodo de control de respaldo de un conjunto de nodos de control de respaldo (por ejemplo, los nodos de control de respaldo 404 y 406) relevará el nodo de control principal en fallo 402 y se convertirá en el nuevo nodo de control principal. Por ejemplo, el nuevo nodo de control principal se puede elegir en base a los identificadores únicos asignados a cada nodo de control de respaldo (por ejemplo, cualquier nodo de control de respaldo que tenga el identificador único mayor o menor). Semejante clasificación de identificadores únicos se puede denominar una "jerarquía" de los nodos de control de respaldo. En una realización alternativa, un nodo de control de respaldo puede ser asignado para ser el nuevo nodo de control principal por otro dispositivo en la red de comunicaciones (por ejemplo, el nodo de control principal averiado 402) o desde un dispositivo externo (por ejemplo, una infraestructura de sistema o un usuario final, tal como un servidor o un ordenador, que controla la red de comunicaciones). En otra realización alternativa, el nodo de control de respaldo que toma el relevo como el nuevo nodo de control principal se puede designar en base a estadísticas de ancho de banda u otras relativas a la red de comunicaciones. Por ejemplo, la decisión se puede basar en qué nodo tiene más ancho de banda, qué nodo incluye una versión más reciente de una instantánea de la red de comunicaciones, qué nodo está mejor equipado (por ejemplo, utilizando estadísticas sobre el nodo o el resto de la red de comunicaciones) para manejar el proyecto actual que está siendo ejecutado por la red de comunicaciones, entre otros. Dado que los nodos de control de respaldo pueden comunicar entre sí (por ejemplo, mediante caminos de comunicaciones 451, 453 y 455), se puede ejecutar un algoritmo interno, o se puede compartir información entre los nodos de control de respaldo, para designar uno de los nodos de control de respaldo como el nuevo nodo de control principal.
La figura 5 muestra una red de comunicaciones 500 que incluye dos nodos de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 500 incluye el nodo de control principal 502 y el nodo de control de respaldo 504. El nodo de control principal 502 y el nodo de control de respaldo 504 pueden tener roles similares en la red de comunicaciones 500 a los nodos de control 602 y 604, respectivamente, en la red de comunicaciones 600 de la figura 6. El nodo de control principal 502 y el nodo de control de respaldo 504 están conectados comunicativamente por medio del camino de comunicaciones 551. Por lo tanto, el nodo de control principal 502 y el nodo de control de respaldo 504 pueden transmitir información, que incluye información relacionada con la red de comunicaciones o notificaciones, y recibir información mutuamente. Aunque la red de comunicaciones 500 se muestra en la figura 5 incluyendo dos nodos de control, la red de comunicaciones puede incluir más de dos nodos de control (por ejemplo, tal como se muestra en la figura 4) o menos de dos nodos de control (tal como se muestra, por ejemplo, en la figura 5).
La red de comunicaciones 500 incluye asimismo uno o varios nodos de trabajo. En la figura 5 se muestran cuatro nodos de trabajo: el nodo de trabajo 510 (o nodo de trabajo 1), el nodo de trabajo 512 (o nodo de trabajo 2), el nodo de trabajo 514 (o nodo de trabajo 3) y el nodo de trabajo 516 (o nodo de trabajo 4. Aunque la figura 5 muestra cuatro nodos de trabajo, una red de comunicaciones de acuerdo con realizaciones de la presente tecnología puede incluir más o menos de cuatro nodos de trabajo.
Tal como se ha indicado, un nodo de control principal (por ejemplo, el nodo de control principal 502) puede transmitir instantáneas de la red de comunicaciones, de tal modo que un nodo de control de respaldo (por ejemplo, el nodo de control de respaldo 504) tiene siempre una instantánea reciente de la red de comunicaciones. Por ejemplo, tal como se muestra en la figura 5, el nodo de control principal 502 puede transmitir una instantánea 540 de la red de comunicaciones al nodo de control de respaldo 504. La instantánea puede incluir la estructura de la red incluyendo los nodos de trabajo en la red y sus relaciones con el nodo de control principal, el estado de un proyecto (incluyendo, por ejemplo, el estado de cada parte del nodo de trabajo del proyecto), entre otra información. La instantánea puede incluir asimismo análisis o resultados recibidos de nodos de trabajo en la red de comunicaciones para cualquier parcial de las partes totales del proyecto. La instantánea puede incluir asimismo cualquier otra información que ayude al nodo de control de respaldo a seguir procesando el trabajo a partir de un estado conocido del trabajo después de un fallo de nodo de control principal. El nodo de control de respaldo 504 puede recibir y almacenar la instantánea 540 recibida del nodo de control principal 502. El nodo de control de respaldo 504 puede iniciar una
recepción de una instantánea de la red de comunicaciones mediante solicitar dicha instantánea (u otra información) al nodo de control principal, o el nodo de control principal puede enviar periódicamente dicha información al nodo de control de respaldo. El nodo de control de respaldo 504 puede almacenar la instantánea 540 de almacenamiento, tal como en el almacenamiento local 525. El almacenamiento local 525 puede ser un almacenamiento a corto plazo, tal como memoria caché, o un almacenamiento más a largo plazo dentro del nodo de control de respaldo 504. En una realización alternativa, el nodo de control de respaldo 504 puede almacenar una instantánea 540 (u otros datos) en una ubicación remota. Por ejemplo, el nodo de control de respaldo 504 puede, después de recibir la instantánea 540 de la red de comunicaciones desde el nodo de control principal 502, transmitir la instantánea 540 a un almacenamiento externo al nodo de control de respaldo 504. El nodo de control de respaldo 504 puede a continuación, tras recibir o detectar una notificación de un fallo de un nodo de control principal, recuperar del almacenamiento una instantánea de la red almacenada, tal como la instantánea 540.
La figura 6 muestra una red de comunicaciones 600 que incluye dos nodos de control, incluyendo un nodo de control de respaldo con una instantánea de la red almacenada, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. Más específicamente, la figura 6 muestra que el nodo de control principal 602 puede fallar (indicado por líneas de trazos), y por lo tanto que los caminos de comunicaciones entre el nodo de control principal 602 y otros nodos en la red de comunicaciones (por ejemplo, el camino 651 entre el nodo de control principal 602 y el nodo de control de respaldo 604, así como los caminos entre el nodo de control principal 602 y los nodos de trabajo 610 a 616) se pueden interrumpir a causa de dicho fallo. Sin embargo, tal como se muestra en la red de comunicaciones 600, el nodo de control de respaldo 604 se puede conectar comunicativamente (por ejemplo, de manera cableada o inalámbrica) a cada uno de los nodos de trabajo dentro de la red de comunicaciones 600. Tal como se ha indicado, los datos de respaldo pueden permitir que el nodo de control de respaldo tome el relevo como nodo de control principal si el nodo de control principal falla. Más específicamente, los datos de respaldo pueden permitir que el nodo de control de respaldo continúe el proyecto que está siendo implementado y controlado por el nodo de control principal, después de un fallo del nodo de control principal sin tener que volver a empezar el proyecto desde cero. Si el nodo de control principal falla, el nodo de control de respaldo 504 puede recuperar la versión más reciente (u otra versión almacenada, si aplica) de la instantánea recibida desde el nodo de control principal 502 y utilizar la instantánea (y otros datos de respaldo) para continuar con el proyecto desde la fase del proyecto indicada por los datos de respaldo.
La figura 7 muestra una red de comunicaciones 700 que incluye dos nodos de control, incluyendo un nodo de control de respaldo con una instantánea de la red almacenada, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 700 es similar a la red de comunicaciones 600, pero muestra además que el nodo de control de respaldo 704 puede recibir una notificación de un fallo del nodo de control principal 702 procedente de diversas fuentes. Tal como se ha indicado, un nodo de control de respaldo (por ejemplo, el nodo de control de respaldo 704) puede sustituir a un nodo de control principal (por ejemplo, el nodo de control principal 702), como un nuevo nodo de control principal dentro de la red de comunicaciones (por ejemplo, la red de comunicaciones 700) tras el fallo del nodo de control principal. El nodo de control de respaldo 704 puede ser notificado de que el nodo de control principal 702 ha fallado, de diversas maneras diferentes. Por ejemplo, el nodo de control de respaldo 704 puede recibir una comunicación que incluye una notificación, tal como una comunicación 745, que incluye una indicación de que el nodo de control principal 702 ha fallado o fallará en una determinada cantidad de tiempo. El nodo de control de respaldo 704 puede recibir dicha notificación desde el propio nodo de control principal 702. El nodo de control principal 702 puede identificar que ha fallado o fallará, y de manera sucesiva o simultánea transmitir una notificación de este problema al nodo de control de respaldo 704, a otro nodo o grupo de nodos en la red, o a un servidor o administrador (por ejemplo, servidor/administrador 760) o a otra infraestructura del sistema interna o externa a la red de comunicaciones. El nodo de control de respaldo puede recibir a continuación una comunicación 745 desde el servidor o administrador 760. Por ejemplo, dicha notificación puede llegar después de que servidor o administrador 760 haya recibido dicha notificación del nodo de control principal 702. Alternativamente, el servidor o administrador 760 puede haber recibido dicha notificación desde un nodo de trabajo dentro de la red, o desde otra fuente. En otro ejemplo alternativo, el servidor o administrador 760 puede transmitir mensajes de latido del corazón periódicos al nodo de control principal 702 para determinar si el nodo de control principal 702 está funcionando (es decir, no ha fallado), y puede haber iniciado una notificación transmitida al nodo de control de respaldo 704 debido a que ha determinado que el nodo de control principal 702 ha fallado, dado que no ha recibido una respuesta a uno o varios mensajes de latido del corazón durante un determinado periodo de tiempo. El nodo de control de respaldo 704 puede recibir a continuación una notificación de un nodo de control principal averiado, directamente desde un nodo de trabajo, tal como desde el nodo de trabajo 716 que se muestra en la figura 7.
La figura 8 muestra una red de comunicaciones 800 que incluye un nuevo nodo de control principal y el anterior nodo de control de respaldo, y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 800 incluye el nuevo nodo de control principal 804, que puede haber transitado de ser un anterior nodo de control de respaldo antes de que haya fallado un nodo de control principal previo. Tal como se muestra en la figura 8, el nuevo nodo de control principal 804 está, como cuando era un nodo de control de respaldo, conectado a uno o varios nodos de trabajo. En la red de comunicaciones 800, el nuevo nodo de control principal 804 está conectado a los nodos de trabajo 810, 812, 814 y 816. Sin embargo, el nuevo nodo de control principal 804 puede estar conectado a un número de nodos de trabajo menor o mayor que los cuatro nodos
de trabajo mostrados en la figura 8. El nuevo nodo de control principal 804 puede sustituir o relevar a un nodo de control principal anterior, en la misma capacidad o funcionalidad que el nodo de control principal anterior, ahora averiado. En otras palabras, el nuevo nodo de control principal 804 puede controlar el proyecto que se está ejecutando la red de comunicaciones 800, y por lo tanto puede controlar los nodos de trabajo conectados al mismo y ejecutar diferentes partes del proyecto.
El nuevo nodo de control principal 804, tras convertirse en el nodo de control principal dentro de la red de comunicaciones 800, puede iniciar el proyecto de nuevo (por ejemplo, si el último estado conocido de la red almacenada por el nuevo nodo de control principal es el inicio del proyecto). En otra realización, el nuevo nodo de control principal 804 puede retroceder a un punto de control reanudando el trabajo sobre el proyecto en el punto de control en algún punto durante el progreso del proyecto que está siendo ejecutado. En una realización, el nuevo nodo de control principal 804 puede reanudar la ejecución del proyecto, junto con los nodos de trabajo conectados al mismo, desde el punto exacto en el que lo dejó el nodo de control principal. En otra realización, el nuevo nodo de control principal 804 puede reanudar la ejecución del proyecto desde un punto de control (es decir, retroceder a un punto de control) que está en un punto en el proyecto anterior al punto en que salió el nodo de control principal. El nuevo nodo de control principal 804 puede obtener información acerca de este punto de control utilizando una instantánea de la red recuperada del almacenamiento dentro del nuevo nodo de control principal 804 o del almacenamiento dentro de otro nodo o de otro dispositivo.
La figura 9 muestra una red de comunicaciones 900 que incluye un nodo de control principal y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 900 incluye el nuevo nodo de control principal 902 y los nodos de trabajo 910, 912, 914 y 916. Tal como se ha indicado, el nodo de control principal 902 puede distribuir el trabajo dentro de un proyecto que está siendo ejecutado a cada uno de los nodos de trabajo dentro de la red de comunicaciones, de tal modo que cada nodo de trabajo realiza o ejecuta una parte del proyecto. Por ejemplo, tal como se muestra en la figura 9, a cada uno de los nodos de trabajo 910, 912, 914 y 916 se puede asignar una cuarta parte del proyecto que está siendo ejecutado por la red de comunicaciones 900 y controlado por el nodo de control principal 902. Por ejemplo, el nodo de control principal 902 puede transmitir instrucciones al nodo de trabajo, por ejemplo por medio de los caminos de comunicaciones 960, 962, 964 y 966, respectivamente. Además, los nodos de trabajo pueden asimismo transmitir información al nodo de control principal 902. Por ejemplo, los nodos de trabajo pueden generar (y, por ejemplo, almacenar localmente) y transmitir puntos de control de su progreso dentro de un proyecto, o de su parte asignada de un proyecto, al nodo de control principal 902, de tal modo que el nodo de control principal 902 recibe y almacena puntos de control periódicos o estados del progreso de cada uno de los nodos de trabajo. Los puntos de control recibidos para cada nodo de trabajo pueden permitir al nodo de control principal 902 compilar estados del progreso del proyecto que está siendo ejecutado en la red de comunicaciones. Los puntos de control pueden permitir al nodo de control principal 902 generar una instantánea de la red de comunicaciones, o los puntos de control se pueden tratar como datos separados, independientes, para ser utilizados en otras capacidades por el nodo de control principal. Después de que se reciban los puntos de control, estos pueden ser almacenados por el nodo de control principal en el almacenamiento 925. El nodo de control principal 902 puede asimismo almacenar cualesquiera datos generados a partir de los puntos de control, incluyendo por ejemplo una instantánea de la red de comunicaciones.
Los puntos de control pueden ser generados por un nodo de trabajo (o un nodo de control) después de que se ha completado una fase del proyecto (por ejemplo, si el proyecto es una operación de múltiples fases). Alternativamente, los puntos de control pueden ser generados después de que se ha completado una determinada cantidad o cantidades del proyecto (por ejemplo, un determinado porcentaje) (por ejemplo, si el proyecto incluye un gran conjunto de datos). El procedimiento de generar y guardar o transmitir información de puntos de control puede ser elegido por el nodo de control principal (o, en otras realizaciones, por otros nodos de la red o por un usuario externo a la red) en base al proyecto y/o a la situación
En algunas situaciones, un fallo se puede producir en los nodos de trabajo. Las figuras 10 a 12 muestran una red de comunicaciones que incluye un nodo de control y uno o varios nodos de trabajo, de acuerdo con realizaciones de la presente tecnología. La red de comunicaciones 1000 incluye el nodo de control principal 1002 y los nodos de trabajo 1010, 1012, 1014 y 1016. Tal como se ha indicado, el nodo de control principal 1002 puede distribuir el trabajo dentro de un proyecto o de un conjunto de datos que está siendo ejecutado a cada uno de los nodos de trabajo dentro de la red de comunicaciones, de tal modo que cada nodo de trabajo realiza o ejecuta una parte del proyecto. Por ejemplo, tal como se muestra en la figura 10, a cada uno de los nodos de trabajo 1010, 1012, 1014 y 1016 se puede asignar una cuarta parte del proyecto que está siendo ejecutado por la red de comunicaciones 1000 y controlado por el nodo de control principal 1002. Los nodos de trabajo pueden transmitir puntos de control de su progreso dentro de un proyecto, o su parte asignada de un proyecto, al nodo de control principal 1002, de tal modo que el nodo de control principal 1002 recibe y almacena puntos de control o estados del progreso periódicos de cada uno de los nodos de trabajo. La red de comunicaciones 1000 muestra asimismo que uno de los nodos de trabajo, el nodo de trabajo 1012 puede fallar (indicado por líneas de trazos en la figura 10) y, por lo tanto, que los caminos de comunicaciones entre el nodo de trabajo 1012 y otros nodos en la red de comunicaciones (por ejemplo, el camino 1062 entre el nodo de control principal 1002 y el nodo de trabajo 1012) se pueden interrumpir debido a dicho fallo.
Sin embargo, la red de comunicaciones 1000 puede considerar un fallo de un nodo de trabajo, tal como el nodo de trabajo 1012. Tal como se ha indicado, el nodo de trabajo 1012 está conectado comunicativamente al nodo de
control principal 1002, que puede controlar el nodo de trabajo 1012 y/o el trabajo que está siendo realizado por el nodo de trabajo 1012. Si el nodo de trabajo 1012 falla, entonces el nodo de control principal 1002 puede detectar que el nodo de trabajo 1012 ha fallado o puede recibir una notificación de que el nodo de trabajo 1012 ha fallado. Por ejemplo, el nodo de control principal 1002 puede ser notificado de que un nodo de trabajo 1012 ha fallado por otro nodo de trabajo (por ejemplo, el nodo de trabajo 1010, 1014 y/o 1016, que pueden asimismo estar conectados comunicativamente al nodo de control principal 1002) o, si existe uno, por otro nodo de control (por ejemplo, un nodo de control de respaldo) en la red de comunicaciones 1000. Alternativamente, el nodo de control principal 1002 puede ser notificado por un usuario (por ejemplo, un servidor o un administrador 1170 en la figura 11 de la red por medio de la comunicación 1172, tal como se muestra con la red de comunicaciones 1100 de la figura 11, que se describe en mayor detalle en la presente memoria). Realizaciones alternativas incluyen la utilización de umbrales para determinar cuándo, después de una cantidad predeterminada de tiempo, se debería establecer o asumir que un nodo de trabajo ha fallado. Por ejemplo, si un nodo de trabajo no ha transmitido una comunicación de acuse de recibo (por ejemplo, ACK) u otra comunicación prevista, según observa un nodo de control u otro nodo que se espera reciba dicha comunicación, durante una cantidad de tiempo que es mayor que un umbral predeterminado, este puede asumir que el nodo de trabajo ha fallado. Dicha determinación puede permitir que un nodo de control redistribuya trabajo que está siendo realizado por un nodo de trabajo averiado, a otro nodo de trabajo.
Para compensar la pérdida del nodo de trabajo 1012 después de que este falle, o en otras palabras para retomar el trabajo que está siendo asignado al nodo de trabajo 1012, el nodo de control principal 1002 puede distribuir el trabajo que está siendo realizado por el nodo de trabajo 1012 a otros nodos de trabajo en la red de comunicaciones 1000. Por ejemplo, después de que el nodo de control principal 1002 conoce que el nodo de trabajo 1012 ha fallado, el nodo de control principal 1002 puede transmitir una comunicación (por ejemplo, un mensaje o una notificación) a cada uno de los otros nodos de trabajo (por ejemplo, la totalidad o parte de los nodos de trabajo que siguen conectados al nodo de control principal 1002 y sobre la red de comunicaciones 1000) que incluye la parte del trabajo que se está distribuyendo del nodo de trabajo 1012 a cuyo trabajo están asignados. Por ejemplo, tal como se muestra en la red de comunicaciones 1200 de la figura 12 (discutida en mayor detalle en la presente memoria), el nodo de control principal 1002 puede transmitir una comunicación 1274 al nodo de trabajo 1010, una comunicación 1576 al nodo de trabajo 1014 y una comunicación 1278 al nodo de trabajo 1016, que incluyen dicha información. Después de recibir dicha comunicación, los nodos de trabajo 1010, 1014 y 1016 pueden añadir el trabajo identificado en su comunicación recibida, al trabajo que van a realizar en el proyecto. Por ejemplo, si el trabajo restante del nodo de trabajo averiado 1012 se distribuye homogéneamente entre los nodos de trabajo 1010, 1014 y 1016, cada uno de los nodos de trabajo 1010, 1014 y 1016 puede ser asignado a una tercera parte del trabajo total que queda del proyecto, después de que dicho trabajo haya sido reasignado. No obstante, son posibles asimismo otras partes o desgloses del trabajo. Por ejemplo, una alternativa puede incluir añadir un nuevo nodo de trabajo a la red para asumir el trabajo adicional.
En una realización alternativa, el nodo de control principal 1002 puede transmitir una comunicación (por ejemplo, mensaje de rotura del comunicador) a cada uno de los nodos de trabajo que siguen en la red de comunicaciones 1000, que incluye un mensaje de que cada uno de los nodos de trabajo debería asimismo fallar intencionadamente. En otras palabras, el mensaje puede incluir, o provocar un error de comunicación dentro de cada nodo de trabajo, de tal modo que cada nodo de trabajo que sigue en la red falle. Después de que cada nodo de trabajo falle, cada uno de estos puede recuperar su punto de control guardado más reciente, de su estado. Cada nodo de trabajo puede asimismo recuperar el estado o el punto de control del primer nodo de trabajo averiado, el nodo de trabajo 1012. Por ejemplo, tal como se muestra en la figura 12, el nodo de control principal 1002 puede transmitir el punto de control 1242 del nodo de trabajo averiado 1012 a los nodos de trabajo 1010, 1014 y 1016. Esto puede permitir que cada uno de los nodos de trabajo que siguen existiendo (por ejemplo, que no han fallado) siga trabajando en el proyecto desde su punto de control más reciente, al mismo tiempo, y por lo tanto no pierdan nada del trabajo que se tiene que realizar en el proyecto. Esto puede permitir asimismo que los nodos de trabajo sigan trabajando en el trabajo redistribuido desde el nodo de trabajo averiado, en el punto en el que el nodo de trabajo 1012 falló cuando estaba realizando el trabajo. Utilizar dicho punto de control puede permitir que los nodos de trabajo sean eficientes para no duplicar trabajo ya completado o para no perder trabajo que tiene que ser completado. Dichos puntos de control se pueden almacenar dentro de cada nodo de trabajo o se pueden recuperar de otro dispositivo o de otra fuente (por ejemplo, otro nodo de trabajo, un nodo de control, una red en la nube u otro emplazamiento). Puede ser útil almacenar puntos de control en dispositivos aparte de un nodo de control de respaldo en caso de que, por alguna razón, el nodo de control de respaldo no haya almacenado el punto de control, o en caso de que en nodo de control de respaldo falle y un nuevo nodo de control se una a la red en un momento posterior. En una realización de este tipo, un nodo de trabajo u otros dispositivos o redes que han almacenado el punto de control pueden transmitir el punto de control u otra información de estado al nuevo nodo de control.
La figura 13 es un diagrama de flujo 1300 que muestra un proceso de ejemplo para ajustar un proyecto de trabajo en una red de comunicaciones después de un fallo de un nodo de control, de acuerdo con realizaciones de la presente tecnología. El proceso puede incluir, por ejemplo, recibir, en un nodo de control de respaldo conectado a un nodo de control principal y un nodo de trabajo en una red de comunicaciones, información del estado de la red, incluyendo la información del estado de la red un estado del proyecto del nodo de control principal o un estado del proyecto del nodo de trabajo, en el que el estado del proyecto del nodo de control principal y el estado del proyecto del nodo de trabajo incluyen un estado de una o varias partes de un proyecto que está siendo ejecutado por los nodos principal y
de trabajo en la red de comunicaciones (etapa 1302). El proceso puede incluir asimismo almacenar la información del estado de la red dentro del nodo de control de respaldo (etapa 1304). El proceso puede incluir asimismo recibir una comunicación de fallo que incluye una indicación de que el nodo de control principal ha fallado (etapa 1306). El proceso puede incluir asimismo designar el nodo de control de respaldo como un nuevo nodo de control principal en base a la comunicación de fallo tras recibir la comunicación de fallo (etapa 1308). El proceso puede incluir asimismo recibir información actualizada del estado de la red en base a la indicación de que el nodo de control principal ha fallado, en el que la información actualizada del estado de la red incluye un estado del proyecto actualizado del nodo de control principal o un estado del proyecto actualizado del nodo de trabajo (etapa 1310). El proceso puede incluir asimismo transmitir un conjunto de instrucciones en base a la información actualizada del estado de la red, en el que el conjunto de instrucciones incluye instrucciones para que los nodos de trabajo sigan trabajando en el proyecto después de un fallo del nodo de control principal (etapa 1312).
La figura 14 es un diagrama de flujo 1400 que muestra un proceso de ejemplo para ajustar un proyecto de trabajo en una red de comunicaciones después de un fallo de un nodo de trabajo, de acuerdo con realizaciones de la presente tecnología. El proceso puede incluir, por ejemplo, transmitir, en un nodo de control principal conectado a uno o varios nodos de trabajo en una red de comunicaciones, instrucciones de trabajo relacionadas con un proyecto que está siendo ejecutado por dichos uno o varios nodos de trabajo (etapa 1402). El proceso puede incluir asimismo generar una instantánea de la red de comunicaciones, en el que la instantánea de la red de comunicaciones incluye un estado del proyecto de cada uno de dichos uno o varios nodos de trabajo, en el que un estado del proyecto de un nodo de trabajo incluye un punto de control del proyecto, de una parte del proyecto que está siendo ejecutada por el nodo de trabajo en la red de comunicaciones (etapa 1404). El proceso puede incluir asimismo determinar que un nodo de trabajo averiado de dichos uno o varios nodos de trabajo ha fallado en un tiempo de fallo (etapa 1406). El proceso puede incluir asimismo determinar un estado del proyecto del nodo de trabajo averiado utilizando la instantánea de la red de comunicaciones, en el que el estado del proyecto del nodo de trabajo averiado incluye un punto de control de proyecto, del nodo de trabajo averiado en el tiempo de fallo del nodo de trabajo averiado (etapa 1408). El proceso puede incluir asimismo transmitir instrucciones de trabajo actualizadas, en el que las instrucciones de trabajo actualizadas incluyen el estado del proyecto del nodo de trabajo averiado e instrucciones actualizadas relacionadas con el proyecto que está siendo ejecutado por dichos uno o varios nodos de trabajo, en el que cuando se reciben las instrucciones de trabajo actualizadas, un nodo de trabajo en funcionamiento completa la parte del proyecto que está siendo ejecutada por el nodo de trabajo averiado (etapa 1410).
La figura 15 es un diagrama de flujo 1500 que muestra un proceso de ejemplo para ajustar un proyecto de trabajo en una red de comunicaciones después de un fallo de un nodo de control, de acuerdo con realizaciones de la presente tecnología. El proceso puede incluir, por ejemplo, recibir, mediante un nodo de control de respaldo en una red de comunicaciones, una comunicación inicial que incluye una indicación de que un nodo de control principal está conectado a la red de comunicaciones (etapa 1502). El proceso puede incluir asimismo recibir una instantánea de la red de comunicaciones, en el que la instantánea de la red de comunicaciones incluye un estado de trabajo de cada uno de la serie de nodos de trabajo conectados al nodo de control principal y al nodo de control de respaldo (etapa 1504). El proceso puede incluir asimismo determinar un periodo de tiempo desde que se recibió la comunicación inicial (etapa 1506). El proceso puede incluir asimismo comparar el periodo de tiempo con un periodo de tiempo umbral, para determinar que el nodo de control principal ha fallado, en el que tras recibir la comunicación de fallo, el nodo de control de respaldo es un nuevo nodo de control principal (etapa 1508). El proceso puede incluir asimismo transmitir un conjunto de instrucciones en base al estado de trabajo de uno o varios nodos de trabajo de la serie de nodos de trabajo, en el que el conjunto de instrucciones incluye instrucciones para continuar el trabajo en el proyecto después del fallo del nodo de control principal (etapa 1510).
La figura 16 es un diagrama de flujo 1600 que muestra un proceso de ejemplo para autenticar una conexión entre nodos desde la perspectiva de un servidor de la red (por ejemplo, desde un nodo establecido en una red), de acuerdo con realizaciones de la presente tecnología. Tal como se ha indicado, cuando un nodo de control (por ejemplo, el nodo de control principal) recibe una conexión de otro nodo de control, puede en primer lugar comprobar si el nodo par está en una lista almacenada de nodos configurados en la red. Si no está en la lista, puede interrumpir (es decir, rechazar) la conexión. Si está en la lista, puede a continuación intentar autenticar la conexión para asegurarse de que el nuevo nodo pertenece a la red. La autenticación se puede demostrar a través del intercambio de diferentes tipos de mensajes que permiten una autenticación unidireccional o bidireccional. Por ejemplo, los diferentes tipos de mensajes pueden incluir:
- MSG_AUTH_TOKEN_RSP ("ATR"). Este mensaje puede significar que se está enviando un bloque de datos de autenticación, y la respuesta debería incluir un bloque de datos. El mensaje puede incluir un identificador de algoritmo. La respuesta esperada puede ser MSGAUTH _TOKEN RSP, MSG_AUTH _TOKEN_NO_RSP o MSG_AUTH_FAILED.
- MSG_AUTH_TOKEN_NO_RSP ("ATNR"). Este mensaje puede significar que se proporciona un bloque de datos de autenticación, y no se requieren en la respuesta más datos de autenticación. El mensaje puede incluir un identificador de algoritmo. Un mensaje ATNR de ejemplo puede incluir un nombre de usuario y/o una contraseña, u otros tipos de mensajes.
- MSG_AUTH_COMPLETE ("ATC"). Este mensaje puede incluir una indicación de que la autenticación se ha completado satisfactoriamente.
- MSG_AUTH_FAILED ("ATF"). Este mensaje puede indicar que la autenticación ha fallado. El mensaje puede incluir un código de fallo de diagnóstico.
Tal como se muestra en la figura 16, un nodo de autenticación puede esperar un mensaje (bloque 1602) y recibir un mensaje (bloque 1604). Cuando se recibe el mensaje, el nodo puede determinar si el mensaje es un mensaje ATR o ATNR (bloque 1606). Si el mensaje no es un mensaje ATR ni un mensaje ATNR, el nodo puede entonces transmitir un mensaje ATF y el proceso puede finalizar. Si se determina que el mensaje es un mensaje ATR o ATNR, el nodo de autenticación puede entonces, en 1610 y 1612, validar los datos recibidos. Si los datos son válidos, y el mensaje era un ATR (determinado en el bloque 1614), el nodo puede entonces generar una respuesta al ATR en el bloque 1616, dado que el mensaje ATR requiere una respuesta. A continuación, el nodo puede determinar si se necesitan más datos de autenticación en el bloque 1618, y envía un ATR en 1630 en caso afirmativo. Si no, el nodo puede entonces transmitir un ATNR en 1620 y esperar una respuesta en 1622. En 1624, el nodo puede determinar si la respuesta recibida (en el bloque 1622) es un ATC. En caso afirmativo, la autenticación fue satisfactoria, tal como se muestra en el bloque 1640. Si no, puede enviar un ATF en respuesta al bloque 1632 (debido a que la autenticación ha fallado, tal como se muestra en los bloques 1634 y 1638).
La figura 17 es un diagrama de flujo 1700 que muestra un proceso de ejemplo para autenticar una conexión entre nodos desde la perspectiva de un cliente de la red (por ejemplo, desde un nuevo nodo en una red), de acuerdo con realizaciones de la presente tecnología. El diagrama de flujo 1700 mostrado en la figura 17 es muy similar al diagrama de flujo 1600 mostrado en la figura 16, excepto en que el diagrama de flujo 1700 incluye los bloques 1702, 1704, 1706 y 1708 para determinar si los datos de autenticación serán necesarios en la respuesta. En el bloque 1702, el nodo puede generar datos de autenticación iniciales y a continuación, en el bloque 1704, determinar si los datos de autenticación se requieren en la respuesta. En caso afirmativo, puede transmitir un ATR en 1706 para requerir datos de autenticación en la respuesta. En caso negativo, puede transmitir un ATNR en 1728.
Tal como se ha indicado, si se requieren los datos de autenticación en la respuesta, un nodo de autenticación puede esperar un mensaje (bloque 1712) y recibir un mensaje. Cuando se recibe el mensaje, el nodo puede determinar si el mensaje es un mensaje ATR o ATNR (bloque 1714). Si el mensaje no es ni un mensaje a ATR ni un mensaje ATNR, el nodo puede entonces transmitir un mensaje ATF (bloque 1736) y el proceso puede finalizar debido a que el proceso ha fallado (tal como se muestra en los nodos 1738 y 1740). Si se determina que el mensaje es un mensaje ATR o ATNR, el nodo de autenticación puede entonces, en 1718 y 1720, validar los datos recibidos. Si los datos son válidos, y el mensaje era un ATR (determinado en el bloque 1722), el nodo puede entonces generar una respuesta al ATR en el bloque 1724, dado que el mensaje ATR requiere una respuesta. A continuación, el nodo puede determinar si se necesitan más datos de autenticación en el bloque 1726, y envía un ATR en 1715 en caso afirmativo. Si no, el nodo puede entonces transmitir un ATNR en 1728 y esperar una respuesta en 1730. En 1732, en el nodo puede determinar si la respuesta recibida es un ATC. En caso afirmativo, la autenticación fue satisfactoria, tal como se muestra en el bloque 1742. En caso negativo, puede enviar un ATF en respuesta en el bloque 1636. Haciendo referencia de nuevo al nodo 1722, si se determina que mensaje no es un ATR, entonces se puede enviar un mensaje ATC (en el nodo 1740), debido a que la autenticación fue satisfactoria (tal como se muestra en la figura 1742).
La figura 18 es un diagrama de flujo 1800 que muestra un proceso de ejemplo para asignar una lista de nodos (numerados desde m hasta n) como hijos a un nodo, tal como un nodo de control, de acuerdo con realizaciones de la presente tecnología. En el bloque 1802, el nodo m se puede asignar como nodo hijo izquierdo (por ejemplo, de trabajo). A continuación, para confirmar si existen otros nodos hijos, se puede determinar en el bloque 1804 si n - m = 1 o, en otras palabras, si el último hijo asignado (m) es menor o igual que el número total de hijos (n). En caso afirmativo, el proceso puede finalizar. En caso contrario, el nodo m 1 se puede asignar como un hijo derecho en el bloque 1806. El proceso para comprobar si existen otros hijos se reproduce en el bloque 1808 comprobando si m - n = 2. En caso afirmativo, el proceso puede finalizar. En caso negativo, se puede utilizar entonces el algoritmo m 2 ((m - n - 2) / 2) para determinar los valores del hijo "intermedio" en el bloque 1810. El algoritmo se puede utilizar entonces de manera recursiva para asignar nodos m+2 hasta el intermedio para que sean hijos del hijo izquierdo y para asignar nodos intermedio 1 hasta n para que sean hijos del hijo izquierdo. Después de que se calcula "intermedio", el algoritmo se puede invocar dos veces más. La primera vez que se invoca, se puede invocar cuando nuevo_m = antiguo_m 2 y nuevo_n = intermedio. La segunda vez que se invoca, se puede invocar cuando nuevo_m = intermedio 1 y nuevo_n = antiguo_n.
La figura 19 es un diagrama de flujo 1900 que muestra un proceso de ejemplo para que un nodo de control principal distribuya trabajo para un proyecto de cliente entre los otros nodos en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. En el bloque 1902, el nodo de control principal determina cómo distribuir el trabajo a los nodos de trabajo (y si dicha distribución es posible). Por ejemplo, esta etapa puede tener lugar después de que los nodos de trabajo han sido asignados y autenticados en la red, tal como se describe en las figuras 16 a 18. El nodo de control principal puede a continuación determinar, en el bloque 1904, si la red incluye nodos de trabajo suficientes para completar la fase del trabajo. Si no, se puede determinar que la operación o la fase han fallado, en el bloque 1906. En caso afirmativo, el nodo de control principal puede guardar el estado en el bloque
1908 y transmitir una instantánea de la red o información de estado al nodo de control de respaldo en el bloque 1910. El nodo de control principal puede a continuación distribuir trabajo (a partir de una determinada fase del trabajo, si el trabajo es por fases) a través de los nodos de trabajo en el bloque 1912, y esperar a que los nodos de trabajo completen la fase o fallen, en el bloque 1914. A continuación puede determinar si algún trabajador ha fallado, en el bloque 1916. Si uno o varios trabajadores han fallado, pueden entonces tener lugar uno de varios procesos para remediar el fallo. Por ejemplo, el nodo de control principal puede redistribuir trabajo entre el resto de los nodos de trabajo. En otro ejemplo, el nodo de control principal puede inducir un fallo de todos los nodos de trabajo (por ejemplo, en el bloque 1918), de tal modo que cada nodo de trabajo puede reiniciar su trabajo en una instantánea reciente del trabajo de la red sobre el proyecto. Por ejemplo, los nodos de trabajo pueden restablecer a continuación su trabajo en el estado de un estado guardado (por ejemplo, utilizando una instantánea guardada) en el bloque 1920, y a continuación reintentar el trabajo en la fase (en la que el nodo de trabajo averiado falló) en el bloque 1922. Haciendo referencia de nuevo al bloque 1916, si no han fallado trabajadores, el nodo de control principal puede entonces considerar en el bloque 1924 si la fase era la fase final del proyecto. En caso afirmativo, el nodo de control principal puede notificar una finalización satisfactoria, en el bloque 1928. En caso negativo, el nodo de control principal puede entonces asignar trabajo a los nodos de trabajo para la siguiente fase del proyecto, en el bloque 1926.
La figura 20 es un diagrama de flujo 2000 que muestra un proceso de ejemplo para que un nodo de control de respaldo reciba y almacene información de estado actualizada, en una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. Tal como se indica en la presente memoria, una red de comunicaciones puede tener uno, dos, tres o más nodos de control. La figura 20 puede aplicar solamente a una red de comunicaciones que incluye más de un nodo de control. En la etapa 2002, el nodo de control de respaldo puede esperar que se transmita una actualización de estado mediante el nodo de control principal. En los bloques 2004, 2014, 2023 y 2022, se puede actualizar el estado o la instantánea de la red. Por ejemplo, si el estado tiene un tiempo predeterminado después del cual el estado puede expirar o terminar (determinado, por ejemplo, en el bloque 2004), y dicho tiempo se ha alcanzado, entonces se puede determinar si el estado es un estado actualizado (por ejemplo, si el nodo de control de respaldo ha recibido información de estado actualizada, por ejemplo en forma de una instantánea de la red) en el bloque 2014. En caso afirmativo, la información de estado puede entonces guardarse en el bloque 2023, la información de estado antigua o expirada se puede desechar si ya no se necesita, y el nodo de control de respaldo puede esperar otra actualización de estado (por ejemplo, desde el nodo de control principal). Si el estado está preparado para terminar en el bloque 2004, el estado puede entonces terminar en los bloques 2008, 2010 y 2012. Si el estado es una terminación normal (por ejemplo, planificada) (determinada en el bloque 2008), el proceso puede entonces terminar en el bloque 1212. De lo contrario, el nodo de control de respaldo puede entonces registrar un mensaje de error en el bloque 2010 y terminar a continuación en el bloque 2012. Haciendo referencia de nuevo al bloque 2014, si el estado no incluye un estado actualizado, el nodo de control de respaldo puede entonces determinar que el nodo de control principal ha fallado, en el bloque 2016. En el bloque 2026, el último estado almacenado se pueden restablecer (por ejemplo, a partir del nodo de control principal) en el bloque 2026, y el nodo de control de respaldo puede tomar el relevo como el nodo de control principal, en los bloques 2028 y 2018.
La figura 21 es un diagrama de flujo 2100 que muestra un proceso de ejemplo para un nodo de trabajo durante un cálculo de la red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. En la etapa 2104, un nodo de trabajo puede aceptar trabajo asignado desde un nodo de control, y puede ejecutar el trabajo asignado hasta que ha completado el trabajo o hasta que el nodo de trabajo ha fallado (en el bloque 2106), según se determina en el bloque 2108. Si el nodo de trabajo ha fallado, entonces puede restablecer su último estado guardado (por ejemplo, utilizando una instantánea o un estado almacenado anteriormente) en el bloque 2114 y aceptar un siguiente elemento de trabajo desde el nodo de control (por ejemplo, regresando al bloque 2104). Si el nodo de trabajo no ha fallado, y no se ha encontrado ningún error, el nodo de trabajo puede entonces determinar si el estado completado era la fase final del proyecto, en el bloque 2110. En caso afirmativo, el nodo de trabajo puede entonces notificar un éxito, en el bloque 2128, y terminar el proceso. Si no era la fase final, el nodo de trabajo puede entonces pasar a la siguiente fase en su trabajo asignado, en el bloque 2112. Antes de que un nodo de trabajo comience alguna fase, puede guardar su estado actual (por ejemplo, en el bloque 2104), de tal modo que el nodo de trabajo tendrá su estado anterior (y reciente) almacenado en caso de que el nodo de trabajo falle. El nodo de trabajo puede transmitir su estado en cualquier momento en que se le solicite, por ejemplo, un nodo de control y el estado se pueden incorporar como parte de una instantánea de la red.
La figura 22 es un diagrama de flujo 2200 que muestra un proceso de ejemplo para difundir datos dentro de una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. En el bloque 2202, un nodo puede determinar si los datos que desearía difundir al resto de los nodos en la red son grandes (por ejemplo, mayores que 64 KB). Si se determina que los datos no son grandes, el nodo puede entonces determinar si los datos se están procesando en nodos de trabajo (por ejemplo, no se están procesando en un nodo de control) en el bloque 2204. En caso contrario, el nodo puede, en el bloque 2208, esperar que todos los nodos de trabajo estén preparados para recibir datos y, en el bloque 2210, transmitir los datos a cada nodo de trabajo que desearía procesar los datos. En caso afirmativo, el nodo puede entonces transmitir datos a los nodos de trabajo en el bloque 2210. De nuevo haciendo referencia al bloque 2202, si se determina que la difusión de datos es grande, el nodo puede entonces determinar si los datos se están procesando en nodos de trabajo, en el bloque 2214. Si no, el nodo puede entonces
organizar los otros nodos en un árbol (por ejemplo, utilizando el algoritmo mostrado en la figura 21) en el bloque 2216. A continuación, el nodo puede esperar que todos los trabajadores estén dispuestos para recibir datos en el bloque 2220 (de manera similar al bloque 2208), y enviar a continuación los datos a sus nodos hijos trabajadores inmediatos, en el bloque 2216. De nuevo haciendo referencia al bloque 2214, si se determina que los datos se están procesando en nodos de trabajo, el nodo puede entonces informar al nodo de control de que los nodos de trabajo están ya preparados para recibir los datos (en el bloque 2218). A continuación, el nodo puede esperar un bloque de datos de su progenitor inmediato (por ejemplo, un nodo de control) en el bloque 2222, copiar datos a una memoria tampón de salida en el bloque 2224 y volver a enviar los datos a cualquiera de sus nodos hijos trabajadores inmediatos en el bloque 2226. A continuación, puede determinar si todos los datos han sido recibidos por los nodos de trabajo, en el bloque 2228. En caso afirmativo, el proceso puede finalizar a continuación. De lo contrario, puede entonces volver al bloque 2222 y esperar, de nuevo, un bloque de datos de su nodo progenitor inmediato.
La figura 23 es un diagrama de flujo 2300 que muestra un proceso de ejemplo para un algoritmo de reducción dentro de una red de comunicaciones, de acuerdo con realizaciones de la presente tecnología. En otras palabras, el diagrama de flujo 2300 muestra un proceso para obtener datos de entrada desde varios, o desde cada nodo en una red de comunicaciones, y realizar una operación para obtener un solo bloque de resultados en base a dichos datos. Tal como se describe en la presente memoria, las realizaciones de la presente tecnología restringen las operaciones de reducción, de tal modo que es necesario que el bloque de datos sea del mismo tamaño en cada nodo, y que la operación no dependa del orden de las operaciones. Una operación de reducción se puede llevar a cabo sobre un solo objeto en cada nodo, o sobre una lista de objetos en cada nodo. Las operaciones de reducción comunes pueden incluir: multiplicación (por ejemplo, encontrar el producto de todos los valores en todos los nodos), suma (por ejemplo, encontrar la suma de todos los valores en todos los nodos), mínimo (por ejemplo, encontrar el valor más pequeño en todos los nodos) y máximo (por ejemplo, encontrar el valor más grande en todos los nodos), entre otras.
El diagrama de flujo 2300 puede comenzar con una determinación de si la reducción es grande (bloque 2302). En caso afirmativo, la red puede organizar los nodos en un árbol (bloque 2304), trocear la memoria tampón en bloques (bloque 2306) y copiar el siguiente bloque en la memoria tampón de reducción (bloque 2308). Por ejemplo, un nodo puede incluir tres memorias tampón: (1) una memoria tampón de entrada, que puede contener datos que se originan en la máquina local; (2) una memoria tampón de salida, presente en el nodo de control; y (3) una "memoria tampón de reducción", que puede ser una memoria tampón temporal en cada nodo, que puede ser utilizada para calcular un resultado parcial para el mismo y para todos los nodos hijos conectados al mismo. La memoria tampón de salida puede tener el mismo tamaño que la memoria tampón de entrada (aunque mayor que la memoria tampón de reducción) y la memoria tampón de salida puede representar el resultado de la operación de reducción a través de todos los nodos de la red. En la etapa 2306, la memoria tampón de entrada se puede subdividir en bloques, de manera que cada bloque es lo suficientemente pequeño como para caber en la memoria tampón de reducción. En una realización de ejemplo, si las memorias tampón de entrada y de salida contienen cada una un millón de números de doble precisión que se tienen que reducir con una operación de adición, la memoria tampón de reducción puede ser lo suficientemente grande como para contener 5000 números de doble precisión. En dicho ejemplo, la memoria tampón de entrada se puede dividir en 200 bloques de 5000 números de doble precisión cada una.
Cada vez que se alcanza la etapa 2308, un único bloque de datos se puede copiar desde la memoria tampón de entrada y a la memoria tampón de reducción. La red puede a continuación determinar si el bloque tiene algún hijo directo (bloque 2326). Si no, la red puede entonces confirmar si el bloque tiene un nodo progenitor (bloque 2332). En caso afirmativo, la red puede entonces enviar una señal de "preparada para recibir" al hijo directo (bloque 2328), esperar a que se envíen bloques de datos desde el hijo (bloque 2316) y fusionar los bloques de datos hijos en la memoria tampón (bloque 2317), por ejemplo, la memoria tampón de reducción. A continuación, la red puede confirmar si el bloque tiene un nodo progenitor (bloque 2332). Si no, la red puede entonces copiar la memoria tampón de reducción a la memoria tampón de salida (bloque 2330). Por ejemplo, dado que los contenidos de la memoria tampón de reducción pueden contener el resultado para un subconjunto de los datos, ese resultado puede entonces copiarse en la parte correcta de la memoria tampón de salida. Si sigue siendo necesario procesar (etapa 2338) algunos otros bloques de datos desde la memoria tampón de entrada, la ejecución puede continuar con la etapa 2308. Haciendo referencia de nuevo al bloque 2332, si el bloque tiene un nodo progenitor, entonces la red puede esperar una señal de "preparado para recibir" desde el progenitor (bloque 2328) y enviar una memoria tampón de reducción al progenitor (bloque 2336). Por ejemplo, la memoria tampón de reducción puede contener el resultado de la operación de reducción para un único bloque de datos del árbol secundario de la red radicado en el nodo actual. Cuando el nodo progenitor está preparado para recibir información, los contenidos de la memoria tampón de reducción del nodo actual pueden ser reenviados a su nodo progenitor, de tal modo que su nodo progenitor puede continuar la operación. La red puede a continuación confirmar si han sido procesados todos los bloques, en el bloque 2338. Si no, el diagrama de flujo retrocede al bloque 2308 para copiar el segundo bloque en la memoria tampón de reducción. En caso afirmativo, el proceso avanza entonces al bloque 2338 para determinar si han sido procesados todos los bloques.
Haciendo referencia de nuevo al bloque 2302, si se determina que la reducción no es grande, la red puede determinar si se está ejecutando en un nodo de control, en el bloque 2310. Si no, la red puede esperar una señal de "preparado para recibir" del nodo de control (bloque 2314), enviar todos los datos al nodo de control (bloque 2316) y finalizar el proceso. En caso afirmativo, la red puede entonces copiar datos locales en una memoria tampón de
salida (bloque 2312) y enviar una señal de "preparado para recibir" a todos los nodos de trabajo (bloque 2318), recibir datos de un nodo de trabajo cuando estén disponibles (bloque 2320) y fusionar los datos en una memoria tampón de salida (bloque 2322). En el bloque 2324, la red determina si se han recibido todos los datos. Si no, el proceso retrocede entonces al bloque 2318. En caso afirmativo, el proceso finaliza a continuación.
Un conjunto de ejemplo de operaciones disponibles en una gestión de comunicador de un nodo (por ejemplo, un nodo de control) se describe como sigue.
- enviar_estado_a_respaldos: disponible para el nodo de control principal. Esto enviará un bloque de datos de estado a cada nodo de control de respaldo. Esto permitirá que el nodo de control principal establezca el último estado conocido en los nodos de control de respaldo, que puede ser utilizado tras un fallo del nodo principal. Esta llamada se bloqueará hasta que todos los nodos de control de respaldo hayan recibido la información. Si no hay ningún nodo de control de respaldo, esta llamada no hace nada.
- obtener_estado_de_principal: disponible para nodos de control de respaldo. Esto recibirá información de estado. El estado adoptará una de 4 formas: a) preparado para terminación normal. b) preparado para terminación anormal. c) el nodo de control principal ha fallado y este nodo de control ha sido seleccionado para actuar como nuevo principal. d) información de estado del nodo de control principal. La cuarta forma incluirá un bloque de datos de estado del nodo de control principal. Este bloque se debería utilizar en caso de que el respaldo releve al principal. Esta llamada devolverá asimismo un estado específico si se selecciona como el nuevo nodo principal.
- relevar_comunicador: disponible solamente para nodos de control de respaldo. Esto provocará que el nodo de control de respaldo asuma el rol del nodo de control principal en un comunicador.
- enviar: envía un bloque de datos a un único nodo par especificado.
- recv: recibe un bloque de datos de un único nodo par especificado.
- encontrar_datos: encuentra un nodo par desde el cual hay datos disponibles para recibir. Opcionalmente, espera que los datos se hagan disponibles.
- difundir: distribuye un bloque de datos desde un único nodo, a cada uno de los otros nodos de la red. Difunde operaciones que pueden ser simples o basadas en árbol. Para bloques pequeños de datos, el nodo de control envía todo el bloque de datos a cada nodo de trabajo. Para bloques mayores de datos, los nodos se organizan en un árbol, donde cada nodo retransmite datos a como mucho otros dos nodos. El árbol se puede generar utilizando el algoritmo de la figura 21. La difusión se puede realizar utilizando el algoritmo o proceso descrito en la figura 22. - reducir: acepta un vector de datos escritos, en cada nodo de la red. Se realiza una operación específica sobre cada elemento del conjunto desde cada nodo. El conjunto resultante de datos se envía a un único nodo. El árbol se puede generar utilizando el algoritmo de la figura 21. La difusión se puede realizar utilizando el algoritmo o proceso descrito en la figura 23.
- reducir_todos: la misma operación que reducir, excepto que el conjunto resultante está disponible en cada nodo de la red.
- barrera: bloquea hasta que cada nodo en la red invoca barrera.
- lista de nodos estropeados: encuentra una lista de nodos en el comunicador que han fallado
- en_fallo: instala una función de devolución de llamada que se invocará cada vez que falle una API de comunicaciones. Esto puede simplificar el tratamiento de errores al tener una única función que procesa todos los fallos.
- en_fallo_nodo: instala una función de devolución de llamada que se invocará cada vez que un nodo par en la red ha fallado. Esto puede permitir que una ubicación centralizada procese la pérdida de un nodo par de manera oportuna, incluso cuando no ha fallado una API de comunicaciones.
- rango_raíz: encuentra el rango del actual nodo de control principal.
- núm_rangos: encuentra el número de nodos que participan en el comunicador -(sin incluir los nodos de control de respaldo).
- cerrar: interrumpe la participación en el comunicador. Cualesquiera otros nodos verán este nodo como estropeado.
- estropear_comunicador: hace que todos los demás nodos en la red encuentren fallos de comunicaciones. Esto se puede utilizar para forzar el camino de recuperación de errores en cada nodo.
- duplicar_comunicador: crea un nuevo comunicador basado en un comunicador existente. Los nodos en el nuevo comunicador pueden incluir cada nodo en el actual comunicador, o un conjunto de dichos nodos.
En algunos ejemplos descritos en la presente memoria, los sistemas y procedimientos pueden incluir transmisiones de datos transportadas por medio de redes (por ejemplo, red de área local, red de área extensa, internet o combinaciones de las mismas, etc.), medio de fibra óptica, ondas portadoras, redes inalámbricas, etc. para comunicación con uno o varios dispositivos de procesamiento de datos. Las transmisiones de datos pueden transportar cualesquiera o la totalidad de los datos dados a conocer en la presente memoria, que se proporcionan hacia o desde un dispositivo.
Algunos aspectos pueden utilizar internet de las cosas (IoT, Internet of Things), donde las cosas (por ejemplo, máquinas, dispositivos, teléfonos, sensores) pueden estar conectadas a redes, y los datos de estas cosas se pueden reunir y procesar dentro de las cosas y/o fuera de las cosas. Por ejemplo, con IoT pueden existir sensores en muchos dispositivos diferentes, y se puede aplicar analítica de alto valor para identificar relaciones ocultas e impulsar mejores eficiencias. Esto puede aplicar tanto a analítica de macrodatos como a analítica en tiempo real (transferencia continua).
Adicionalmente, los procedimientos y sistemas descritos en la presente memoria se pueden implementar en muchos tipos diferentes de dispositivos de procesamiento mediante código de programa que comprende instrucciones de programa que son ejecutables por el subsistema de procesamiento del dispositivo. Las instrucciones de programa de software pueden incluir código fuente, código objeto, código máquina o cualesquiera otros datos almacenados que pueden funcionar para hacer que un sistema de procesamiento lleve a cabo los procedimientos y operaciones descritas en la presente memoria. Sin embargo, pueden asimismo utilizarse otras implementaciones, tales como software inalterable o incluso hardware diseñado apropiadamente configurado para llevar a cabo los procedimientos y sistemas descritos en la presente memoria.
Los datos de sistemas y de procedimientos (por ejemplo, asociaciones, mapeos, entrada de datos, salida de datos, resultados intermedios de datos, resultados finales de datos, etc.) se pueden almacenar e implementar en uno o varios tipos diferentes de almacenamientos de datos implementados por ordenador, tales como tipos diferentes de dispositivos de almacenamiento y constructos de programación (por ejemplo, RAM, ROM, memoria flash, memoria extraíble, archivos planos, memoria temporal, bases de datos, estructuras de datos de programación, variables de programación, construcciones de instrucciones IF-THEN (o de tipo similar), etc.) Se debe observar que las estructuras de datos pueden describir formatos para utilizar en la organización y almacenamiento de datos en bases de datos, programas, memoria u otros medios legibles por ordenador para su utilización por un programa informático.
Un programa informático (conocido asimismo como un programa, software, aplicación de software, guión o código) se puede escribir en cualquier clase de lenguaje de programación, incluyendo lenguajes compilados o interpretados, y se puede desplegar en cualquier forma, incluyendo como un programa independiente o como un módulo, componente, subrutina u otra unidad adecuada para utilizar en un entorno informático. Un programa informático no corresponde necesariamente a un archivo en un sistema de archivos. Un programa puede estar almacenado en una parte de un archivo que contiene otros programas o datos (por ejemplo, uno o varios guiones almacenados en un documento de lenguaje de marcado), en un único archivo dedicado al programa en cuestión o en múltiples archivos coordinados (por ejemplo, archivos que almacenan uno o varios módulos, subprogramas o partes de código). Un programa informático se puede desplegar para ser ejecutado en un ordenador o en múltiples ordenadores que están situados en un sitio o distribuidos a través de múltiples sitios e interconectados por una red de comunicación. Los procesos y flujos lógicos y las figuras descritas y mostradas en este memoria descriptiva pueden ser realizados por uno o varios procesadores programables que ejecutan uno o varios programas informáticos para llevar a cabo las funciones actuando sobre datos de entrada y generando una salida.
Generalmente, un ordenador puede incluir asimismo, o estar acoplado operativamente para recibir datos desde o transferir datos hacía, o ambos, uno o varios dispositivos de almacenamiento masivo para almacenar datos, por ejemplo, discos magnéticos, magnetoópticos u ópticos. Sin embargo, un ordenador no tiene por qué tener dichos dispositivos. Además, un ordenador puede estar incorporado en otro dispositivo, por ejemplo, un teléfono móvil, un asistente digital personal (PDA, personal digital assistant), una tableta, un dispositivo de visualización móvil, un reproductor de audio móvil, un receptor del sistema de posicionamiento global (GPS, Global Positioning System), por nombrar sólo unos pocos. Los medios legibles por ordenador adecuados para almacenar instrucciones de programa informático y datos incluyen todas las clases de memoria no volátil, medios y dispositivos de memoria, incluyendo mediante dispositivos de memoria semiconductores, por ejemplo, EPROM, EEPROM y dispositivos de memoria flash; discos magnéticos, por ejemplo, discos duros internos o discos extraíbles; discos magnetoópticos; y discos de CD-ROM y DVD-ROM. El procesador y la memoria pueden estar complementados por, o incorporados en circuitos lógicos de propósito especial.
Los componentes informáticos, módulos de software, funciones, almacenamientos de datos y estructuras de datos descritas en la presente memoria se pueden conectar directa o indirectamente entre sí para permitir el flujo de datos necesario para sus operaciones. Se debe observar asimismo que un módulo o procesador incluye, pero no se limita a, una unidad de código que lleva a cabo una operación de software, y se puede implementar por ejemplo como una unidad de código de subrutina, o como una unidad de código de función de software, o como un objeto (tal como en un paradigma orientado a objetos), o como una miniaplicación, o en un lenguaje de guión informático, o como otro
tipo de código informático. Los componentes de software o la funcionalidad pueden estar situados en un único ordenador o distribuidos a través de múltiples ordenadores, dependiendo de la situación en cuestión.
El ordenador puede incluir una máquina programable que lleva a cabo procesamiento de alta velocidad de números, así como de texto, gráficos, símbolos y sonido. El ordenador puede procesar, generar o transformar datos. El ordenador incluye una unidad central de procesamiento que interpreta y ejecuta instrucciones; dispositivos de entrada, tales como un teclado, un teclado numérico o un ratón, a través de los cuales entran al ordenador datos y comandos; memoria que permite que el ordenador almacene programas y datos; y dispositivos de salida, tales como impresoras y pantallas de visualización, que muestran los resultados después de que el ordenador ha procesado, generado o transformado datos.
Las implementaciones de la materia y de las operaciones funcionales descritas en esta memoria descriptiva se pueden implementar en circuitos electrónicos digitales, o en software, software inalterable o hardware informático incluyendo las estructuras dadas a conocer en esta memoria descriptiva y sus equivalentes estructurales, o en combinaciones de uno o varios de los anteriores. Las implementaciones de la materia descrita en esta memoria descriptiva se pueden implementar como uno o varios productos de programa informático, es decir, uno o varios módulos de instrucciones de programa informático codificadas en un medio legible por ordenador para su ejecución mediante, o para controlar el funcionamiento de, un aparato de procesamiento de datos. El medio legible por ordenador puede ser un dispositivo de almacenamiento legible a máquina, un sustrato de almacenamiento legible a máquina, un dispositivo de memoria, una composición de materia que efectúa una comunicación procesada, propagada y legible a máquina, o una combinación de uno o varios de los anteriores. La expresión "aparato de procesamiento de datos" abarca todos los aparatos, dispositivos y máquinas para procesar datos, incluyendo, a modo de ejemplo, un procesador programable, un ordenador, o múltiples procesadores u ordenadores. El aparato puede incluir, además de hardware, código que crea un entorno de ejecución para el programa informático en cuestión, por ejemplo, código que constituye software inalterable de procesador, una pila de protocolos, un sistema gráfico, un sistema de gestión de bases de datos, un sistema operativo, o una combinación de uno o varios de los anteriores.
Los procedimientos, sistemas, dispositivos, implementaciones y realizaciones discutidas anteriormente son ejemplos. Diversas configuraciones pueden omitir, sustituir o añadir varios procedimientos o componentes a conveniencia. Por ejemplo, en configuraciones alternativas, los procedimientos se pueden llevar a cabo en un orden diferente al que se ha descrito, o se pueden añadir, omitir o combinar varias fases. Asimismo, las características descritas con respecto a determinadas combinaciones se pueden combinar en algunas otras configuraciones. Diferentes aspectos y elementos de las configuraciones se pueden combinar de manera similar. Asimismo, la tecnología evoluciona y, por lo tanto, muchos de los elementos son ejemplos y no limitan el alcance de la invención o las reivindicaciones.
Algunos sistemas pueden utilizar Hadoop®, un marco de trabajo de código abierto para almacenar y analizar macrodatos en un entorno informático distribuido. Algunos sistemas pueden utilizar informática en la nube, que puede permitir un acceso de red ubicuo, cómodo, a petición, a un conjunto compartido de recursos informáticos configurables (por ejemplo, redes, servidores, almacenamiento, aplicaciones y servicios) que se pueden proporcionar y liberar rápidamente con un esfuerzo de administración o una interacción de proveedor de servicio, mínimos. Algunos sistemas de red se pueden implementar como un grupo Hadoop® de múltiples nodos, tal como comprende un experto en la materia. Apache™ Hadoop® es un entorno de software de código abierto para informática distribuida. Algunos sistemas pueden utilizar el servidor analítico LASR™ SAS® para suministrar capacidades de modelización estadística y aprendizaje automático en un entorno de programación muy interactivo, que puede permitir que múltiples usuarios simultáneamente gestionen datos, transformen variables, realicen análisis exploratorios, construyan y comparen modelos, y puntúen. Algunos sistemas pueden utilizar estadísticas en memoria SAS para Hadoop® para leer macrodatos una vez y analizarlos varias veces manteniéndolos en memoria durante toda la sesión. Algunos sistemas pueden utilizar una combinación de algunos otros tipos de sistemas o servidores, incluyendo los sistemas y servidores mencionados en la presente memoria.
Se proporcionan detalles específicos en la descripción para proporcionar una comprensión exhaustiva de ejemplos de configuraciones (incluyendo implementaciones). Sin embargo, se pueden practicar configuraciones sin estos detalles específicos. Por ejemplo, los circuitos, procesos, algoritmos, estructuras y técnicas bien conocidas se han mostrado sin detalles innecesarios para evitar oscurecer las configuraciones. Esta descripción solamente proporciona ejemplos de configuraciones y no limita el alcance, la aplicabilidad o las configuraciones de las reivindicaciones. Por el contrario, la descripción anterior de las configuraciones proporcionará a los expertos en la materia una descripción habilitadora para implementar técnicas descritas. Se pueden realizar varios cambios en la función y disposición de elementos, sin apartarse del alcance de la invención.
Asimismo, las configuraciones se pueden describir como un proceso que se representa como un diagrama de flujo o un diagrama de bloques. Aunque cada una puede describir las operaciones como un proceso secuencial, muchas de las operaciones se pueden llevar a cabo en paralelo o simultáneamente. Además, el orden de las operaciones se puede reordenar. Un proceso puede tener etapas adicionales no incluidas en la figura. Además, se pueden implementar ejemplos de los procedimientos mediante hardware, software, software inalterable, software intermedio, microcódigo, lenguajes de descripción de hardware o cualquier combinación de los mismos. Cuando se implementan
en software, software inalterable, software intermedio o microcódigo, el código de programa o los segmentos de código para realizar las tareas necesarias se pueden almacenar en un medio no transitorio legible por ordenador, tal como un medio de almacenamiento. Los procesadores pueden llevar a cabo las tareas descritas.
Habiendo descrito varios ejemplos de configuraciones, se pueden utilizar diversas modificaciones, construcciones alternativas y equivalentes sin apartarse del alcance de la invención, tal como se define en las reivindicaciones adjuntas. Por ejemplo, los elementos anteriores pueden ser componentes de un sistema mayor, en el que otras reglas pueden tener prioridad sobre, o sino modificar la aplicación de la presente invención. Asimismo, se puede llevar a cabo un gran número de operaciones antes, durante o después de que se consideren los elementos anteriores. Por consiguiente, la descripción anterior no limita el alcance de las reivindicaciones.
La utilización de "capaz de", "adaptado a" o "configurado para" en la presente memoria se entiende como una expresión abierta e inclusiva que no excluye dispositivos adaptados, o configurados para llevar a cabo tareas u operaciones adicionales. Adicionalmente, se entiende que la utilización de "basado en" es inclusiva y abierta, en cuanto que un proceso, etapa, cálculo u otra acción "basada en" una o varias condiciones o valores enumerados puede, en la práctica, basarse en condiciones o valores adicionales más allá de los enumerados. Los títulos, listas y numeración incluidos en la presente memoria son solamente para facilitar la explicación y no pretenden ser limitativos.
Se debe entender que, tal como se utiliza en la descripción de la presente memoria y en todas las reivindicaciones que siguen, el significado de "un", "una", "el" y "la" incluye referencia al plural salvo que el contexto imponga claramente lo contrario. Asimismo, tal como se utiliza en la descripción de la presente memoria y en todas las reivindicaciones que siguen, el significado de "en" incluye "en" y "sobre" salvo que el contexto imponga claramente lo contrario. Finalmente, tal como se utiliza en la descripción de la presente memoria y en todas las reivindicaciones que siguen, los significados de "y" y "o" incluyen tanto la conjunción como la disyunción y se pueden utilizar de manera intercambiable salvo que el contexto imponga expresamente lo contrario; la expresión "o exclusiva" se puede utilizar para indicar una situación en la que solamente puede aplicar la disyunción.
Aunque la presente materia se ha descrito en detalle con respecto a realizaciones específicas de la misma, se apreciará que los expertos en la materia, tras obtener una comprensión de lo anterior, pueden producir fácilmente modificaciones, variaciones y equivalentes de dichas realizaciones. Por consiguiente, se debe entender que la presente invención se ha presentado con fines explicativos y no limitativos, y no impide la inclusión de dichas modificaciones, variaciones o adiciones a la presente materia, tal como será evidente para un experto en la materia.
Aunque esta invención puede contener muchos detalles específicos, estos no se deberán interpretar como limitaciones del alcance o de lo que se puede reivindicar, sino como descripciones de características específicas de implementaciones particulares. Determinadas características que se describen en esta memoria descriptiva en el contexto de implementaciones independientes pueden asimismo implementarse en combinación en una única implementación. A la inversa, diversas características que se describen en el contexto de una única implementación pueden asimismo implementarse por separado en múltiples implementaciones o en cualquier combinación adecuada. Además, aunque las características pueden estar descritas anteriormente actuando en determinadas realizaciones e incluso inicialmente reivindicadas como tales, una o varias características de una combinación reivindicada pueden, en algunos casos, retirarse de la combinación, y la combinación reivindicada puede dirigirse a una combinación secundaria o variación de una combinación secundaria.
Análogamente, aunque las operaciones se representan en los dibujos en un orden particular, no se debe interpretar que esto implica que dichas operaciones se lleven a cabo en el orden particular mostrado o en orden secuencial, o que todas las operaciones mostradas se tengan que llevar a cabo para conseguir los resultados deseados. En determinadas circunstancias, puede ser ventajoso un procesamiento paralelo y multitarea. Además, no se deberá entender que la separación de varios componentes del sistema en las implementaciones descritas anteriormente implica dicha separación en todas las implementaciones, y se deberá entender que los componentes de programa y sistemas descritos pueden, en general, integrarse conjuntamente en un único producto de software o de hardware o empaquetarse en múltiples productos de software o de hardware.
Claims (13)
1. Un procedimiento implementado por ordenador, que comprende:
recibir, en un nodo de control de respaldo conectado a un nodo de control principal y a un nodo de trabajo en una red de comunicaciones, información del estado de la red, incluyendo la información del estado de la red un estado del proyecto del nodo de control principal o un estado del proyecto del nodo de trabajo, en el que el estado del proyecto del nodo de control principal y el estado del proyecto del nodo de trabajo incluyen un estado de una o varias partes de un proyecto que está siendo ejecutado por los nodos principal y de trabajo en la red de comunicaciones, y en el que la información del estado de la red incluye un punto de control del proyecto que indica un punto durante la ejecución de una parte del proyecto antes de un fallo del nodo de control principal; almacenar la información del estado de la red en el nodo de control de respaldo;
recibir una comunicación de fallo que incluye una indicación de que el nodo de control principal ha fallado; designar un nodo de control de respaldo como un nuevo nodo de control principal en base a la comunicación de fallo tras recibir la comunicación de fallo;
recibir información actualizada del estado de la red en base a la indicación de que el nodo de control principal ha fallado, en el que la información actualizada del estado de la red incluye un estado del proyecto actualizado del nodo de control principal o un estado del proyecto actualizado del nodo de trabajo;
determinar que el nodo de control principal ha fallado mientras el proyecto estaba pendiente; y
transmitir un conjunto de instrucciones en base a la información actualizada del estado de la red, en el que el conjunto de instrucciones incluye el punto de control del proyecto que indica el punto durante la ejecución de una parte del proyecto anterior al fallo del nodo de control principal, y en el que el conjunto de instrucciones incluye instrucciones para que los nodos de trabajo continúen el trabajo sobre el proyecto pendiente a partir del punto de control del proyecto después del fallo del nodo de control principal.
2. El procedimiento según la reivindicación 1, que comprende además:
recibir, en el nodo de control de respaldo, una comunicación del nodo principal que incluye una indicación de que el nodo de control de respaldo es el nuevo nodo de control principal.
3. El procedimiento según la reivindicación 1, en el que tras recibir la comunicación de fallo, el nodo de control de respaldo determina si el nodo de respaldo se debería designar como el nuevo nodo de control principal en base a un identificador único o a un rango del nodo de control de respaldo, y asigna un nuevo nodo de control principal.
4. El procedimiento según la reivindicación 1, en el que tras recibir la comunicación de fallo, el nodo de control de respaldo determina que el nodo de control de respaldo es el único nodo de control de respaldo en la red de comunicaciones.
5. El procedimiento según la reivindicación 1, en el que el nodo de control principal controla las partes del proyecto de cuya ejecución es responsable cada nodo de trabajo.
6. El procedimiento según la reivindicación 1, en el que a cada nodo de control y cada nodo de trabajo en la red de comunicaciones se asigna un identificador único, en el que los identificadores únicos de los nodos indican una jerarquía de los nodos dentro de la red de comunicaciones.
7. El procedimiento según la reivindicación 6, en el que cada nodo de control y cada nodo de trabajo almacenan el identificador único para cualesquiera otros nodos de control y nodos de trabajo de la red de comunicaciones.
8. El procedimiento según la reivindicación 1, en el que cada uno de los nodos de trabajo de la red de comunicaciones ejecuta diferentes partes del proyecto.
9. El procedimiento según la reivindicación 1, que comprende además:
determinar que el nodo de control principal ha fallado, en el que determinar que el nodo de control principal ha fallado incluye determinar que el nodo de control de respaldo no recibió una comunicación de latido del corazón prevista, en el que la comunicación de latido del corazón indica que el nodo de control principal está operativo.
10. El procedimiento según la reivindicación 1, en el que determinar que el nodo de control principal ha fallado incluye determinar que el nodo de control de respaldo no recibió una comunicación de latido del corazón del nodo de control principal después de un periodo de tiempo predeterminado.
11. El procedimiento según la reivindicación 1, en el que determinar que el nodo de control principal ha fallado incluye recibir de un nodo de trabajo una notificación que incluye una indicación de que el nodo de control principal ha fallado.
12. Un producto de programa informático realizado de manera tangible en un medio de almacenamiento no transitorio legible a máquina, que incluye instrucciones configuradas para hacer que un aparato de procesamiento de datos lleve a cabo operaciones según el procedimiento de cualquiera de las reivindicaciones 1 a 11.
13. Un dispositivo informático, que comprende:
uno o varios procesadores; y
una memoria que tiene instrucciones almacenadas en la misma, que cuando son ejecutadas por dichos uno o varios procesadores hacen que el dispositivo informático lleve a cabo operaciones según el procedimiento de cualquiera de las reivindicaciones 1 a 11.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462019426P | 2014-07-01 | 2014-07-01 | |
PCT/US2015/037192 WO2016003708A1 (en) | 2014-07-01 | 2015-06-23 | Systems and methods for fault tolerant communications |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2705708T3 true ES2705708T3 (es) | 2019-03-26 |
Family
ID=55017082
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES16205816T Active ES2714218T3 (es) | 2014-07-01 | 2015-06-23 | Sistemas y métodos para comunicaciones tolerantes a fallos |
ES15814364T Active ES2705708T3 (es) | 2014-07-01 | 2015-06-23 | Sistemas y procedimientos para comunicaciones tolerantes a fallos |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES16205816T Active ES2714218T3 (es) | 2014-07-01 | 2015-06-23 | Sistemas y métodos para comunicaciones tolerantes a fallos |
Country Status (6)
Country | Link |
---|---|
US (2) | US9495260B2 (es) |
EP (2) | EP3179368B1 (es) |
CN (2) | CN111314125A (es) |
CA (2) | CA2957749C (es) |
ES (2) | ES2714218T3 (es) |
WO (1) | WO2016003708A1 (es) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303567B2 (en) * | 2013-08-15 | 2019-05-28 | Entit Software Llc | Managing database nodes |
US20180039399A1 (en) * | 2014-12-29 | 2018-02-08 | Palantir Technologies Inc. | Interactive user interface for dynamically updating data and data analysis and query processing |
US9335911B1 (en) | 2014-12-29 | 2016-05-10 | Palantir Technologies Inc. | Interactive user interface for dynamic data analysis exploration and query processing |
US20170199834A1 (en) * | 2016-01-13 | 2017-07-13 | Ford Global Technologies, Llc | Vehicle subsystem communication arbitration |
US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
CN105786405B (zh) | 2016-02-25 | 2018-11-13 | 华为技术有限公司 | 一种在线升级方法、装置及系统 |
US10203890B1 (en) * | 2016-09-20 | 2019-02-12 | Tintri Inc. | Multi-tier mechanism to achieve high availability in a multi-controller system |
US11153376B2 (en) * | 2017-02-23 | 2021-10-19 | Centurylink Intellectual Property Llc | Systems and methods for an internet of things computing shell |
US20180300338A1 (en) * | 2017-04-13 | 2018-10-18 | Sas Institute Inc. | Distributed high-cardinality data transformation system |
US9986509B1 (en) | 2017-04-21 | 2018-05-29 | Cisco Technology, Inc. | Advance remote failure notification (ARFN) |
US10885021B1 (en) | 2018-05-02 | 2021-01-05 | Palantir Technologies Inc. | Interactive interpreter and graphical user interface |
CN108881446B (zh) * | 2018-06-22 | 2021-09-21 | 深源恒际科技有限公司 | 一种基于深度学习的人工智能平台系统 |
US11099925B2 (en) | 2018-07-10 | 2021-08-24 | EMC IP Holding Company LLC | Datacenter preemptive measures for improving protection using IoT sensors |
US11102301B2 (en) | 2018-07-12 | 2021-08-24 | Sap Se | PCA-based scoring of the similarity of damage patterns of operational assets |
US10740206B2 (en) * | 2018-07-18 | 2020-08-11 | Sap Se | Record-based planning in operational maintenance and service |
US10777058B2 (en) | 2018-09-22 | 2020-09-15 | Fedex Corporate Services, Inc. | Systems, apparatus, and methods for detecting an environmental anomaly and initiating an enhanced automatic response using elements of a wireless node network using ID nodes and environmental threshold conditions per ID node |
US11106528B2 (en) | 2018-10-10 | 2021-08-31 | EMC IP Holding Company LLC | Datacenter IoT-triggered preemptive measures using machine learning |
MX2019008861A (es) | 2018-12-13 | 2019-09-11 | Alibaba Group Holding Ltd | Logro de consenso entre nodos de red en sistema distribuido. |
CN110178340B (zh) | 2018-12-13 | 2021-05-18 | 创新先进技术有限公司 | 在分布式系统中进行网络节点的恢复处理 |
EP3566397B1 (en) | 2018-12-13 | 2021-07-28 | Advanced New Technologies Co., Ltd. | Performing a change of primary node in a distributed system |
EP3734382A1 (en) * | 2019-05-03 | 2020-11-04 | AB Sandvik Coromant | Method for establishing communication in a machine tool system and a communication apparatus therefor |
US11307917B2 (en) | 2019-08-16 | 2022-04-19 | Delta Electronics Intl (Singapore) Pte Ltd | Decentralized cyber-physical system |
US11106556B2 (en) * | 2019-09-13 | 2021-08-31 | EMC IP Holding Company LLC | Data service failover in shared storage clusters |
CN111753997B (zh) * | 2020-06-28 | 2021-08-27 | 北京百度网讯科技有限公司 | 分布式训练方法、系统、设备及存储介质 |
CN112434193B (zh) * | 2020-10-27 | 2023-09-29 | 北京空间飞行器总体设计部 | 一种引导式系统故障快速排查方法及装置 |
CN112511337B (zh) * | 2020-11-09 | 2023-03-14 | 迅鳐成都科技有限公司 | 区块链共识网络自恢复方法、电子设备、系统及存储介质 |
US20210271536A1 (en) * | 2020-12-23 | 2021-09-02 | Intel Corporation | Algorithms for optimizing small message collectives with hardware supported triggered operations |
US11762743B2 (en) * | 2021-06-28 | 2023-09-19 | International Business Machines Corporation | Transferring task data between edge devices in edge computing |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295258A (en) | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
US5271013A (en) | 1990-05-09 | 1993-12-14 | Unisys Corporation | Fault tolerant computer system |
WO1993009494A1 (en) | 1991-10-28 | 1993-05-13 | Digital Equipment Corporation | Fault-tolerant computer processing using a shadow virtual processor |
US5621885A (en) | 1995-06-07 | 1997-04-15 | Tandem Computers, Incorporated | System and method for providing a fault tolerant computer program runtime support environment |
US5802265A (en) | 1995-12-01 | 1998-09-01 | Stratus Computer, Inc. | Transparent fault tolerant computer system |
US5796934A (en) | 1996-05-31 | 1998-08-18 | Oracle Corporation | Fault tolerant client server system |
DE19836347C2 (de) | 1998-08-11 | 2001-11-15 | Ericsson Telefon Ab L M | Fehlertolerantes Computersystem |
US6393583B1 (en) | 1998-10-29 | 2002-05-21 | International Business Machines Corporation | Method of performing checkpoint/restart of a parallel program |
EP1020797B1 (en) | 1999-01-11 | 2004-05-06 | Koken Co., Ltd. | Fault tolerant computer system |
US6993764B2 (en) | 2000-06-30 | 2006-01-31 | The Regents Of The University Of California | Buffered coscheduling for parallel programming and enhanced fault tolerance |
US20030037149A1 (en) | 2001-08-07 | 2003-02-20 | Hess Lawrence D. | Distributed and fault tolerant server system and method |
US7305585B2 (en) | 2002-05-23 | 2007-12-04 | Exludus Technologies Inc. | Asynchronous and autonomous data replication |
EP1365538A1 (en) | 2002-05-23 | 2003-11-26 | Benoit Marchand | Implementing a scalable, dynamic, fault-tolerant, multicast based file transfer and asynchronous file replication protocol |
US7185236B1 (en) | 2002-08-30 | 2007-02-27 | Eternal Systems, Inc. | Consistent group membership for semi-active and passive replication |
CN1302411C (zh) * | 2002-12-31 | 2007-02-28 | 联想(北京)有限公司 | 大型机群系统的集中控制方法 |
JP4457581B2 (ja) | 2003-05-28 | 2010-04-28 | 日本電気株式会社 | 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム |
US8041798B1 (en) * | 2003-09-11 | 2011-10-18 | Oracle America, Inc. | Self-healing grid mechanism |
US7533168B1 (en) * | 2003-09-11 | 2009-05-12 | Sun Microsystems, Inc. | Autonomic grid computing mechanism |
CN1292346C (zh) * | 2003-09-12 | 2006-12-27 | 国际商业机器公司 | 用于在分布式计算体系结构中执行作业的系统和方法 |
US7149858B1 (en) * | 2003-10-31 | 2006-12-12 | Veritas Operating Corporation | Synchronous replication for system and data security |
US7475274B2 (en) | 2004-11-17 | 2009-01-06 | Raytheon Company | Fault tolerance and recovery in a high-performance computing (HPC) system |
JP4411602B2 (ja) | 2004-12-16 | 2010-02-10 | 日本電気株式会社 | フォールトトレラント・コンピュータシステム |
US7373545B2 (en) | 2005-05-06 | 2008-05-13 | Marathon Technologies Corporation | Fault tolerant computer system |
US20060253726A1 (en) | 2005-05-06 | 2006-11-09 | Vikas Kukshya | Fault-tolerant architecture for a distributed control system |
US7484032B2 (en) | 2005-06-30 | 2009-01-27 | Smith Roger A | Fault tolerant computer system |
US8788565B2 (en) * | 2005-07-18 | 2014-07-22 | Wayne Bevan | Dynamic and distributed queueing and processing system |
US7941404B2 (en) * | 2006-03-08 | 2011-05-10 | International Business Machines Corporation | Coordinated federated backup of a distributed application environment |
JP4546413B2 (ja) * | 2006-03-17 | 2010-09-15 | 富士通株式会社 | 並列計算機のリダクション処理方法及び並列計算機 |
US7571347B2 (en) | 2006-03-20 | 2009-08-04 | Sun Microsystems, Inc. | Method and apparatus for providing fault-tolerance in parallel-processing systems |
US7657787B2 (en) | 2006-04-11 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Method of restoring communication state of process |
US8291419B2 (en) | 2006-09-26 | 2012-10-16 | International Business Machines Corporation | Fault tolerant system for execution of parallel jobs |
US7917469B2 (en) | 2006-11-08 | 2011-03-29 | Hitachi Data Systems Corporation | Fast primary cluster recovery |
US7610510B2 (en) | 2007-02-16 | 2009-10-27 | Symantec Corporation | Method and apparatus for transactional fault tolerance in a client-server system |
US8112593B2 (en) | 2007-03-29 | 2012-02-07 | Netapp, Inc. | System and method for improving cluster performance |
US8335813B2 (en) | 2007-05-01 | 2012-12-18 | Illinois Institute Of Technology | Systems, methods, and protocols for process migration and group membership management |
US8161480B2 (en) * | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US7779298B2 (en) | 2007-06-11 | 2010-08-17 | International Business Machines Corporation | Distributed job manager recovery |
US20090019258A1 (en) | 2007-07-09 | 2009-01-15 | Shi Justin Y | Fault tolerant self-optimizing multi-processor system and method thereof |
CN101145946B (zh) * | 2007-09-17 | 2010-09-01 | 中兴通讯股份有限公司 | 一种基于消息日志的容错集群系统和方法 |
CN101594254B (zh) * | 2009-06-30 | 2011-04-27 | 中国运载火箭技术研究院 | 一种基于代理技术的网格计算容错系统及方法 |
US8990397B2 (en) | 2009-07-31 | 2015-03-24 | Ntt Docomo, Inc. | Resource allocation protocol for a virtualized infrastructure with reliability guarantees |
US8874961B2 (en) | 2010-03-22 | 2014-10-28 | Infosys Limited | Method and system for automatic failover of distributed query processing using distributed shared memory |
US8595234B2 (en) * | 2010-05-17 | 2013-11-26 | Wal-Mart Stores, Inc. | Processing data feeds |
US8250405B2 (en) | 2010-05-27 | 2012-08-21 | International Business Machines Corporation | Accelerating recovery in MPI environments |
US8473783B2 (en) | 2010-11-09 | 2013-06-25 | International Business Machines Corporation | Fault tolerance in distributed systems |
US8271537B2 (en) * | 2010-11-15 | 2012-09-18 | Sas Institute Inc. | Grid computing system alongside a distributed database architecture |
US8984328B2 (en) | 2011-03-11 | 2015-03-17 | Microsoft Technology Licensing, Llc | Fault tolerance in a parallel database system |
CN102411520B (zh) * | 2011-09-21 | 2013-09-25 | 电子科技大学 | 一种基于数据单元的地震数据的灾难恢复方法 |
US20140067887A1 (en) * | 2012-08-29 | 2014-03-06 | Sas Institute Inc. | Grid Computing System Alongside A Distributed File System Architecture |
CN103064728A (zh) * | 2012-12-13 | 2013-04-24 | 河南工业大学 | 一种MapReduce任务的容错调度方法 |
CN103778031B (zh) * | 2014-01-15 | 2017-01-18 | 华中科技大学 | 一种云环境下的分布式系统多级故障容错方法 |
CN103853634B (zh) * | 2014-02-26 | 2017-02-01 | 北京优炫软件股份有限公司 | 一种容灾备份系统及方法 |
-
2015
- 2015-06-23 US US14/747,965 patent/US9495260B2/en active Active
- 2015-06-23 EP EP16205816.8A patent/EP3179368B1/en active Active
- 2015-06-23 CA CA2957749A patent/CA2957749C/en active Active
- 2015-06-23 CA CA2948914A patent/CA2948914C/en active Active
- 2015-06-23 ES ES16205816T patent/ES2714218T3/es active Active
- 2015-06-23 ES ES15814364T patent/ES2705708T3/es active Active
- 2015-06-23 EP EP15814364.4A patent/EP3129903B1/en active Active
- 2015-06-23 CN CN202010085245.4A patent/CN111314125A/zh active Pending
- 2015-06-23 WO PCT/US2015/037192 patent/WO2016003708A1/en active Application Filing
- 2015-06-23 US US14/747,763 patent/US9424149B2/en active Active
- 2015-06-23 CN CN201580026917.1A patent/CN106462612A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2016003708A1 (en) | 2016-01-07 |
EP3129903B1 (en) | 2018-11-28 |
CN106462612A (zh) | 2017-02-22 |
CA2957749A1 (en) | 2016-01-07 |
EP3179368A1 (en) | 2017-06-14 |
CA2948914C (en) | 2017-09-05 |
US9424149B2 (en) | 2016-08-23 |
ES2714218T3 (es) | 2019-05-27 |
EP3129903A4 (en) | 2017-12-20 |
EP3129903A1 (en) | 2017-02-15 |
CA2948914A1 (en) | 2016-01-07 |
US20160004609A1 (en) | 2016-01-07 |
US20160004610A1 (en) | 2016-01-07 |
EP3179368B1 (en) | 2018-12-12 |
CA2957749C (en) | 2017-08-15 |
CN111314125A (zh) | 2020-06-19 |
US9495260B2 (en) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2705708T3 (es) | Sistemas y procedimientos para comunicaciones tolerantes a fallos | |
CN114787781B (zh) | 用于启用高可用性受管理故障转移服务的系统和方法 | |
US10853334B2 (en) | Technologies for providing service isolation, scalability, and proactive tenant migration in multi-tenant ecosystems | |
ES2876311T3 (es) | Replicación de estado de instancias de función de red virtual | |
US10474451B2 (en) | Containerized upgrade in operating system level virtualization | |
ES2645414T3 (es) | Conmutación por error y recuperación para instancias de datos replicados | |
US10404579B1 (en) | Virtual machine instance migration using a hypervisor | |
US10476736B2 (en) | Daisy chain distribution in data centers | |
US10785350B2 (en) | Heartbeat in failover cluster | |
US10826812B2 (en) | Multiple quorum witness | |
JP6279744B2 (ja) | eメールのウェブクライアント通知の待ち行列化方法 | |
US9569317B2 (en) | Managing VIOS failover in a single storage adapter environment | |
US20230185918A1 (en) | Achieving minimum trustworthiness in distributed workloads | |
US9930140B2 (en) | Tie-breaking for high availability clusters | |
US11010266B1 (en) | Dual isolation recovery for primary-secondary server architectures | |
US9880855B2 (en) | Start-up control program, device, and method | |
US12015545B1 (en) | Reliable packet delivery through path diversification | |
US12041044B2 (en) | Server node-controlled advertisement | |
Gopalakrishnan et al. | Djenne: Dependable and Decentralized Computation for Networked Embedded Systems |