ES2714218T3 - Sistemas y métodos para comunicaciones tolerantes a fallos - Google Patents

Sistemas y métodos para comunicaciones tolerantes a fallos Download PDF

Info

Publication number
ES2714218T3
ES2714218T3 ES16205816T ES16205816T ES2714218T3 ES 2714218 T3 ES2714218 T3 ES 2714218T3 ES 16205816 T ES16205816 T ES 16205816T ES 16205816 T ES16205816 T ES 16205816T ES 2714218 T3 ES2714218 T3 ES 2714218T3
Authority
ES
Spain
Prior art keywords
node
worker
project
nodes
control node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16205816T
Other languages
English (en)
Inventor
Richard Knight
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAS Institute Inc
Original Assignee
SAS Institute Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAS Institute Inc filed Critical SAS Institute Inc
Application granted granted Critical
Publication of ES2714218T3 publication Critical patent/ES2714218T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2097Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2035Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2038Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2041Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Abstract

Un método implementado por ordenador, que comprende: transmitir, de un nodo de control primario (902, 1002) conectado a uno o más nodos trabajadores (910, 912, 914, 916, 1010, 1012, 1014, 1016) en una rejilla de comunicaciones (900, 1000), instrucciones de trabajador relacionadas con un proyecto que se está ejecutando por el único o más nodos trabajadores; generar, por el nodo de control primario, una instantánea de la rejilla de comunicaciones, en donde la instantánea de la rejilla de comunicaciones incluye un estado de proyecto de cada uno del único o más nodos trabajadores, en donde un estado de proyecto de un nodo trabajador incluye un estado de una porción del proyecto que se está ejecutando por el nodo trabajador en la rejilla de comunicaciones, y en donde la instantánea incluye un punto de comprobación de proyecto que indica un punto durante la ejecución de una porción del proyecto; determinar, por el nodo de control primario, que un nodo trabajador fallido del único o más nodos trabajadores ha fallado, en donde el nodo trabajador fallido ha fallado en un tiempo de fallo; determinar que el nodo trabajador fallido ha fallado mientras el proyecto estaba pendiente; identificar un estado de proyecto del nodo trabajador fallido mediante el uso de la instantánea de la rejilla de comunicaciones, en donde el estado de proyecto del nodo trabajador fallido incluye un estado de una porción del proyecto que se está ejecutando por el nodo trabajador fallido en el tiempo de fallo, e identificar un punto de comprobación de proyecto del nodo trabajador fallido a partir de la instantánea que indica un punto durante la ejecución de una porción del proyecto con anterioridad al fallo del nodo trabajador fallido; y transmitir instrucciones de trabajador actualizadas, en donde el conjunto de instrucciones incluye el punto de comprobación de proyecto que indica el punto durante la ejecución de una porción del proyecto con anterioridad al fallo del nodo trabajador fallido, y en donde las instrucciones de trabajador actualizadas incluyen el estado de proyecto del nodo trabajador fallido e instrucciones actualizadas relacionadas con el proyecto que se está ejecutando por el único o más nodos trabajadores, en donde un nodo trabajador en funcionamiento completa, mediante el uso de las instrucciones de trabajador actualizadas, la ejecución de la porción del proyecto que se está ejecutando por el nodo trabajador fallido desde el punto de comprobación del proyecto.

Description

DESCRIPCION
Sistemas y metodos para comunicaciones tolerantes a fallos.
Referencia cruzada a solicitudes relacionadas
La presente es una solicitud no provisional de y reivindica el beneficio y prioridad bajo el articulo 35 del Codigo de Estados Unidos § 119(e) de la Solicitud Provisional de Estados Unidos No. 62/019,426, titulada "Fault-Tolerant Communication Strategies for Distributed Processing". Dicha Solicitud Provisional de Estados Unidos se ha presentado el 1 de julio de 2014.
Campo
La presente descripcion se refiere a una tecnologia informatica para tolerar fallos en una rejilla de comunicaciones. De manera especifica, varias tecnicas y sistemas se proveen para detectar un fallo por un nodo en una red de nodos de ordenador en una rejilla de comunicaciones, ajustar la rejilla para evitar el fallo de rejilla, y tomar acciones segun el fallo.
Antecedentes
En una rejilla de comunicaciones que incluye una red de nodos de ordenador que ejecutan un trabajo, un nodo puede fallar. El fallo de un nodo puede provocar un fallo de toda la rejilla y, por lo tanto, un fallo de todo el trabajo y, por consiguiente, provocar que el trabajo se reinicie desde el comienzo. Para un trabajo que incluye un conjunto de datos grande o que puede requerir un largo periodo para completarse, dicho fallo puede ser especialmente problematico.
El documento US-B1-8 041 798 describe un mecanismo de rejilla de autorrestablecimiento que usa protocolos de plataforma entre pares. En una realizacion, dos o mas nodos en una rejilla pueden configurarse como nodos maestros. Uno de los nodos maestros configurados puede servir como el nodo maestro real, y uno puede ser un nodo maestro de seguridad o "de sombra", que no sirve de manera activa como un nodo maestro. Si el nodo maestro activo desciende, los protocolos entre pares pueden usarse para detectar que el nodo maestro no esta activo y que el nodo maestro de seguridad puede asumir las funciones del nodo maestro para la rejilla. El nodo maestro de seguridad puede "ensombrecer" al nodo maestro y, de esta manera, mantener informacion actualizada sobre la configuracion y funciones de la rejilla mediante protocolos de plataforma entre pares, de modo que puede asumir funciones de gestion de rejilla sin discontinuidades.
Breve compendio
La presente descripcion se refiere a una tecnologia informatica para tolerar fallos en una rejilla de comunicaciones. De manera especifica, varias tecnicas y sistemas se proveen para detectar un fallo por un nodo en una red de nodos de ordenador en una rejilla de comunicaciones, ajustar la rejilla para evitar el fallo de rejilla, y tomar acciones segun el fallo.
En una primera realizacion segun se define en la reivindicacion 1, se provee un metodo implementado por ordenador que comprende: transmitir, de un nodo de control primario (902, 1002) conectado a uno o mas nodos trabajadores (910, 912, 914, 916, 1010, 1012, 1014, 1016) en una rejilla de comunicaciones (900, 1000), instrucciones de trabajador relacionadas con un proyecto que se esta ejecutando por el unico o mas nodos trabajadores; generar, por el nodo de control primario, una instantanea de la rejilla de comunicaciones, en donde la instantanea de la rejilla de comunicaciones incluye un estado de proyecto de cada uno del unico o mas nodos trabajadores, en donde un estado de proyecto de un nodo trabajador incluye un estado de una porcion del proyecto que se esta ejecutando por el nodo trabajador en la rejilla de comunicaciones, y en donde la instantanea incluye un punto de comprobacion de proyecto que indica un punto durante la ejecucion de una porcion del proyecto; determinar, por el nodo de control primario, que un nodo trabajador fallido del unico o mas nodos trabajadores ha fallado, en donde el nodo trabajador fallido ha fallado en un tiempo de fallo; determinar que el nodo trabajador fallido ha fallado mientras el proyecto estaba pendiente; identificar un estado de proyecto del nodo trabajador fallido mediante el uso de la instantanea de la rejilla de comunicaciones, en donde el estado de proyecto del nodo trabajador fallido incluye un estado de una porcion del proyecto que se esta ejecutando por el nodo trabajador fallido en el tiempo de fallo, e identificar un punto de comprobacion de proyecto del nodo trabajador fallido de la instantanea que indica un punto durante la ejecucion de una porcion del proyecto con anterioridad al fallo del nodo trabajador fallido; y transmitir instrucciones de trabajador actualizadas, en donde el conjunto de instrucciones incluye el punto de comprobacion de proyecto que indica el punto durante la ejecucion de una porcion del proyecto con anterioridad al fallo del nodo trabajador fallido, y en donde las instrucciones de trabajador actualizadas incluyen el estado de proyecto del nodo trabajador fallido e instrucciones actualizadas relacionadas con el proyecto que se esta ejecutando por el unico o mas nodos trabajadores, en donde un nodo trabajador en funcionamiento completa, mediante el uso de las instrucciones de trabajador actualizadas, la ejecucion de la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido del punto de comprobacion del proyecto.
Las reivindicaciones dependientes 2-13 se refieren a realizaciones preferidas de la presente invencion.
En otra realizacion segun se define en la reivindicacion 14, se provee un producto de programa de ordenador realizado, de manera tangible, en un medio de almacenamiento legible por maquina no transitorio, que incluye instrucciones configuradas para hacer que un aparato de procesamiento de datos lleve a cabo funciones segun el metodo de cualquiera de las reivindicaciones 1 a 13.
En otra realizacion segun se define en la reivindicacion 15, se provee un dispositivo informatico, que comprende: uno o mas procesadores; y una memoria que tiene instrucciones alli almacenadas que, cuando se ejecutan por el unico o mas procesadores, hacen que el dispositivo informatico lleve a cabo funciones segun el metodo de cualquiera de las reivindicaciones 1 a 13.
El presente compendio no pretende identificar caracteristicas claves o esenciales del objeto reivindicado, ni pretende usarse de manera aislada para determinar el alcance del objeto reivindicado.
El objeto debe comprenderse mediante referencia a porciones apropiadas de toda la memoria descriptiva de la presente patente, cualquiera de o todos los dibujos, y cada reivindicacion.
Lo anterior, junto con otras caracteristicas y realizaciones, se convertira en mas aparente tras hacer referencia a la siguiente memoria descriptiva, reivindicaciones y dibujos anexos.
Breve descripcion de los dibujos
La Figura 1 ilustra un ejemplo de un bus de diagrama de bloques que provee una ilustracion generalizada de componentes de hardware y software de una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 2 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 3 ilustra un ejemplo de una rejilla de comunicaciones que incluye dos nodos de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 4 ilustra un ejemplo de una rejilla de comunicaciones que incluye tres nodos de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 5 ilustra un ejemplo de una rejilla de comunicaciones que incluye dos nodos de control, incluidos un nodo de control de seguridad con una instantanea de rejilla almacenada, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 6 ilustra un ejemplo de una rejilla de comunicaciones que incluye dos nodos de control, incluidos un nodo de control de seguridad con una instantanea de rejilla almacenada, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 7 ilustra un ejemplo de una rejilla de comunicaciones que incluye dos nodos de control, incluidos un nodo de control de seguridad con una instantanea de rejilla almacenada, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 8 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nuevo nodo de control primario y el nodo de control de seguridad anterior, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 9 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nodo de control primario y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 10 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 11 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 12 ilustra un ejemplo de una rejilla de comunicaciones que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia.
La Figura 13 es un diagrama de flujo que muestra un proceso a modo de ejemplo para recuperarse de un fallo de nodo de control primario en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 14 es un diagrama de flujo que muestra un proceso a modo de ejemplo para recuperarse de un fallo de nodo trabajador en una rejilla de comunicaciones despues de un fallo de un nodo trabajador, segun las realizaciones de la presente tecnologia.
La Figura 15 es un diagrama de flujo que muestra un proceso a modo de ejemplo para recuperarse de un fallo de nodo de control en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 16 es un diagrama de flujo que muestra un proceso a modo de ejemplo para autenticar una conexion entre nodos desde la perspectiva de un servidor de rejilla, segun las realizaciones de la presente tecnologia.
La Figura 17 es un diagrama de flujo que muestra un proceso a modo de ejemplo para autenticar una conexion entre nodos desde la perspectiva de un cliente de rejilla, segun las realizaciones de la presente tecnologia.
La Figura 18 es un diagrama de flujo que muestra un proceso a modo de ejemplo para asignar una lista de nodos, numerados de m a n, como vastagos para un nodo como, por ejemplo, un nodo de control, segun las realizaciones de la presente tecnologia.
La Figura 19 es un diagrama de flujo que muestra un proceso a modo de ejemplo para que un nodo de control primario distribuya trabajo para un proyecto de cliente entre los otros nodos en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 20 es un diagrama de flujo que muestra un proceso a modo de ejemplo para que un nodo de control de seguridad reciba y almacene informacion de estado actualizada en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 21 es un diagrama de flujo que muestra un metodo a modo de ejemplo para que un nodo trabajador procese un trabajo durante un calculo de rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 22 es un diagrama de flujo que muestra un proceso a modo de ejemplo para radiodifundir datos dentro de una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
La Figura 23 es un diagrama de flujo que muestra un proceso a modo de ejemplo para la reduccion dentro de una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia.
Descripcion detallada
En la siguiente descripcion, en aras de la explicacion, se establecen detalles especificos con el fin de proveer una comprension exhaustiva de las realizaciones de la tecnologia. Sin embargo, sera aparente que varias realizaciones pueden practicarse sin dichos detalles especificos. Las figuras y la descripcion no pretenden ser restrictivas.
La descripcion resultante provee realizaciones a modo de ejemplo solamente y no pretende limitar el alcance, aplicabilidad o configuracion de la descripcion. Mas bien, la descripcion resultante de las realizaciones a modo de ejemplo proveera a las personas con experiencia en la tecnica una descripcion facilitadora para implementar una realizacion a modo de ejemplo. Debe comprenderse que pueden llevarse a cabo varios cambios en la funcion y disposicion de los elementos sin apartarse del alcance de la tecnologia segun se establece en las reivindicaciones anexas.
Detalles especificos se brindan en la siguiente descripcion para proveer una comprension exhaustiva de las realizaciones. Sin embargo, una persona con experiencia ordinaria en la tecnica comprendera que se pueden practicar las realizaciones sin dichos detalles especificos. Por ejemplo, los circuitos, sistemas, redes, procesos y otros componentes pueden mostrarse como componentes en forma de diagrama de bloques con el fin de no oscurecer las realizaciones en detalle innecesario. En otras instancias, los circuitos, procesos, algoritmos, estructuras y tecnicas conocidas se pueden mostrar sin detalle innecesario para evitar oscurecer las realizaciones. Asimismo, se advierte que las realizaciones individuales se pueden describir como un proceso que se ilustra como un diagrama de flujo, un diagrama de flujo de datos, un diagrama de estructura o un diagrama de bloques. Aunque un diagrama de flujo puede describir las funciones como un proceso secuencial, muchas de las funciones se pueden llevar a cabo en paralelo o al mismo tiempo. Ademas, el orden de las funciones se puede redisponer. Un proceso finaliza cuando sus funciones se completan, pero puede tener etapas adicionales no incluidas en una figura. Un proceso puede corresponder a un metodo, funcion, procedimiento, subrutina, subprograma, etc. Cuando un proceso corresponde a una funcion, su finalizacion puede corresponder a un regreso de la funcion a la funcion de llamada o funcion principal.
El termino "medio de almacenamiento legible por maquina" o "medio de almacenamiento legible por ordenador" incluye, pero sin limitacion a ello, dispositivos de almacenamiento portatiles o no portatiles, dispositivos de almacenamiento optico, y varios otros medios que puedan almacenar, contener o llevar instruccion(es) y/o datos. Un medio legible por maquina puede incluir un medio no transitorio en el cual pueden almacenarse datos. Ejemplos de un medio no transitorio pueden incluir, pero sin limitacion a ello, un disco o cinta magnetica, medios de almacenamiento optico como, por ejemplo, disco compacto (CD, por sus siglas en ingles) o disco versatil digital (DVD), memoria flash, memoria o dispositivos de memoria. Un producto de programa de ordenador puede incluir un codigo y/o instrucciones ejecutables por maquina que pueden representar un procedimiento, una funcion, un subprograma, un programa, una rutina, una subrutina, un modulo, un paquete de software, una clase o cualquier combinacion de instrucciones, estructuras de datos o instrucciones de programa. Un segmento de codigo puede acoplarse a otro segmento de codigo o a un circuito de hardware mediante la transmision y/o recepcion de informacion, datos, argumentos, parametros o contenidos de memoria. Informacion, argumentos, parametros, datos, etc., pueden pasarse, reenviarse o transmitirse mediante cualquier medio apropiado incluidos la comparticion de memoria, envio de mensajes, envio de token, transmision en red, etc.
Ademas, las realizaciones pueden implementarse por hardware, software, firmware, middleware, microcodigo, lenguajes de descripcion de hardware, o cualquier combinacion de ellos. Cuando se implementan en software, firmare, middleware o microcodigo, el codigo de programa o segmentos de codigo para llevar a cabo las tareas necesarias (p.ej., un producto de programa de ordenador) se pueden almacenar en un medio legible por maquina. Un procesador puede llevar a cabo las tareas necesarias.
Los sistemas ilustrados en algunas de las figuras pueden proveerse en varias configuraciones. En algunas realizaciones, los sistemas pueden configurarse como un sistema distribuido donde uno o mas componentes del sistema se distribuyen a lo largo de una o mas redes en un sistema informatico en la nube.
La Figura 1 muestra un diagrama de bloques de hardware a modo de ejemplo para una arquitectura de ordenador independiente 100, que puede usarse para contener y/o implementar las instrucciones de programa de realizaciones de sistema de la presente descripcion. De manera mas especifica, la arquitectura 100 puede incluirse dentro de un nodo de una rejilla de comunicaciones, segun se describe ademas en la presente memoria con respecto a las Figuras 2-23. Un bus 152 puede servir como la autopista de informacion que interconecta los otros componentes ilustrados del hardware. Un sistema de procesamiento 154 etiquetado CPU (unidad central de procesamiento, CPU, por sus siglas en ingles) (p.ej., uno o mas procesadores de ordenador) puede llevar a cabo calculos y funciones logicas requeridas para ejecutar un programa. Un medio de almacenamiento legible por procesador como, por ejemplo, memoria de solo lectura (ROM, por sus siglas en ingles) 156 y memoria de acceso aleatorio (RAM, por sus siglas en ingles) 158, puede estar en comunicacion con el sistema de procesamiento 154 y puede contener una o mas instrucciones de programacion. De manera opcional, las instrucciones de programa pueden almacenarse en un medio de almacenamiento legible por ordenador como, por ejemplo, un disco magnetico, disco optico, dispositivo de memoria grabable, memoria flash, u otro medio de almacenamiento fisico. Las instrucciones de ordenador pueden tambien comunicarse mediante una transmision de comunicaciones, tren de datos o una onda portadora modulada.
Un controlador de disco 160 hace interactuar una o mas unidades de disco opcionales con el bus de sistema 152. Dichas unidades de disco pueden ser unidades de disco flexible externas o internas como, por ejemplo, 162, unidades externas o internas de CD-ROM, CD-R, CD-RW o DVD como, por ejemplo, 164, o discos duros externos o internos 166. Segun se ha indicado previamente, dichas varias unidades de disco y controladores de disco son dispositivos opcionales.
Cada uno de los administradores de elementos, memoria intermedia de datos en tiempo real, transportadores, procesador de entrada de archivo, cargador de memoria de acceso compartido a indice de base de datos, memoria intermedia de datos de referencia y administradores de datos pueden incluir una aplicacion de software almacenada en una o mas 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 segun se requiera.
Una interfaz de visualizacion 168 puede permitir que la informacion del bus 156 se muestre en una visualizacion 170 en formato de audio, grafico o alfanumerico. La comunicacion con dispositivos externos puede, de manera opcional, ocurrir mediante el uso de varios puertos de comunicacion 178.
Ademas de los componentes tipo ordenador estandares, el hardware puede tambien incluir dispositivos de entrada de datos como, por ejemplo, un teclado 172, u otro dispositivo de entrada 174 como, por ejemplo, un microfono, mando a distancia, panel tactil, teclado numerico, estilete, sensor de movimiento y/o gestos, sensor de ubicacion, camara fotografica y/o videocamara, puntero, raton y/o joystick.
La presente descripcion se refiere a una tecnologia informatica para tolerar fallos en una rejilla de comunicaciones. De manera especifica, varias tecnicas y sistemas se proveen para detectar un fallo por un nodo en una red de nodos de ordenador en una rejilla de comunicaciones, ajustar la rejilla para evitar el fallo de rejilla, y tomar acciones segun el fallo. De manera mas especifica, las realizaciones de los metodos y sistemas descritos en la presente memoria incluyen identificar o detectar un fallo de un nodo de control primario en una rejilla de comunicaciones y usar un estado de rejilla o informacion de punto de comprobacion para permitir que un nodo de seguridad funcione como un nodo de control primario. El nuevo nodo de control primario puede entonces controlar los nodos trabajadores conectados a aquel para completar el proyecto que se esta llevando a cabo por la rejilla. Realizaciones alternativas incluyen identificar o detectar un fallo de un nodo trabajador en una rejilla de comunicaciones y usar el estado de rejilla o informacion de punto de verificacion para permitir que otro nodo trabajador, bajo el control y la supervision de un nodo de control, asuma el trabajo que se esta llevando a cabo por el nodo trabajador fallido. El trabajo puede redistribuirse entre los nodos trabajadores operativos. Realizaciones alternativas incluyen el uso de umbrales para determinar cuando, despues de una cantidad de tiempo predeterminada, debe establecerse o asumirse que un nodo ha fallado. Dicha determinacion puede permitir a un nodo de control de seguridad sustituir a un nodo de control primario fallido, o a un nodo de control redistribuir el trabajo que se esta llevando a cabo por un nodo trabajador fallido a otro nodo trabajador. Los nodos dentro de la rejilla de comunicaciones pueden detectar una jerarquia o llevar a cabo otros metodos para determinar que nodos deben tomar acciones despues de un fallo. Dichas realizaciones de la presente tecnologia se describen en la presente memoria con respecto a las Figuras 2-23.
Varias rejillas de comunicaciones descritas en las presente memoria se describen como unas que incluyen uno o mas nodos de control (p.ej., un nodo de control primario, nodo de control de seguridad, etc.) y uno o mas nodos trabajadores. Un nodo puede ser, por ejemplo, un dispositivo informatico como, por ejemplo, un ordenador, o un tipo diferente de red o dispositivo electronico como, por ejemplo, un servidor o encaminador. Los nodos de control pueden mantener el conocimiento del estado de los nodos en la rejilla (p.ej., informacion de estado de rejilla), aceptar solicitudes de trabajo de clientes, subdividir el trabajo a lo largo de nodos trabajadores (tanto inicialmente como despues de un fallo de nodo trabajador), coordinar los nodos trabajadores, entre otras responsabilidades. Los nodos trabajadores pueden aceptar solicitudes de trabajo de un nodo de control y proveer al nodo de control resultados del trabajo llevado a cabo por el nodo trabajador. Una rejilla puede iniciarse a partir de un solo nodo (p.ej., una maquina, ordenador, servidor, etc.). El primer nodo puede asignarse o puede iniciarse como el nodo de control primario que controlara cualquier nodo adicional que entre en la rejilla.
Con el fin de anadir otro nodo o maquina a la rejilla, el nodo de control primario puede abrir un par de zocalos de escucha, por ejemplo. Los zocalos pueden usarse por diferentes motivos relacionados con los trabajos del nodo de control. El primero de dichos zocalos puede usarse para aceptar solicitudes de trabajo de clientes, y el segundo zocalo puede usarse para aceptar conexiones de otros nodos de rejilla (p.ej., nodos trabajadores u otros nodos de control). Puede proveerse al nodo de control primario una lista de otros nodos (p.ej., otras maquinas, ordenadores, servidores) que participaran en la rejilla y el papel que cada nodo tendra en la rejilla. El nodo de control primario puede mantener una base de datos de todos los nodos configurados en la rejilla. La base de datos puede ser en una variedad de formas, incluidas, por ejemplo, una tabla de memoria, un archivo de texto simple, un archivo de configuracion total, en un servidor de configuracion, entre otros. Tras el arranque del nodo de control primario (p.ej., el primer nodo en la rejilla), el nodo de control primario puede usar un protocolo de red (p.ej., Protocolo de Caparazon Seguro, o SSH, por sus siglas en ingles) para iniciar el proceso de servidor en cada uno de los otros nodos en la rejilla. Los parametros de linea de comandos, por ejemplo, pueden informar a cada nodo sobre informacion como, por ejemplo: el papel que el nodo tendra en la rejilla, el nombre de anfitrion del nodo de control primario, el numero de puerto en el cual el nodo de control primario esta aceptando conexiones de nodos pares, entre otros. La informacion puede tambien proveerse en un archivo de configuracion, transmitirse en un tunel de caparazon seguro, recuperarse de un servidor de configuracion, entre otros. Mientras las otras maquinas en la rejilla pueden no conocer inicialmente la configuracion de la rejilla, dicha informacion puede tambien enviarse a cada uno de los otros nodos por el nodo de control primario. Las actualizaciones de la informacion de rejilla pueden tambien enviarse posteriormente a dichos nodos.
Para cualquier nodo de control diferente del nodo de control primario anadido a la rejilla, el nodo de control puede abrir tres zocalos. El primer zocalo puede aceptar solicitudes de trabajo de clientes, el segundo zocalo puede aceptar conexiones de otros miembros de rejilla y el tercer zocalo puede conectarse (p.ej., de manera permanente) al nodo de control primario. Cuando un nodo de control (p.ej., nodo de control primario) recibe una conexion de otro nodo de control, primero verifica si el nodo par se encuentra en la lista de nodos configurados en la rejilla. Si no se encuentra en la lista, el nodo de control puede eliminar la conexion. Si se encuentra en la lista, puede entonces intentar autenticar la conexion. La autenticacion de un nodo se describe ademas en la presente memoria con respecto a las Figuras 16 y 17. Si la autenticacion es exitosa, el nodo de autenticacion puede transmitir informacion a su par como, por ejemplo, el numero de puerto en el cual un nodo esta escuchando conexiones, el nombre de anfitrion del nodo, informacion sobre como autenticar el nodo, entre otra informacion. Cuando un nodo como, por ejemplo, el nuevo nodo de control, recibe informacion sobre otro nodo activo, comprobara si ya tiene una conexion con dicho otro nodo. Si no tiene una conexion con dicho nodo, puede entonces establecer una conexion con dicho nodo de control.
Cualquier nodo trabajador anadido a la rejilla puede establecer una conexion con el nodo de control primario y cualquier otro nodo de control en la rejilla. Despues de establecer la conexion, puede autenticarse ante la rejilla (p.ej., cualquier nodo de control, incluidos tanto el primario como el de seguridad, o un servidor o usuario que controlan la rejilla). La autenticacion de un nodo se describe ademas en la presente memoria con respecto a las Figuras 16 y 17. Despues de la autenticacion exitosa, el nodo trabajador puede aceptar informacion de configuracion del nodo de control.
La rejilla puede anadir nuevas maquinas en cualquier momento, iniciado a partir de cualquier nodo de control. Tras anadir un nuevo nodo a la rejilla, el nodo de control puede primero anadir el nodo nuevo a su tabla de nodos de rejilla. El nodo de control puede tambien entonces notificar a cada otro nodo de control sobre el nuevo nodo. Los nodos que reciben la notificacion pueden reconocer que han actualizado su informacion de configuracion.
La Figura 2 ilustra una rejilla de comunicaciones 200 que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 200 incluye un nodo de control 202, etiquetado como nodo de control A. La rejilla de comunicaciones 200 tambien incluye uno o mas nodos trabajadores. Como se muestra en la Figura 2, hay seis nodos trabajadores, el nodo trabajador 210 (etiquetado como nodo trabajador 1), el nodo trabajador 212 (etiquetado como nodo trabajador 2), el nodo trabajador 214 (etiquetado como nodo trabajador 3), el nodo trabajador 216 (etiquetado como nodo trabajador n-2), el nodo trabajador 218 (etiquetado como nodo trabajador n-1) y el nodo trabajador 220 (etiquetado como nodo trabajador n). Aunque la Figura 2 muestra seis nodos trabajadores, una rejilla de comunicaciones segun las realizaciones de la presente tecnologia puede incluir mas o menos de seis nodos trabajadores. Por ejemplo, una rejilla de comunicaciones puede incluir uno, dos o cualquier otro numero de nodos trabajadores. Cada nodo trabajador dentro de la rejilla de comunicaciones 200 se conecta (de manera cableada o inalambrica, y de forma directa o indirecta) al nodo de control 202. Por lo tanto, cada nodo trabajador puede recibir informacion del nodo de control 202 (p.ej., una instruccion para llevar a cabo trabajo en un proyecto) y puede transmitir informacion al nodo de control 202 (p.ej., un resultado del trabajo llevado a cabo en un proyecto). Sin embargo, en ciertas realizaciones, los nodos trabajadores no pueden, por ejemplo, conectarse (de manera comunicativa u otra) a otros nodos trabajadores. Por ejemplo, los nodos trabajadores pueden solo comunicarse con el nodo de control que lo controla, y pueden no tener la capacidad de comunicarse con otros nodos trabajadores en la rejilla de comunicaciones, ya sea que se trate de otros nodos trabajadores controlados por el nodo de control que controla el nodo trabajador, o nodos trabajadores que se controlan por otros nodos de control en la rejilla de comunicaciones. En realizaciones alternativas, los nodos trabajadores pueden comunicarse entre si (ya sea de forma directa o indirecta). Por ejemplo, los nodos trabajadores pueden transmitir datos entre si relacionados con un trabajo que se esta llevando a cabo o con una tarea individual dentro de un trabajo que se esta llevando a cabo por dicho nodo trabajador. De manera alternativa, los nodos trabajadores pueden comunicarse entre si para llevar a cabo funciones de radiodifusion o reduccion como, por ejemplo, aquellas descritas en la presente memoria con respecto a las Figuras 22 y 23, respectivamente.
Un nodo de control como, por ejemplo, el nodo de control 202, puede conectarse con un dispositivo externo con el cual el nodo de control puede comunicarse (p.ej., un usuario de rejilla como, por ejemplo, un servidor u ordenador, puede conectarse a un controlador primario de la rejilla). Por ejemplo, un servidor u ordenador pueden conectarse al nodo de control 202 y pueden transmitir un proyecto o trabajo al nodo. El proyecto puede incluir un conjunto de datos. El conjunto de datos puede ser de cualquier tamano. Una vez que el nodo de control recibe dicho proyecto 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 que se llevaran a cabo por nodos trabajadores. De manera alternativa, para un proyecto que incluye un gran conjunto de datos, el conjunto de datos puede recibirse o almacenarse por una maquina diferente de un nodo de control (p.ej., un nodo de datos Hadoop). Dicha estructura puede evitar un problema de cuello de botella.
Cuando un proyecto se inicia en la rejilla de comunicaciones 200, el nodo de control 202 controla el trabajo que se llevara a cabo para el proyecto (p.ej., en el conjunto de datos). Dado que los nodos trabajadores en la rejilla de comunicaciones 200 llevaran a cabo el trabajo para completar cada tarea dentro del proyecto, el nodo de control 202 asigna trabajo del proyecto a cada nodo trabajador. El nodo de control coordina el trabajo de modo que cada nodo trabajador tiene una porcion del proyecto que el nodo trabajador 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 trabajadores segun varios factores como, por ejemplo, que subconjuntos o porciones de proyectos pueden completarse de manera mas eficaz y en la cantidad de tiempo correcta. Por ejemplo, un nodo trabajador puede llevar a cabo el analisis con respecto a una porcion de datos que ya es local en (p.ej., almacenada en) el nodo trabajador. El nodo de control tambien coordina los resultados del trabajo llevado a cabo por cada nodo trabajador despues de que cada nodo trabajador ejecuta y completa su trabajo. Por ejemplo, el nodo de control puede recibir un resultado de uno o mas nodos trabajadores, 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 trabajadores dentro de la rejilla de comunicaciones 200 llevan a cabo trabajo en la porcion del proyecto que se asigna al nodo trabajador por el nodo de control 202. Despues de que el nodo trabajador recibe una instruccion o proyecto (o porcion de un proyecto) del nodo de control, el nodo trabajador ejecuta la instruccion segun se ha asignado, y puede producir un resultado. El nodo trabajador puede entonces transmitir el resultado otra vez al nodo de control 202 (o a cualquier otro dispositivo de red o dispositivo externo segun lo designado por la asignacion o instrucciones del nodo de control 202 que se ha entregado con o despues de la asignacion).
Cuando un nodo se une a la rejilla de comunicaciones 200 (p.ej., cuando el nodo se acciona o se conecta a un nodo existente en la rejilla o ambos), se asigna al nodo (p.ej., por un sistema operativo de la rejilla) un identificador universal unico (UUID, por sus siglas en ingles). Dicho identificador unico puede ayudar a otros nodos y entidades externas (dispositivos, usuarios, etc.) a identificar el nodo y distinguirlo de otros nodos. Cuando un nodo se conecta a la rejilla, el nodo puede compartir su identificador unico con los otros nodos en la rejilla. Dado que dicho nodo puede compartir su identificador unico, cada nodo puede conocer el identificador unico de cada uno de los otros nodos en la rejilla. Los identificadores unicos pueden tambien designar una jerarquia de cada uno de los nodos (p.ej., nodos de control de seguridad) dentro de la rejilla. Por ejemplo, los identificadores unicos de cada uno de los nodos de control de seguridad pueden almacenarse en una lista de nodos de control de seguridad para indicar un orden en el cual los nodos de control de seguridad sustituiran a un nodo de control primario fallido para convertirse en un nodo de control primario nuevo. Sin embargo, la jerarquia de nodos puede tambien determinarse mediante el uso de metodos diferentes del uso de los identificadores unicos de los nodos. Por ejemplo, la jerarquia puede predeterminarse, o puede asignarse segun otros factores predeterminados.
Cuando un proyecto se presenta para la ejecucion (p.ej., por un cliente o un controlador de la rejilla), este puede asignarse a un conjunto de datos. Uno de los nodos de control puede asignarse como un nodo de control primario para el trabajo. Cualquier nodo de control restante puede asignarse como un nodo de control de seguridad para el proyecto. Todos los nodos trabajadores activos pueden asignarse al proyecto. Sin embargo, en algunas realizaciones, un subconjunto de nodos trabajadores puede asignarse al proyecto para proyectos que requieren recursos inferiores. Despues de que los nodos se asignan a un proyecto, una estructura de datos (a saber, un comunicador) puede crearse. El comunicador puede usarse por el proyecto para la informacion que se compartira entre el codigo de proyecto que se esta ejecutando en cada nodo. Un identificador de comunicacion puede crearse en cada nodo. Un identificador, por ejemplo, es una referencia al comunicador que es valido dentro de un solo proceso en un solo nodo, y el identificador puede usarse cuando se solicitan comunicaciones entre nodos.
Dentro de un comunicador, puede asignarse a cada nodo trabajador y al nodo de control primario un rango. Cada rango, por ejemplo, puede ser un entero no negativo. Cuando se combina con un identificador de comunicador, el rango del nodo puede usarse para comunicarse con un codigo que se esta ejecutando en el mismo proyecto en otro nodo. A diferencia de un identificador unico asignado al nodo, el rango puede solo ser unico dentro de un comunicador. Por lo tanto, el mismo numero de rango puede hacer referencia a diferentes nodos en la rejilla a lo largo de diferentes proyectos. Cuando el codigo de proyecto identifica un nodo especifico en la rejilla, este puede usar el UUID que se asigna a dicho nodo dado que dichos UUID pueden ser permanentes.
Segun se advierte, la rejilla de comunicaciones 200 incluye un solo 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, rompe o de otra manera falla o se convierte en no disponible para controlar y coordinar los nodos trabajadores que se conectan a este, entonces la rejilla de comunicaciones 200 puede fallar. En otras palabras, si el nodo de control 202 falla, entonces cualquier proyecto o trabajo que se esta ejecutando en la rejilla de comunicaciones 200 puede fallar y puede no completarse. Mientras el proyecto puede ejecutarse nuevamente, dicho fallo puede provocar un retardo (retardo serio en algunos casos como, por ejemplo, retardo durante la noche) en la finalizacion del proyecto. Por lo tanto, un sistema tolerante a fallos con multiples nodos de control, incluido un nodo de control de seguridad, puede ser beneficioso.
La Figura 3 ilustra una rejilla de comunicaciones 300 que incluye dos nodos de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla 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 se conectan, de manera comunicativa, mediante el trayecto de comunicacion 351. Por lo tanto, el nodo de control 302 y el nodo de control 304 pueden transmitir informacion, incluida informacion relacionada con la rejilla de comunicaciones o notificaciones, al y recibir informacion del otro. Aunque la rejilla de comunicaciones 300 se muestra en la Figura 3 como una que incluye dos nodos de control, la rejilla de comunicaciones puede incluir mas de dos nodos de control (por ejemplo, como se muestra en la Figura 7) o menos de dos nodos de control (como se muestra, por ejemplo, en la Figura 5).
La rejilla de comunicaciones 300 tambien incluye uno o mas nodos trabajadores. Como se muestra en la Figura 3, hay seis nodos trabajadores: el nodo trabajador 310 (o nodo trabajador 1), el nodo trabajador 312 (o nodo trabajador 2), el nodo trabajador 314 (o nodo trabajador 3), el nodo trabajador 316 (o nodo trabajador n-2), el nodo trabajador 318 (o nodo trabajador n-1) y el nodo trabajador 320 (o nodo trabajador n). Aunque la Figura 3 muestra seis nodos trabajadores, una rejilla de comunicaciones segun las realizaciones de la presente tecnologia puede incluir mas o menos de seis nodos trabajadores. Por ejemplo, una rejilla de comunicaciones puede incluir uno, dos o cualquier otro numero de nodos trabajadores. Por ejemplo, el numero de nodos trabajadores incluido en una rejilla de comunicaciones puede depender de cuan grande es el proyecto o conjunto de datos implementado por la rejilla de comunicaciones. El numero de nodos trabajadores incluido en una rejilla de comunicaciones puede tambien depender de otros factores como, por ejemplo, la capacidad de cada nodo trabajador, el tiempo en el cual a la rejilla de comunicaciones le gustaria completar el proyecto, entre otros.
Segun se advierte, cada nodo trabajador dentro de la rejilla de comunicaciones 300 puede conectarse al nodo de control 302 (aunque en otras realizaciones solo algunos nodos trabajadores pueden conectarse al nodo de control 302). Por lo tanto, cada nodo trabajador puede recibir informacion del nodo de control 302 (p.ej., una instruccion para llevar a cabo trabajo en un proyecto) y puede transmitir informacion al nodo de control 302 (p.ej., un resultado del trabajo llevado a cabo en un proyecto). Sin embargo, los nodos trabajadores no pueden, en ciertas realizaciones, conectarse (de manera comunicativa u otra) a otros nodos trabajadores. Por ejemplo, los nodos trabajadores pueden solo conectarse al nodo de control que lo controla, y no pueden conectarse a otros nodos trabajadores en la rejilla de comunicaciones, ya sea que compartan un nodo de control o no. Cada nodo trabajador dentro de la rejilla de comunicaciones 300 tambien se conecta al nodo de control 304. Por lo tanto, cada nodo trabajador puede recibir informacion del nodo de control 304 y puede transmitir informacion al nodo de control 304.
Un nodo de control como, por ejemplo, el nodo de control 302, puede designarse como el nodo de control primario. Un servidor, ordenador u otro dispositivo externo pueden conectarse al nodo de control primario como, por ejemplo, al nodo de control 302. Una vez que el nodo de control recibe un proyecto, el nodo de control primario puede distribuir porciones del proyecto a sus nodos trabajadores para la ejecucion. Por ejemplo, cuando un proyecto se inicia en la rejilla de comunicaciones 300, el nodo de control primario 302 controla el trabajo que se llevara a cabo para el proyecto con el fin de completar el proyecto segun lo solicitado u ordenado. Dado que los nodos trabajadores en la rejilla de comunicaciones 300 llevaran a cabo el trabajo para completar cada tarea dentro del proyecto, el nodo de control primario 302 puede asignar trabajo del proyecto a cada nodo trabajador. El nodo de control primario coordina el trabajo de modo que cada nodo trabajador tiene una porcion del proyecto que el nodo trabajador puede manejar y puede ejecutar totalmente de manera eficaz. El nodo de control primario tambien coordina y procesa los resultados del trabajo llevado a cabo por cada nodo trabajador despues de que cada nodo trabajador ejecuta y completa su trabajo. Por ejemplo, el nodo de control primario puede recibir un resultado de uno o mas nodos trabajadores, y el nodo de control puede organizar (p.ej., recoger y ensamblar) los resultados recibidos y compilarlos para producir un resultado completo para el proyecto recibido del usuario final.
Otro nodo de control como, por ejemplo, el nodo de control 304, puede designarse como el nodo de control de seguridad. El nodo de control de seguridad 304 no puede controlar cualquier porcion de un proyecto que se esta implementando por la rejilla de comunicaciones 300. En su lugar, el nodo de control de seguridad 304 puede servir como un respaldo para el nodo de control primario 302. Por ejemplo, el nodo de control de seguridad 304 puede asumir como nodo de control primario si el nodo de control primario 302 falla. El nodo de control primario 302 puede, por ejemplo, transmitir una o mas comunicaciones al nodo de control de seguridad 304 (y, por ejemplo, a otros nodos de control o trabajadores dentro de la rejilla de comunicaciones). Dichas comunicaciones pueden enviarse de forma periodica, a intervalos fijos, entre etapas fijas conocidas de la ejecucion del proyecto, entre otros protocolos. Las comunicaciones transmitidas por el nodo de control primario 302 pueden ser de tipos variados y pueden incluir una variedad de tipos de informacion. Por ejemplo, el nodo de control primario 302 puede transmitir instantaneas (p.ej., informacion de estado) de la rejilla de comunicaciones de modo que el nodo de control de seguridad 304 siempre tiene una instantanea reciente de la rejilla de comunicaciones. La instantanea o estado de rejilla puede incluir la estructura de la rejilla (incluidos, por ejemplo, los nodos trabajadores en la rejilla, identificadores unicos de los nodos, o sus relaciones con el nodo de control primario), el estado de un proyecto (incluido, por ejemplo, el estado de cada porcion del nodo trabajador del proyecto), entre otra informacion relacionada con la rejilla de comunicaciones o sus nodos. La instantanea puede tambien incluir el analisis o resultados recibidos de nodos trabajadores en la rejilla de comunicaciones para porciones parciales o totales del proyecto. El nodo de control de seguridad 304 puede recibir y almacenar los datos de seguridad recibidos del nodo de control primario 302. El nodo de control de seguridad 304 puede solicitar dicha instantanea (u otra informacion) del nodo de control primario, o el nodo de control primario puede enviar dicha informacion de forma periodica al nodo de control de seguridad.
Segun se advierte, los datos de seguridad pueden permitir al nodo de control de seguridad asumir como el nodo de control primario si el nodo de control primario falla. De manera mas especifica, los datos de seguridad pueden permitir al nodo de control de seguridad continuar el proyecto que se esta implementando y controlando por el nodo de control primario despues de un fallo del nodo de control primario sin tener que comenzar el proyecto desde cero. Si el nodo de control primario falla, el nodo de control de seguridad 304 puede recuperar la version mas reciente de la instantanea recibida del nodo de control primario 302 y usar la instantanea para continuar el proyecto desde la etapa del proyecto indicada por los datos de seguridad.
El nodo de control de seguridad 304 puede usar varios metodos para determinar que el nodo de control primario 302 ha fallado. En un ejemplo de dicho metodo, el nodo de control primario 302 puede transmitir una comunicacion al nodo de control de seguridad 304 que indica que el nodo de control primario 302 esta funcionando y no ha fallado como, por ejemplo, una comunicacion de latidos. El presente tipo de comunicacion puede transmitirse por el nodo de control primario de forma periodica (p.ej., una vez por segundo, una vez cada cinco segundos, una vez por milisegundo, o cualquier otro intervalo). El nodo de control de seguridad 304 puede determinar si el nodo de control primario 302 ha fallado si el nodo de control de seguridad 304 no ha recibido una comunicacion de latidos durante cierto periodo predeterminado (a saber, un tiempo o umbral de latidos) o, en otras palabras, no ha recibido una comunicacion de latidos que esperaba recibir antes de que transcurriera cierta cantidad de tiempo. Por ejemplo, el nodo de control primario 302 puede transmitir un mensaje de latidos cada sesenta segundos. Si el nodo de control de seguridad 304 no ha recibido un mensaje de latidos del nodo de control primario 302 durante un periodo de mas de sesenta segundos, por ejemplo, setenta segundos, entonces el nodo de control de seguridad 304 puede determinar o suponer que el nodo de control primario 302 ha fallado.
A modo de otro ejemplo de un metodo, el nodo de control de seguridad 304 puede usarse para determinar o suponer que el nodo de control primario 302 ha fallado, el nodo de control de seguridad 304 puede recibir una comunicacion de uno o mas nodos trabajadores, que pueden conectarse tanto al nodo de control primario 302 como al nodo de control de seguridad 304, que el nodo de control primario 302 ha fallado. Por ejemplo, un nodo trabajador puede haber reconocido que el nodo de control primario 302 no se ha comunicado con el nodo trabajador. Por ejemplo, el nodo de control primario 302 puede no haber respondido una consulta o solicitud transmitida por el nodo trabajador al nodo de control primario. En otro ejemplo, el nodo de control primario 302 puede no haber transmitido un mensaje de reconocimiento (p.ej., ACK, por sus siglas en ingles) otra vez al nodo trabajador despues de que el nodo trabajador enviara una comunicacion (p.ej., una comunicacion que incluye resultados de una porcion de un trabajo que se esta llevado a cabo por el nodo trabajador). El nodo de control de seguridad 304 puede tambien, por ejemplo, haber recibido una comunicacion de que el nodo de control primario ha fallado de otro dispositivo como, por ejemplo, un dispositivo externo a la rejilla de comunicaciones. Por ejemplo, un dispositivo externo (p.ej., un controlador) puede haber recibido una indicacion de uno o mas nodos trabajadores de que el nodo de control primario ha fallado, y el dispositivo externo puede haber transmitido una comunicacion al nodo de control de seguridad de que el nodo de control primario ha fallado. El nodo de control de seguridad 304 puede tambien haber recibido una indicacion del nodo de control primario 302 (u otro lugar) directamente de que el nodo de control primario ha fallado o fallara. Por ejemplo, el nodo de control primario (u otro dispositivo) puede predecir, segun datos historicos o patrones detectados, que el nodo de control primario fallara. Sin embargo, antes de que falle, el nodo de control primario puede transmitir (p.ej., radiodifundir o mediante mensaje directo a otros nodos) una comunicacion que incluye una indicacion de que ha fallado o fallara.
Segun se advierte, despues de que el nodo de control de seguridad 304 detecta o se le notifica que el nodo de control primario 302 ha fallado, el nodo de control de seguridad 304 puede asumir las responsabilidades del nodo de control primario. Ademas, el nodo de control 304 puede continuar el proyecto que se estaba implementando por la rejilla de comunicaciones 300 y que se estaba controlando por el nodo de control 302 mediante el uso de datos (p.ej., informacion de estado) recibidos del nodo de control primario antes de que fallara. Como tal, la rejilla de comunicaciones puede evitar el fallo del proyecto debido a un fallo en el nodo de control primario.
La Figura 4 ilustra una rejilla de comunicaciones 400 que incluye tres nodos de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla 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 se conectan, de manera comunicativa, mediante el trayecto de comunicacion 451. Por lo tanto, el nodo de control 402 y el nodo de control 404 pueden transmitir informacion, mediante el trayecto de comunicaciones 451, incluida informacion relacionada con la rejilla de comunicaciones o notificaciones, al y recibir informacion del otro. El nodo de control 402 y el nodo de control 406 se conectan, de manera comunicativa, mediante el trayecto de comunicacion 453. Por lo tanto, el nodo de control 402 y el nodo de control 406 pueden transmitir informacion, mediante el trayecto de comunicacion 453, incluida informacion relacionada con la rejilla de comunicaciones o notificaciones, al y recibir informacion del otro. El nodo de control 404 y el nodo de control 406 se conectan, de manera comunicativa, mediante el trayecto de comunicacion 455. Por lo tanto, el nodo de control 404 y el nodo de control 406 pueden transmitir informacion, mediante el trayecto de comunicaciones 455, incluida informacion relacionada con la rejilla de comunicaciones o notificaciones, al y recibir informacion del otro. Aunque la rejilla de comunicaciones 600 se muestra en la Figura 6 como una que incluye tres nodos de control, la rejilla de comunicaciones puede incluir mas de tres nodos de control o menos de dos nodos de control (como se muestra, por ejemplo, en las Figuras 5 y 6).
La rejilla de comunicaciones 400 tambien incluye uno o mas nodos trabajadores. Como se muestra en la Figura 4, hay seis nodos trabajadores: el nodo trabajador 410 (o nodo trabajador 1), el nodo trabajador 412 (o nodo trabajador 2), el nodo trabajador 414 (o nodo trabajador 3), el nodo trabajador 416 (o nodo trabajador n-2), el nodo trabajador 418 (o nodo trabajador n-1) y el nodo trabajador 420 (o nodo trabajador n). Aunque la Figura 4 muestra seis nodos trabajadores, una rejilla de comunicaciones segun las realizaciones de la presente tecnologia puede incluir mas o menos de seis nodos trabajadores. Por ejemplo, una rejilla de comunicaciones puede incluir uno, dos o cualquier otro numero de nodos trabajadores. Por ejemplo, el numero de nodos trabajadores incluido en una rejilla de comunicaciones puede depender de cuan grande es el proyecto o conjunto de datos implementado por la rejilla de comunicaciones. El numero de nodos trabajadores incluido en una rejilla de comunicaciones puede tambien depender de otros factores como, por ejemplo, la capacidad de cada nodo trabajador, el tiempo designado para que la rejilla de comunicaciones complete el proyecto, entre otros.
De manera similar al nodo de control 602 en la Figura 6, un nodo de control como, por ejemplo, el nodo de control 402, puede designarse como el nodo de control primario en la rejilla de comunicaciones 400. El nodo de control primario 402 puede configurarse para tener un papel similar (y llevar a cabo las mismas funciones o funciones similares) en la rejilla de comunicaciones 400 que el nodo de control primario 602 en la rejilla de comunicaciones 600 segun se describe con respecto a la Figura 6 (y que el nodo de control 502 en la Figura 5). Los otros dos nodos de control en la rejilla de comunicaciones 400 como, por ejemplo, los nodos de control 404 y 406, pueden designarse como nodos de control de seguridad. Puede hacerse referencia a los nodos de control 404 y 406 en la presente memoria como nodos de control de seguridad. Sin embargo, los nodos de control 404 y 406 pueden ser nodos de control primarios en otras realizaciones. En una realizacion en la cual los nodos de control 404 y 406 son nodos de control de seguridad, cada uno de los nodos de control de seguridad 404 y 406 puede llevar a cabo funciones similares, ya sea de forma individual o en combinacion, al nodo de control de seguridad 304 en la rejilla de comunicaciones 300. Por ejemplo, los nodos de control de seguridad 404 y 406 pueden, cada uno, recibir informacion sobre la rejilla de comunicaciones 400, incluidas instantaneas periodicas u otra informacion sobre la rejilla de comunicaciones, del nodo de control primario 402.
El nodo de control de seguridad 404 o el nodo de control de seguridad 406 pueden, de manera similar al nodo de control de seguridad 304 en la rejilla de comunicaciones 300, asumir como o sustituir al nodo de control primario 402 si el nodo de control primario 402 falla. El nodo de control de seguridad que sustituye a un nodo de control primario 402 fallido puede hacerlo de modo que puede llevar a cabo funciones similares al nodo de control de seguridad 304 en la rejilla de comunicaciones 300 despues de un fallo del nodo de control primario 302 y, por consiguiente, puede continuar las funciones o los proyectos que se estaban llevando a cabo por el nodo de control primario 402 fallido. Por ejemplo, el nodo de control de seguridad, ya sea el nodo de control de seguridad 404 o el nodo de control de seguridad 406, puede controlar los nodos trabajadores que estaban conectados al nodo de control primario 402 antes de que el nodo de control primario 402 fallara (y que, segun se advierte, puede tambien conectarse a los nodos de control 404 y 406) y controlar el proyecto o proyectos que se estaban llevando a cabo por dichos nodos trabajadores.
Diferentes metodos pueden llevarse a cabo para determinar que nodo de control de seguridad de un conjunto de nodos de control de seguridad (p.ej., los nodos de control de seguridad 404 y 406) sustituira al nodo de control primario 402 fallido y se convertira en el nuevo nodo de control primario. Por ejemplo, el nuevo nodo de control primario puede elegirse segun los identificadores unicos asignados a cada nodo de control de seguridad (p.ej., cualquier nodo de control de seguridad que tenga el identificador unico mas alto o mas bajo). Dicha clasificacion de identificadores unicos puede llamarse una "jerarquia" de los nodos de control de seguridad. En una realizacion alternativa, un nodo de control de seguridad puede asignarse para que sea el nuevo nodo de control primario por otro dispositivo en la rejilla de comunicaciones (p.ej., el nodo de control primario 402 fallido) o de un dispositivo externo (p.ej., una infraestructura de sistema o un usuario final como, por ejemplo, un servidor u ordenador, que controla la rejilla de comunicaciones). En otra realizacion alternativa, el nodo de control de seguridad que asume como el nuevo nodo de control primario puede designarse segun el ancho de banda u otras estadisticas sobre la rejilla de comunicaciones. Por ejemplo, la decision puede basarse en que nodo tiene mas ancho de banda, que nodo incluye una version mas reciente de una instantanea de la rejilla de comunicaciones, que nodo esta mejor equipado (p.ej., mediante el uso de estadisticas sobre el nodo o el resto de la rejilla de comunicaciones) para manejar el proyecto actual que se esta ejecutando por la rejilla de comunicaciones, entre otros. Dado que los nodos de control de seguridad pueden comunicarse entre si (p.ej., mediante trayectos de comunicacion 451, 453 y 455), un algoritmo interno puede ejecutarse, o la informacion puede compartirse entre los nodos de control de seguridad, para designar uno de los nodos de control de seguridad como el nuevo nodo de control primario.
La Figura 5 ilustra una rejilla de comunicaciones 500 que incluye dos nodos de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 500 incluye el nodo de control primario 502 y el nodo de control de seguridad 504. El nodo de control primario 502 y el nodo de control de seguridad 504 pueden tener roles similares en la rejilla de comunicaciones 500 que los nodos de control 602 y 604, respectivamente, en la rejilla de comunicaciones 600 en la Figura 6. El nodo de control primario 502 y el nodo de control de seguridad 504 se conectan, de manera comunicativa, mediante el trayecto de comunicacion 551. Por lo tanto, el nodo de control primario 502 y el nodo de control de seguridad 504 pueden transmitir informacion, incluida informacion relacionada con la rejilla de comunicaciones o notificaciones, al y recibir informacion del otro. Aunque la rejilla de comunicaciones 500 se muestra en la Figura 5 como una que incluye dos nodos de control, la rejilla de comunicaciones puede incluir mas de dos nodos de control (por ejemplo, como se muestra en la Figura 4) o menos de dos nodos de control (como se muestra, por ejemplo, en la Figura 5).
La rejilla de comunicaciones 500 tambien incluye uno o mas nodos trabajadores. Como se muestra en la Figura 5, hay cuatro nodos trabajadores: el nodo trabajador 510 (o nodo trabajador 1), el nodo trabajador 512 (o nodo trabajador 2), el nodo trabajador 514 (o nodo trabajador 3) y el nodo trabajador 516 (o nodo trabajador 4). Aunque la Figura 5 muestra cuatro nodos trabajadores, una rejilla de comunicaciones segun las realizaciones de la presente tecnologia puede incluir mas o menos de cuatro nodos trabajadores.
Segun se advierte, un nodo de control primario (p.ej., el nodo de control primario 502) puede transmitir instantaneas de la rejilla de comunicaciones de modo que un nodo de control de seguridad (p.ej., el nodo de control de seguridad 504) siempre tiene una instantanea reciente de la rejilla de comunicaciones. Por ejemplo, como se muestra en la Figura 5, el nodo de control primario 502 puede transmitir una instantanea de la rejilla de comunicaciones 540 al nodo de control de seguridad 504. La instantanea puede incluir la estructura de la rejilla, incluidos los nodos trabajadores en la rejilla y sus relaciones con el nodo de control primario, el estado de un proyecto (incluido, por ejemplo, el estado de cada porcion del nodo trabajador del proyecto), entre otra informacion. La instantanea puede tambien incluir el analisis o resultados recibidos de nodos trabajadores en la rejilla de comunicaciones para porciones parciales o totales del proyecto. La instantanea puede tambien incluir cualquier otra informacion que ayude al nodo de control de seguridad a continuar procesando el trabajo a partir de un estado conocido del trabajo despues de un fallo del nodo de control primario. El nodo de control de seguridad 504 puede recibir y almacenar la instantanea 540 recibida del nodo de control primario 502. El nodo de control de seguridad 504 puede iniciar una recepcion de una instantanea de la rejilla de comunicaciones mediante la solicitud de dicha instantanea (u otra informacion) del nodo de control primario, o el nodo de control primario puede enviar dicha informacion de forma periodica al nodo de control de seguridad. El nodo de control de seguridad 504 puede almacenar la instantanea 540 en un almacenamiento como, por ejemplo, en un almacenamiento local 525. El almacenamiento local 525 puede ser un almacenamiento a corto plazo como, por ejemplo, cache, o un almacenamiento mas a largo plazo dentro del nodo de control de seguridad 504. En una realizacion alternativa, el nodo de control de seguridad 504 puede almacenar la instantanea 540 (u otros datos) en una ubicacion remota. Por ejemplo, el nodo de control de seguridad 504 puede, despues de recibir la instantanea 540 de la rejilla de comunicaciones del nodo de control primario 502, transmitir la instantanea 540 a un almacenamiento externo al nodo de control de seguridad 504. El nodo de control de seguridad 504 puede entonces, tras recibir o detectar una notificacion de un fallo de un nodo de control primario, recuperar una instantanea de rejilla almacenada como, por ejemplo, la instantanea 540, del almacenamiento.
La Figura 6 ilustra una rejilla de comunicaciones 600 que incluye dos nodos de control, incluidos un nodo de control de seguridad con una instantanea de rejilla almacenada, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. De manera mas especifica, la Figura 6 ilustra que el nodo de control primario 602 puede fallar (indicado por lineas punteadas) y, por lo tanto, que los trayectos de comunicacion entre el nodo de control primario 602 y otros nodos en la rejilla de comunicaciones (p.ej., el trayecto 651 entre el nodo de control primario 602 y el nodo de control de seguridad 604 asi como los trayectos entre el nodo de control primario 602 y los nodos trabajadores 610-616) pueden cortarse debido a dicho fallo. Sin embargo, como se muestra en la rejilla de comunicaciones 600, el nodo de control de seguridad 604 puede conectarse, de manera comunicativa (p.ej., de forma cableada o inalambrica), a cada uno de los nodos trabajadores dentro de la rejilla de comunicaciones 600. Segun se advierte, los datos de seguridad pueden permitir al nodo de control de seguridad asumir como el nodo de control primario si el nodo de control primario falla. De manera mas especifica, los datos de seguridad pueden permitir al nodo de control de seguridad continuar el proyecto que se esta implementando y controlando por el nodo de control primario despues de un fallo del nodo de control primario sin tener que comenzar el proyecto desde cero. Si el nodo de control primario falla, el nodo de control de seguridad 504 puede recuperar la version mas reciente (u otra version almacenada, si corresponde) de la instantanea recibida del nodo de control primario 502 y usar la instantanea (y otros datos de seguridad) para continuar el proyecto desde la etapa del proyecto indicada por los datos de seguridad.
La Figura 7 ilustra una rejilla de comunicaciones 700 que incluye dos nodos de control, incluidos un nodo de control de seguridad con una instantanea de rejilla almacenada, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 700 es similar a la rejilla de comunicaciones 600, pero ademas ilustra que el nodo de control de seguridad 704 puede recibir una notificacion de un fallo del nodo de control primario 702 de varias fuentes diferentes. Segun se advierte, un nodo de control de seguridad (p.ej., el nodo de control de seguridad 704) puede reemplazar a un nodo de control primario (p.ej., el nodo de control primario 702) como el nuevo nodo de control primario dentro de la rejilla de comunicaciones (p.ej., la rejilla de comunicaciones 700) despues del fallo del nodo de control primario. Puede notificarse al nodo de control de seguridad 704 que el nodo de control primario 702 ha fallado en una variedad de maneras diferentes. Por ejemplo, el nodo de control de seguridad 704 puede recibir una comunicacion que incluye una notificacion como, por ejemplo, la comunicacion 745, que incluye una indicacion de que el nodo de control primario 702 ha fallado o fallara dentro de cierta cantidad de tiempo. El nodo de control de seguridad 704 puede recibir dicha notificacion del propio nodo de control primario 702. El nodo de control primario 702 puede identificar que ha fallado o fallara y posteriormente o de forma simultanea transmitir una notificacion de la presente cuestion al nodo de control de seguridad 704, a otro nodo o grupo de nodos en la rejilla, o a un servidor o administrador (p.ej., servidor/administrador 760) u otra infraestructura de sistema interna o externa a la rejilla de comunicaciones. El nodo de control de seguridad puede entonces recibir una comunicacion 745 del servidor o administrador 760. Por ejemplo, dicha notificacion puede venir despues de que el servidor o administrador 760 hayan recibido dicha notificacion del nodo de control primario 702. De manera alternativa, el servidor o administrador 760 pueden haber recibido dicha notificacion de un nodo trabajador dentro de la rejilla, o de otra fuente. En otro ejemplo alternativo, el servidor o administrador 760 pueden transmitir mensajes de latidos periodicos al nodo de control primario 702 para determinar si el nodo de control primario 702 esta funcionando (a saber, no ha fallado), y pueden hacer iniciado una notificacion transmitida al nodo de control de seguridad 704 porque se ha determinado que el nodo de control primario 702 ha fallado dado que no ha recibido una respuesta a uno o mas de sus mensajes de latidos durante cierto periodo predeterminado. El nodo de control de seguridad 704 puede entonces recibir una notificacion de un fallo del nodo de control primario directamente de un nodo trabajador como, por ejemplo, del nodo trabajador 716 segun se muestra en la Figura 7.
La Figura 8 ilustra una rejilla de comunicaciones 800 que incluye un nuevo nodo de control primario y el nodo de control de seguridad anterior, y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 800 incluye el nuevo nodo de control primario 804, que puede haber pasado de ser un nodo de control de seguridad anterior antes de que un nodo de control primario previo fallara. Como se muestra en la Figura 8, el nuevo nodo de control primario 804 se conecta, como lo hacia cuando era un nodo de control de seguridad, a uno o mas nodos trabajadores. En la rejilla de comunicaciones 800, el nuevo nodo de control primario 804 se conecta a nodos trabajadores 810, 812, 814 y 816. Sin embargo, el nuevo nodo de control primario 804 puede conectarse a un numero mayor o menor de nodos trabajadores que los cuatro nodos trabajadores que se muestran en la Figura 8. El nuevo nodo de control primario 804 puede sustituir o reemplazar a un nodo de control primario previo en la misma capacidad o funcionalidad que el anterior, ahora fallido, nodo de control primario. En otras palabras, el nuevo nodo de control primario 804 puede controlar el proyecto que se esta ejecutando en la rejilla de comunicaciones 800 y, por lo tanto, puede controlar los nodos trabajadores conectados a aquel y que estan ejecutando diferentes porciones del proyecto.
El nuevo nodo de control primario 804, tras convertirse en el nodo de control primario dentro de la rejilla de comunicaciones 800, puede comenzar el proyecto de nuevo (por ejemplo, si el ultimo estado conocido de la rejilla segun se ha almacenado por el nuevo nodo de control primario es el comienzo del proyecto). En otra realizacion, el nuevo nodo de control primario 804 puede volver a un punto de comprobacion reanudando el trabajo en el proyecto en un punto de comprobacion en algun punto durante el progreso del proyecto que se esta ejecutando. En una realizacion, el nuevo nodo de control primario 804 puede reanudar la ejecucion del proyecto, junto con los nodos trabajadores conectados a aquel, desde el punto exacto donde el anterior nodo de control primario se detuvo. En otra realizacion, el nuevo nodo de control primario 804 puede reanudar la ejecucion del proyecto desde un punto de comprobacion (a saber, volver a un punto de comprobacion) que se encuentra en un punto en el proyecto previo al punto donde el nodo de control primario previo se detuvo. El nuevo nodo de control primario 804 puede obtener informacion sobre dicho punto de comprobacion mediante el uso de una instantanea de la rejilla recuperada del almacenamiento dentro del nuevo nodo de control primario 804 o del almacenamiento dentro de otro nodo u otro dispositivo.
La Figura 9 ilustra una rejilla de comunicaciones 900 que incluye un nodo de control primario y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 900 incluye el nuevo nodo de control primario 902 y nodos trabajadores 910, 912, 914 y 916. Segun se advierte, el nodo de control primario 902 puede distribuir el trabajo dentro de un proyecto que se esta ejecutando a cada uno de los nodos trabajadores dentro de la rejilla de comunicaciones de modo que cada nodo trabajador lleva a cabo o ejecuta una porcion del proyecto. Por ejemplo, como se muestra en la Figura 9, puede asignarse a cada uno de los nodos trabajadores 910, 912, 914 y 916 una porcion de un cuarto del proyecto que se esta ejecutando por la rejilla de comunicaciones 900 y controlando por el nodo de control primario 902. Por ejemplo, el nodo de control primario 902 puede transmitir instrucciones a los nodos trabajadores, por ejemplo, mediante trayectos de comunicaciones 960, 962, 964 y 966, respectivamente. Ademas, los nodos trabajadores pueden tambien transmitir informacion al nodo de control primario 902. Por ejemplo, los nodos trabajadores pueden generar (y, por ejemplo, almacenar localmente) y transmitir puntos de comprobacion de su progreso dentro de un proyecto, o su porcion asignada de un proyecto, al nodo de control primario 902 de modo que el nodo de control primario 902 recibe y almacena puntos de comprobacion periodicos o estados del progreso de cada uno de los nodos trabajadores. Los puntos de comprobacion recibidos para cada nodo trabajador pueden permitir al nodo de control primario 902 compilar estados del progreso del proyecto que se esta ejecutando en la rejilla de comunicaciones. Los puntos de comprobacion pueden permitir al nodo de control primario 902 generar una instantanea de la rejilla de comunicaciones, o los puntos de comprobacion pueden tratarse como datos separados e independientes que se usaran en otras capacidades por el nodo de control primario. Despues de que los puntos de comprobacion se reciben, estos pueden almacenarse por el nodo de control primario en el almacenamiento 925. El nodo de control primario 902 puede tambien almacenar cualquier dato generado a partir de los puntos de comprobacion, incluida, por ejemplo, una instantanea de la rejilla de comunicaciones.
Los puntos de comprobacion pueden generarse por un nodo trabajador (o un nodo de control) despues de que una etapa del proyecto se haya completado (p.ej., si el proyecto es una operacion de multiples etapas). De manera alternativa, los puntos de comprobacion pueden generarse despues de que cierta cantidad o cantidades del proyecto (p.ej., cierto porcentaje) se hayan completado (p.ej., si el proyecto incluye un gran conjunto de datos). El metodo para generar y guardar o transmitir informacion del punto de comprobacion puede elegirse segun el proyecto y/o la situacion por el nodo de control primario (o, en otras realizaciones, por otros nodos en la rejilla o por un usuario externo a la rejilla).
En algunas situaciones, el fallo puede ocurrir en nodos trabajadores. Las Figuras 10-12 ilustran una rejilla de comunicaciones que incluye un nodo de control y uno o mas nodos trabajadores, segun las realizaciones de la presente tecnologia. La rejilla de comunicaciones 1000 incluye el nodo de control primario 1002 y nodos trabajadores 1010, 1012, 1014 y 1016. Segun se advierte, el nodo de control primario 1002 puede distribuir el trabajo dentro de un proyecto o conjunto de datos que se esta ejecutando a cada uno de los nodos trabajadores dentro de la rejilla de comunicaciones de modo que cada nodo trabajador lleva a cabo o ha ejecutado una porcion del proyecto. Por ejemplo, como se muestra en la Figura 10, puede asignarse a cada uno de los nodos trabajadores 1010, 1012, 1014 y 1016 una porcion de un cuarto del proyecto que se esta ejecutando por la rejilla de comunicaciones 1000 y que se esta controlando por el nodo de control primario 1002. Los nodos trabajadores pueden transmitir puntos de comprobacion de su progreso dentro de un proyecto, o su porcion asignada de un proyecto, al nodo de control primario 1002 de modo que el nodo de control primario 1002 recibe y almacena puntos de comprobacion periodicos o estados del progreso de cada uno de los nodos trabajadores. La rejilla de comunicaciones 1000 tambien muestra que uno de los nodos trabajadores, el nodo trabajador 1012, puede fallar (indicado por lineas punteadas en la Figura 10) y, por lo tanto, que los trayectos de comunicacion entre el nodo trabajador 1012 y otros nodos en la rejilla de comunicaciones (p.ej., el trayecto 1062 entre el nodo de control primario 1002 y el nodo trabajadores 1012) pueden cortarse debido a dicho fallo.
Sin embargo, la rejilla de comunicaciones 1000 puede representar un fallo de un nodo trabajador como, por ejemplo, el nodo trabajador 1012. Segun se advierte, el nodo trabajador 1012 se conecta, de manera comunicativa, al nodo de control primario 1002, que puede controlar al nodo trabajador 1012 y/o el trabajo que se esta llevando a cabo por el nodo trabajador 1012. Si el nodo trabajador 1012 falla, entonces el nodo de control primario 1002 puede detectar que el nodo trabajador 1012 ha fallado o puede recibir una notificacion de que el nodo trabajador 1012 ha fallado. Por ejemplo, puede notificarse al nodo de control primario 1002 que el nodo trabajador 1012 ha fallado por otro nodo trabajador (p.ej., el nodo trabajador 1010, 1014 y/o 1016, que tambien se conectan, de manera comunicativa, al nodo de control primario 1002) o, si uno existe, otro nodo de control (p.ej., un nodo de control de seguridad) en la rejilla de comunicaciones 1000. De manera alternativa, puede notificarse al nodo de control primario 1002 por un usuario (p.ej., servidor o administrador 1170 en la Figura 11 de la rejilla mediante comunicacion 1172, como se muestra dentro de la rejilla de comunicaciones 1100 en la Figura 11, descrita en mayor detalle en la presente memoria). Realizaciones alternativas incluyen el uso de umbrales para determinar cuando, despues de una cantidad de tiempo predeterminada, debe establecerse o asumirse que un nodo trabajador ha fallado. Por ejemplo, si un nodo trabajador no ha transmitido una comunicacion de reconocimiento (p.ej., ACK) u otra comunicacion esperada, segun lo advertido por un nodo de control u otro nodo que se espera que reciba dicha comunicacion, durante cierta cantidad de tiempo que es mayor que un umbral predeterminado, puede suponerse que el nodo trabajador ha fallado. Dicha determinacion puede permitir a un nodo de control redistribuir trabajo que se esta llevando a cabo por un nodo trabajador fallido a otro nodo trabajador.
Con el fin de compensar la perdida del nodo trabajador 1012 despues de que este falla, o, en otras palabras, de compensar el trabajo asignado al nodo trabajador 1012, el nodo de control primario 1002 puede redistribuir el trabajo que se esta llevando a cabo por el nodo trabajador 1012 a otros nodos trabajadores en la rejilla de comunicaciones 1000. Por ejemplo, despues de que el nodo de control primario 1002 conoce que el nodo trabajador 1012 ha fallado, el nodo de control primario 1002 puede transmitir una comunicacion (p.ej., mensaje o notificacion) a cada uno de los otros nodos trabajadores (p.ej., todos o parte de los nodos trabajadores aun conectados al nodo de control primario 1002 y en la rejilla de comunicaciones 1000) incluida la porcion del trabajo que se esta redistribuyendo del nodo trabajador 1012 en los que se les asigna trabajar. Por ejemplo, como se muestra en la rejilla de comunicaciones 1200 de la Figura 12 (descrita en mayor detalle en la presente memoria), el nodo de control primario 1002 puede transmitir una comunicacion 1274 al nodo trabajador 1010, una comunicacion 1576 al nodo trabajador 1014, y una comunicacion 1278 al nodo trabajador 1016 incluida dicha informacion. Despues de recibir dicha comunicacion, los nodos trabajadores 1010, 1014 y 1016 pueden anadir el trabajo identificado en su comunicacion recibida al trabajo que este llevara a cabo en el proyecto. Por ejemplo, si el trabajo restante del nodo trabajador 1012 fallido se redistribuye igualmente entre el nodo trabajador 1010, 1014 y 1016, puede asignarse a cada uno de los nodos trabajadores 1010, 1014 y 1016 un tercio del trabajo total restante para el proyecto despues de que dicho trabajo se haya reasignado. Sin embargo, otras porciones o divisiones del trabajo son tambien posibles. Por ejemplo, una alternativa puede incluir anadir un nuevo nodo trabajador a la rejilla para asumir el trabajo adicional.
En una realizacion alternativa, el nodo de control primario 1002 puede transmitir una comunicacion (p.ej., mensaje de comunicador de ruptura) a cada uno de los nodos trabajadores aun en la rejilla de comunicaciones 1000 incluido un mensaje de que cada uno de los nodos trabajadores debe tambien fallar a proposito. En otras palabras, el mensaje puede incluir o provocar un error de comunicacion dentro de cada nodo trabajador de modo que cada uno de los nodos trabajadores aun en la rejilla falla. Despues de que cada uno de los nodos trabajadores falla, estos pueden, cada uno, recuperar su punto de comprobacion guardado mas reciente de su estado. Cada nodo trabajador puede tambien recuperar el estado o punto de comprobacion del primer nodo trabajador fallido, el nodo trabajador 1012. Por ejemplo, como se muestra en la Figura 12, el nodo de control primario 1002 puede transmitir el punto de comprobacion 1242 de nodo trabajador 1012 fallido a los nodos trabajadores 1010, 1014 y 1016. Ello puede permitir a cada uno de los nodos trabajadores aun existentes (p.ej., no fallidos) continuar el trabajo en el proyecto desde su punto de comprobacion mas reciente al mismo tiempo y, entonces, no se pierden el trabajo que se realizara en el proyecto. Ello puede tambien permitir a los nodos trabajadores continuar el trabajo en el trabajo redistribuido del nodo trabajador fallido en el punto donde el nodo trabajador 1012 ha fallado cuando estaba llevando a cabo el trabajo. El uso de dicho punto de comprobacion puede permitir a los nodos trabajadores ser eficaces para no duplicar trabajo ya completado o no perderse trabajo que necesita completarse. Dichos puntos de comprobacion pueden almacenarse dentro de cada nodo trabajador o pueden recuperarse de otro dispositivo o fuente (p.ej., otro nodo trabajador, un nodo de control, una red en la nube, u otra ubicacion). Puede ser util almacenar puntos de comprobacion en dispositivos diferentes de un nodo de control de seguridad en caso, por algun motivo, de que el nodo de control de seguridad no haya almacenado el punto de comprobacion, o en caso de que el nodo de control de seguridad falle y un nuevo nodo de control se una a la rejilla en un momento posterior. En dicha realizacion, un nodo trabajador u otros dispositivos o redes que hayan almacenado el punto de comprobacion pueden transmitir el punto de comprobacion u otra informacion de estado al nuevo nodo de control.
La Figura 13 es un diagrama de flujo 1300 que muestra un proceso a modo de ejemplo para ajustar un proyecto de trabajo en una rejilla de comunicaciones despues de un fallo de un nodo de control, segun las realizaciones de la presente tecnologia. El proceso puede incluir, por ejemplo, recibir, en un nodo de control de seguridad conectado a un nodo de control primario y a un nodo trabajador en una rejilla de comunicaciones, informacion de estado de rejilla, la informacion de estado de rejilla incluyendo un estado de proyecto del nodo de control primario o un estado de proyecto del nodo trabajador, en donde el estado de proyecto del nodo de control primario y el estado de proyecto del nodo trabajador incluyen un estado de una o mas porciones de un proyecto que se esta ejecutando por los nodos primario y trabajador en la rejilla de comunicaciones (etapa 1302). El proceso puede tambien incluir almacenar la informacion de estado de rejilla dentro del nodo de control de seguridad (etapa 1304). El proceso puede tambien incluir recibir una comunicacion de fallo que incluye una indicacion de que el nodo de control primario ha fallado (etapa 1306). El proceso puede tambien incluir designar el nodo de control de seguridad como un nuevo nodo de control primario segun la comunicacion de fallo tras recibir la comunicacion de fallo (etapa 1308). El proceso puede tambien incluir recibir informacion de estado de rejilla actualizada segun la indicacion de que el nodo de control primario ha fallado, en donde la informacion de estado de rejilla actualizada incluye un estado de proyecto actualizado del nodo de control primario o un estado de proyecto actualizado del nodo trabajador (etapa 1310). El proceso puede tambien incluir transmitir un conjunto de instrucciones segun la informacion de estado de rejilla actualizada, en donde el conjunto de instrucciones incluye instrucciones para que los nodos trabajadores continuen el trabajo en el proyecto despues del fallo del nodo de control primario (etapa 1312).
La Figura 14 es un diagrama de flujo 1400 que muestra un proceso a modo de ejemplo para ajustar un proyecto de trabajo en una rejilla de comunicaciones despues de un fallo de un nodo trabajador, segun las realizaciones de la presente tecnologia. El proceso puede incluir, por ejemplo, transmitir, en un nodo de control primario conectado a uno o mas nodos trabajadores en una rejilla de comunicaciones, instrucciones de trabajador relacionadas con un proyecto que se esta ejecutando por el unico o mas nodos trabajadores (etapa 1402). El proceso puede tambien incluir generar una instantanea de la rejilla de comunicaciones, en donde la instantanea de la rejilla de comunicaciones incluye un estado de proyecto de cada uno del unico o mas nodos trabajadores, en donde un estado de proyecto de un nodo trabajador incluye un punto de comprobacion de proyecto de una porcion del proyecto que se esta ejecutando por el nodo trabajador en la rejilla de comunicaciones (etapa 1404). El proceso puede tambien incluir determinar que un nodo trabajador fallido del unico o mas nodos trabajadores ha fallado en un tiempo de fallo (etapa 1406). El proceso puede tambien incluir determinar un estado de proyecto del nodo trabajador fallido mediante el uso de la instantanea de la rejilla de comunicaciones, en donde el estado de proyecto del nodo trabajador fallido incluye un punto de comprobacion de proyecto del nodo trabajador fallido en el tiempo de fallo del nodo trabajador fallido (etapa 1408). El proceso puede tambien incluir transmitir instrucciones de trabajador actualizadas, en donde las instrucciones de trabajador actualizadas incluyen el estado de proyecto del nodo trabajador fallido e instrucciones actualizadas relacionadas con el proyecto que se esta ejecutando por el unico o mas nodos trabajadores, en donde cuando las instrucciones de trabajador actualizadas se reciben, un nodo trabajador en funcionamiento completa la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido (etapa 1410).
La Figura 15 es un diagrama de flujo 1500 que muestra un proceso a modo de ejemplo para ajustar un proyecto de trabajo en una rejilla de comunicaciones despues de un fallo de un nodo de control, segun las realizaciones de la presente tecnologia. El proceso puede incluir, por ejemplo, recibir, por un nodo de control de seguridad en una rejilla de comunicaciones, una comunicacion inicial que incluye una indicacion de que un nodo de control primario se conecta a la rejilla de comunicaciones (etapa 1502). El proceso puede tambien incluir recibir una instantanea de la rejilla de comunicaciones, en donde la instantanea de la rejilla de comunicaciones incluye un estado de trabajador de cada uno de los multiples nodos trabajadores conectados al nodo de control primario y al nodo de control de seguridad (etapa 1504). El proceso puede tambien incluir determinar un periodo desde que la comunicacion inicial se ha recibido (etapa 1506). El proceso puede tambien incluir comparar el periodo con un periodo umbral para determinar que el nodo de control primario ha fallado, en donde tras recibir la comunicacion de fallo, el nodo de control de seguridad es un nuevo nodo de control primario (etapa 1508). El proceso puede tambien incluir transmitir un conjunto de instrucciones segun el estado de trabajador de uno o mas nodos trabajadores de los multiples nodos trabajadores, en donde el conjunto de instrucciones incluye instrucciones para continuar el trabajo en el proyecto despues del fallo del nodo de control primario (etapa 1510).
La Figura 16 es un diagrama de flujo 1600 que muestra un proceso a modo de ejemplo para autenticar una conexion entre nodos desde la perspectiva de un servidor de rejilla (p.ej., de un nodo establecido en una rejilla), segun las realizaciones de la presente tecnologia. Segun se advierte, cuando un nodo de control (p.ej., nodo de control primario) recibe una conexion de otro nodo de control, primero puede comprobar si el nodo par se encuentra en una lista almacenada de nodos configurados en la rejilla. Si no se encuentra en la lista, puede eliminar (a saber, rechazar) la conexion. Si se encuentra en la lista, puede entonces intentar autenticar la conexion para asegurar que el nuevo nodo pertenece a la rejilla. La autenticacion puede mostrarse a traves del intercambio de diferentes tipos de mensajes que permiten la autenticacion unidireccional o bidireccional. Por ejemplo, los diferentes tipos de mensajes pueden incluir:
- MSG_AUTH_TOKEN_RSP ("ATR"). El presente mensaje puede significar que un bloque de datos de autenticacion se esta enviando, y la respuesta debe incluir un bloque de datos. El mensaje puede incluir un identificador de algoritmo. La respuesta esperada puede ser MSG_AUTH_TOKEN_RSP, MSG_AUTH_TOKEN_NO_RSP o MSG_AUTH_FAILED.
- MSG_AUTH_TOKEN_NO_RSP ("ATNR"). El presente mensaje puede significar que un bloque de datos de autenticacion se provee, y no se necesitan datos de autenticacion adicionales en respuesta. El mensaje puede incluir un identificador de algoritmo. Un mensaje ATNR a modo de ejemplo puede incluir un nombre de usuario y/o contrasena, u otros tipos de mensajes.
- MSG_AUTH_COMPLETE ("ATC"). El presente mensaje puede incluir una indicacion de que la autenticacion se ha completado con exito.
- MSG_AUTH_FAILED ("ATF"). El presente mensaje puede indicar que la autenticacion ha fallado. El mensaje puede incluir un codigo de fallo de diagnostico.
Como se muestra en la Figura 16, un nodo de autenticacion puede esperar un mensaje (bloque 1602) y recibir un mensaje (bloque 1604). Cuando el mensaje se recibe, el nodo puede determinar si el mensaje es un mensaje ATR o ATNR (bloque 1606). Si el mensaje no es un mensaje ATR o ATNR, entonces el nodo puede transmitir un mensaje ATF y el proceso puede finalizar. Si se determina que el mensaje es un mensaje ATR o ATNR, entonces el nodo de autenticacion puede, en 1610 o 1612, validar los datos recibidos. Si los datos son validos, y el mensaje era un ATR (segun se determina en el bloque 1614), entonces el nodo puede generar una respuesta al ATR en el bloque 1616 porque el mensaje ATR requiere una respuesta. Entonces, el nodo puede determinar si mas datos de autenticacion se necesitan en el bloque 1618, y envia un ATR en 1630 si es asi. Si no, entonces en nodo puede 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. Si lo es, la autenticacion ha sido exitosa como se muestra en el bloque 1640. Si no lo es, puede enviar un ATF en respuesta en el bloque 1632 (porque la autenticacion ha fallado, como se muestra en los bloques 1634 y 1638).
La Figura 17 es un diagrama de flujo 1700 que muestra un proceso a modo de ejemplo para autenticar una conexion entre nodos desde la perspectiva de un cliente de rejilla (p.ej., de un nuevo nodo en una rejilla), segun las realizaciones de la presente tecnologia. El diagrama de flujo 1700, como se muestra en la Figura 17, es muy similar al diagrama de flujo 1600 que se muestra en la Figura 16, excepto que el diagrama de flujo 1700 incluye los bloques 1702, 1704, 1706 y 1708 para determinar si datos de autenticacion se necesitaran en respuesta. En el bloque 1702, el nodo puede generar datos de autenticacion iniciales y entonces, en el bloque 1704, determinar si datos de autenticacion se necesitan en respuesta. Si es asi, puede transmitir un ATR en 1706 para requerir datos de autenticacion en respuesta. Si no, puede transmitir un ATNR en 1728.
Segun se advierte, si datos de autenticacion se necesitan en respuesta, un nodo de autenticacion puede esperar un mensaje (bloque 1712) y recibir un mensaje. Cuando el mensaje se recibe, el nodo puede determinar si el mensaje es un mensaje ATR o ATNR (bloque 1714). Si el mensaje no es un mensaje ATR o ATNR, entonces el nodo puede transmitir un mensaje ATF (bloque 1736) y el proceso puede finalizar porque el proceso ha fallado (como se muestra en los nodos 1738 y 1740). Si se determina que el mensaje es un mensaje ATR o ATNR, entonces el nodo de autenticacion puede, en 1718 y 1720, validar los datos recibidos. Si los datos son validos, y el mensaje era un ATR (segun se determina en el bloque 1722), entonces el nodo puede generar una respuesta al ATR en el bloque 1724 porque el mensaje ATR requiere una respuesta. Entonces, el nodo puede determinar si mas datos de autenticacion se necesitan en el bloque 1726, y envia un ATR en 1715 si es asi. Si no, entonces el nodo puede transmitir un ATNR en 1728 y esperar una respuesta en 1730. En 1732, el nodo puede determinar si la respuesta recibida es un ATC. Si lo es, la autenticacion ha sido exitosa como se muestra en el bloque 1742. Si no, puede enviar un ATF en respuesta en el bloque 1636. Con referencia, otra vez, al nodo 1722, si se determina que el mensaje no es un ATR, entonces un mensaje ATC puede enviarse (en el nodo 1740) porque la autenticacion ha sido exitosa (como se muestra en la Figura 1742).
La Figura 18 es un diagrama de flujo 1800 que muestra un proceso a modo de ejemplo para asignar una lista de nodos (numerados de m a n ) como vastagos a un nodo como, por ejemplo, un nodo de control, segun las realizaciones de la presente tecnologia. En el bloque 1802, el nodo m puede asignarse como un nodo vastago izquierdo (p.ej., trabajador). Entonces, para verificar si otros nodos vastagos existen, puede determinarse en el bloque 1804 si n - m = 1, o en otras palabras si el ultimo nodo vastago asignado (m) es menor que o igual al numero total de vastagos (n). Si es asi, el proceso puede finalizar. Si no, el nodo m 1 puede asignarse como un vastago derecho en el bloque 1806. El proceso para comprobar si otros vastagos existen se reproduce en el bloque 1808 mediante la verificacion para ver si m - n = 2. Si es asi, el proceso puede finalizar. Si no, entonces el algoritmo m 2 ((m - n - 2) / 2) puede usarse para determinar los valores de vastagos "medio" en el bloque 1810. El algoritmo puede usarse de forma recurrente para asignar nodos m+2 a medio para que sean vastagos del vastago izquierdo y para asignar nodos medio+1 a n para que sean vastagos del vastago izquierdo. Despues de que los "medio" se calculan, el algoritmo puede llamarse dos veces mas. La primera vez que se llama, puede llamarse donde nuevo_m = antiguo_ m 2 y nuevo_n = medio. La segunda vez que se llama, puede llamarse donde nuevo_m = medio+1 y nuevo_ n = antiguo_n.
La Figura 19 es un diagrama de flujo 1900 que muestra un proceso a modo de ejemplo para que un nodo de control primario distribuya trabajo para un proyecto de cliente entre los otros nodos en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia. En el bloque 1902, el nodo de control primario determina como distribuir el trabajo a los nodos trabajadores (y si dicha distribucion es posible). Por ejemplo, la presente etapa puede tener lugar despues de que los nodos trabajadores se hayan asignado y autenticado en la rejilla, segun se describe en las Figuras 16-18. El nodo de control primario puede entonces determinar, en el bloque 1904, si la rejilla incluye suficientes nodos trabajadores para completar la etapa del trabajo. Si no, puede determinarse que la operacion o etapa han fallado en el bloque 1906. Si si, el nodo de control primario puede guardar el estado en el bloque 1908 y transmitir la instantanea de rejilla o informacion de estado a los nodos de control de seguridad en el bloque 1910. El nodo de control primario puede entonces distribuir trabajo (desde cierta etapa del trabajo, si el trabajo es en etapas) a lo largo de los nodos trabajadores en el bloque 1912, y esperar a que los nodos trabajadores completen la etapa o fallen en el bloque 1914. Entonces puede determinarse si los trabajadores han fallado en el bloque 1916. Si uno o mas trabajadores han fallado, entonces uno de varios procesos puede tener lugar para remediar el fallo. Por ejemplo, el nodo de control primario puede redistribuir el trabajo entre el resto de los nodos trabajadores. En otro ejemplo, el nodo de control primario puede inducir el fallo de todos los nodos trabajadores (p.ej., en el bloque 1918) de modo que cada nodo trabajador puede reiniciar su trabajo en una instantanea reciente del trabajo de la rejilla en el proyecto. Por ejemplo, los nodos trabajadores pueden entonces restablecer su trabajo en el estado a un estado guardado (p.ej., mediante el uso de una instantanea guardada) en el bloque 1920, y luego reintentar el trabajo en la etapa (en la cual el nodo trabajador fallido ha fallado) en el bloque 1922. Con referencia, otra vez, al bloque 1916, si los trabajadores no han fallado, entonces el nodo de control primario puede considerar en el bloque 1924 si la etapa era la etapa final del proyecto. Si lo era, el nodo de control primario puede informar una finalizacion exitosa en el bloque 1928. Si no lo era, entonces el nodo de control primario puede asignar trabajo a los nodos trabajadores para la siguiente etapa en el proyecto en el bloque 1926.
La Figura 20 es un diagrama de flujo 2000 que muestra un proceso a modo de ejemplo para que un nodo de control de seguridad reciba y almacene informacion de estado actualizada en una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia. Segun se advierte en la presente memoria, una rejilla de comunicaciones puede tener uno, dos, tres o mas nodos de control. La Figura 20 puede solo aplicarse a una rejilla de comunicaciones que incluye mas de un nodo de control. En la etapa 2002, el nodo de control de seguridad puede esperar a que una actualizacion de estado se transmita por el nodo de control primario. En los bloques 2004, 2014, 2023 y 2022, el estado o instantanea de rejilla pueden actualizarse. Por ejemplo, si el estado tiene un tiempo predeterminado despues del cual el estado puede expirar o finalizar (determinado, por ejemplo, en el bloque 2004), y dicho tiempo se ha alcanzado, entonces puede determinarse si el estado es un estado actualizado (p.ej., si el nodo de control de seguridad ha recibido informacion de estado actualizada, por ejemplo en la forma de una instantanea de rejilla) en el bloque 2014. Si es asi, entonces la informacion de estado puede guardarse en el bloque 2023, la informacion de estado antigua o que ha expirado puede descartarse si ya no se necesita, y el nodo de control de seguridad puede esperar otra actualizacion de estado (p.ej., del nodo de control primario). Si el estado esta listo para finalizar en el bloque 2004, entonces el estado puede finalizar en los bloques 2008, 2010 y 2012. Si el estado es una finalizacion normal (p.ej., planificada) (segun se determina en el bloque 2008), entonces el proceso puede finalizar en el bloque 1212. Si no, entonces el nodo de control de seguridad puede registrar un mensaje de error en el bloque 2010 y entonces finalizar en el bloque 2012. Con referencia, otra vez, al bloque 2014, si el estado no incluye un estado actualizado, entonces el nodo de control de seguridad puede determinar que el nodo de control primario ha fallado en el bloque 2016. En el bloque 2026, el ultimo estado almacenado puede restablecerse (p.ej., a partir del nodo de control primario) en el bloque 2026, y el nodo de control de seguridad puede asumir como el nodo de control primario en los bloques 2028 y 2018.
La Figura 21 es un diagrama de flujo 2100 que muestra un proceso a modo de ejemplo para un nodo trabajador durante un calculo de rejilla de comunicaciones, segun las realizaciones de la presente tecnologia. En la etapa 2104, un nodo trabajador puede aceptar trabajo segun la asignacion de un nodo de control, y puede llevar a cabo el trabajo asignado hasta que haya completado el trabajo o hasta que el nodo trabajador haya fallado (en el bloque 2106), segun se determina en el bloque 2108. Si el nodo trabajador falla, entonces puede restablecer su ultimo estado guardado (p.ej., mediante el uso de un estado o instantanea previamente almacenados) en el bloque 2114 y aceptar un proximo articulo de trabajo del nodo de control (p.ej., otra vez al bloque 2104). Si el nodo trabajador no ha fallado, y no se ha encontrado ningun error, entonces el nodo trabajador puede determinar si el estado completado era la etapa final del proyecto en el bloque 2110. Si lo era, entonces el nodo trabajador puede informar un exito en el bloque 2128 y finalizar el proceso. Si no era la etapa final, entonces el nodo trabajador puede moverse a la siguiente etapa en su trabajo asignado en el bloque 2112. Antes de que cualquier etapa se inicie por un nodo trabajador, este puede guardar su estado actual (p.ej., en el bloque 2104) de modo que el nodo trabajador tendra su estado previo (y reciente) almacenado en caso de que el nodo trabajador falle. El nodo trabajador puede transmitir su estado en cualquier momento en que se le solicite hacerlo por, por ejemplo, un nodo de control y el estado puede incorporarse como parte de una instantanea de rejilla.
La Figura 22 es un diagrama de flujo 2200 que muestra un proceso a modo de ejemplo para radiodifundir datos dentro de una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia. En el bloque 2202, un nodo puede determinar si los datos que le gustaria radiodifundir al resto de los nodos en la rejilla son grandes (p.ej., mas grandes que 64 KB). Si se determina que los datos no son grandes, entonces el nodo puede determinar si los datos se estan ejecutando en los nodos trabajadores (p.ej., no se ejecutan en un nodo de control) en el bloque 2204. Si no, entonces el nodo puede, en el bloque 2208, esperar a que todos los nodos trabajadores esten listos para recibir datos y, en el bloque 2210, transmitir los datos a cada nodo trabajador que le gustaria ejecutar los datos. Si si, entonces el nodo puede transmitir datos a los nodos trabajadores en el bloque 2210. Con referencia, otra vez, al bloque 2202, si se determina que la radiodifusion de datos es grande, entonces el nodo puede determinar si los datos se estan ejecutando en nodos trabajadores en el bloque 2214. Si no, entonces el nodo puede organizar los otros nodos en un arbol (p.ej., mediante el uso del algoritmo que se muestra en la Figura 21) en el bloque 2216. Entonces, el nodo puede esperar a que todos los trabajadores esten listos para recibir datos en el bloque 2220 (similar al bloque 2208) y entonces enviar los datos a sus nodos vastagos trabajadores inmediatos en el bloque 2216. Con referencia, otra vez, al bloque 2214, si se determina que los datos se estan ejecutando en los nodos trabajadores, entonces el nodo puede informar al nodo de control que los nodos trabajadores estan listos para recibir los datos (en el bloque 2218). Entonces, el nodo puede esperar a un bloque de datos de su progenitor inmediato (p.ej., un nodo de control) en el bloque 2222, copiar datos a una memoria intermedia de salida en el bloque 2224 y reenviar datos a cualquiera de sus nodos vastagos trabajadores inmediatos en el bloque 2226. Entonces, puede determinarse si todos los datos se han recibido por los nodos trabajadores en el bloque 2228. Si es asi, entonces el proceso puede finalizar. Si no, entonces puede volver al bloque 2222 y esperar, nuevamente, a un bloque de datos de su nodo progenitor inmediato.
La Figura 23 es un diagrama de flujo 2300 que muestra un proceso a modo de ejemplo para un algoritmo de reduccion dentro de una rejilla de comunicaciones, segun las realizaciones de la presente tecnologia. En otras palabras, el diagrama de flujo 2300 muestra un proceso para obtener datos de entrada de varios o cada nodo en una rejilla de comunicaciones y llevar a cabo una funcion para obtener un solo bloque de resultado segun dichos datos. Segun se describe en la presente memoria, las realizaciones de la presente tecnologia restringen operaciones de reduccion de modo que se requiere que el bloque de datos tenga el mismo tamano en cada nodo, y que la operacion no dependa del orden de las operaciones. Una operacion de reduccion puede llevarse a cabo en un solo objeto en cada nodo, o en una lista de objetos en cada nodo. Operaciones de reduccion comunes pueden incluir: multiplicar (p.ej., encontrar el producto de todos los valores en todos los nodos), sumar (p.ej., encontrar la suma de todos los valores en todos los nodos), minimo (p.ej., encontrar el valor mas pequeno en todos los nodos) y maximo (p.ej., encontrar el valor mas grande en todos los nodos), entre otras.
El diagrama de flujo 2300 puede comenzar con una determinacion de si la reduccion es grande (bloque 2302). Si lo es, la rejilla puede organizar los nodos en un arbol (bloque 2304), dividir la memoria intermedia de entrada en bloques (bloque 2306) y copiar el siguiente bloque en la memoria intermedia de reduccion (bloque 2308). Por ejemplo, un nodo puede incluir tres memorias intermedias: (1) una memoria intermedia de entrada, que puede contener datos que se orientan desde la maquina local; (2) una memoria intermedia de salida, presente en el nodo de control; y (3) una "memoria intermedia de reduccion", que puede ser una memoria intermedia temporaria en cada nodo que puede usarse para calcular un resultado parcial para si mismo y todos los nodos vastagos conectados a aquel. La memoria intermedia de salida puede tener el mismo tamano que la memoria intermedia de entrada (aunque mas grande que la memoria intermedia de reduccion) y la memoria intermedia de salida puede representar el resultado de la operacion de reduccion a lo largo de todos los nodos en la rejilla. En la etapa 2306, la memoria intermedia de entrada puede subdividirse en bloques, de modo que cada bloque es suficientemente pequeno para encajar en la memoria intermedia de reduccion. En una realizacion a modo de ejemplo, si las memorias intermedias de entrada y de salida contienen, cada una, un millon de numeros de doble precision que se reduciran con una funcion de suma, la memoria intermedia de reduccion puede ser suficientemente grande para contener 5.000 numeros de doble precision. En dicho ejemplo, la memoria intermedia de entrada puede dividirse en 200 bloques de 5.000 numeros de doble precision cada uno.
Cada vez que la etapa 2308 se alcanza, un solo bloque de datos puede copiarse de la memoria intermedia de entrada y en la memoria intermedia de reduccion. La rejilla puede entonces determinar si el bloque tiene un vastago directo (bloque 2326). Si no, entonces la rejilla puede verificar si el bloque tiene un nodo progenitor (bloque 2332). Si si, la rejilla puede entonces enviar una senal "listo para recibir" al vastago directo (bloque 2328), esperar a que los bloques de datos se envien desde el vastago (bloque 2316) y fusionar los bloques de datos de vastagos en la memoria intermedia (bloque 2317), por ejemplo, la memoria intermedia de reduccion. Entonces, la rejilla puede verificar si el bloque tiene un nodo progenitor (bloque 2332). Si no, entonces la rejilla puede copiar la memoria intermedia de reduccion en la memoria intermedia de salida (bloque 2330). Por ejemplo, dado que los contenidos de la memoria intermedia de reduccion pueden contener el resultado para un subconjunto de los datos, dicho resultado puede entonces copiarse en la porcion correcta de la memoria intermedia de salida. Si mas bloques de datos de la memoria intermedia de entrada aun necesitan procesarse (bloque 2338), la ejecucion puede continuar con la etapa 2308. Con referencia, otra vez, al bloque 2332, si el bloque no tiene un nodo progenitor, entonces la rejilla puede esperar una senal "listo para recibir" del progenitor (bloque 2328) y enviar una memoria intermedia de reduccion al progenitor (bloque 2336). Por ejemplo, la memoria intermedia de reduccion puede contener el resultado de la operacion de reduccion para un solo bloque de datos para el subarbol de la rejilla con raiz en el nodo actual. Cuando el nodo progenitor esta listo para recibir mas informacion, los contenidos de la memoria intermedia de reduccion del nodo actual pueden reenviarse a su nodo progenitor, de modo que su nodo progenitor puede continuar la operacion. La rejilla puede entonces verificar si todos los bloques se han procesado en el bloque 2338. Si no, entonces el diagrama de flujo vuelve al bloque 2308 para copiar el siguiente bloque en la memoria intermedia de reduccion. Si si, entonces el proceso se mueve al bloque 2338 para determinar si todos los bloques se han procesado.
Con referencia, otra vez, al bloque 2302, si se determina que la reduccion no es grande, la rejilla puede determinar si se esta ejecutando en un nodo de control en el bloque 2310. Si no, la rejilla puede esperar una senal "listo para recibir" del nodo de control (bloque 2314), enviar todos los datos al nodo de control (bloque 2316) y finalizar el proceso. Si si, entonces la rejilla puede copiar datos locales a una memoria intermedia de salida (bloque 2312), y enviar una senal "listo para recibir" a todos los nodos trabajadores (bloque 2318), recibir datos de un nodo trabajador segun la disponibilidad (bloque 2320) y fusionar los datos en una memoria intermedia de salida (bloque 2322). En el bloque 2324, la rejilla determina si todos los datos se han recibido. Si no, entonces el proceso vuelve al bloque 2318. Si es asi, entonces el proceso finaliza.
Un conjunto de operaciones a modo de ejemplo disponible en un identificador de comunicador de un nodo (p.ej., un nodo de control) se describe de la siguiente manera.
- send_state_to_backups: disponible para el nodo de control primario. Ello enviara un bloque de datos de estado a cada nodo de control de seguridad. Ello permitira al nodo de control primario establecer un ultimo estado conocido en los nodos de control de seguridad que pueden usarse despues del fallo del nodo primario. La presente llamada se bloqueara hasta que cada nodo de control de seguridad haya recibido la informacion. Si no hay nodos de control de seguridad, la presente llamada no hace nada.
- get_state_from_primary: disponible para nodos de control de seguridad. Ello recibira informacion de estado. El estado asumira una de 4 formas: a) Listo para la finalizacion normal b) Listo para la finalizacion anormal c) el nodo de control primario ha fallado, y el presente nodo de control se ha seleccionado para que actue como el nuevo primario, d) Informacion de estado del nodo de control primario. La cuarta forma incluira un bloque de datos de estado del nodo de control primario. El presente bloque debe usarse en caso de que el de seguridad asuma como el primario. Esta llamada tambien devolvera un estado especifico si se selecciona alguna vez como el nuevo nodo primario.
- takeover_communicator: disponible solo para nodos de control de seguridad. Ello hara que el nodo de control de seguridad asuma el rol del nodo de control primario en un comunicador.
- send: envia un bloque de datos a un solo nodo par especificado
- recv: recibe un bloque de datos de un solo nodo par especificado
- find_data: encuentra un nodo par desde el cual los datos estan disponibles para recibirse. De manera opcional, espera a que los datos se conviertan en disponibles.
- broadcast: distribuye un bloque de datos de un solo nodo a cada uno de los otros nodos en la rejilla. Las operaciones de radiodifusion pueden ser simples o basadas en arbol. Para pequenos bloques de datos, el nodo de control envia todo el bloque de datos a cada nodo trabajador. Para bloques de datos mas grandes, los nodos se organizan en un arbol, donde cada nodo transmite datos a, como maximo, dos nodos. El arbol puede generarse mediante el uso del algoritmo en la Figura 21. La radiodifusion puede llevarse a cabo mediante el uso del algoritmo o proceso descrito en la Figura 22.
- reduce: acepta un vector de datos escritos a maquina en cada nodo en la rejilla. Una operacion especifica se lleva a cabo en cada elemento de la matriz desde cada nodo. La matriz de datos resultante se envia a un solo nodo. El arbol puede generarse mediante el uso del algoritmo en la Figura 21. La radiodifusion puede llevarse a cabo mediante el uso del algoritmo o proceso descrito en la Figura 23.
- reduce_all: misma operacion que reducir, excepto que la matriz resultante esta disponible en cada nodo en la rejilla.
- barrier: se bloquea hasta que cada nodo en la rejilla llame a una barrera.
- list_broken_nodes: encuentra una lista de nodos en el comunicador que han fallado
- on_failure: instala una funcion de rellamada que se llamara cada vez que una API de comunicaciones falle. Ello puede simplificar el manejo de errores mediante una sola funcion que procesa todos los fallos.
- on_node_failure: instala una funcion de rellamada que se llamara cuando cualquier nodo par en la rejilla haya fallado. Ello puede permitir una ubicacion centralizada para procesar la perdida de un nodo par en una manera oportuna, incluso cuando una API de comunicaciones no haya fallado.
- root_rank: encuentra el rango del nodo de control primario actual
- num_ranks: encuentra el numero de nodos que participan en el comunicador - (no incluidos los nodos de control de seguridad)
- close: discontinua la participacion en el comunicador. Cualquier otro nodo vera a este nodo como roto.
- break_communicator: hace que cada nodo en la rejilla encuentre fallos de comunicacion. Ello puede usarse para forzar el trayecto de recuperacion de errores en cada nodo.
- duplicate_communicator: crea un nuevo comunicador segun un comunicador existente. Los nodos en el nuevo comunicador pueden incluir cada nodo en el comunicador actual, o un subconjunto de dichos nodos.
En algunos ejemplos descritos en la presente memoria, los sistemas y metodos pueden incluir transmisiones de datos transmitidas mediante redes (p.ej., red de area local, red de area amplia, Internet, o combinaciones de ellas, etc.), medio de fibra optica, ondas portadoras, redes inalambricas, etc. para la comunicacion con uno o mas dispositivos de procesamiento de datos. Las transmisiones de datos pueden llevar cualquiera de o todos los datos descritos en la presente memoria que se proveen a o de un dispositivo.
Algunos aspectos pueden utilizar Internet de las Cosas (loT, por sus siglas en ingles), donde las cosas (p.ej., maquinas, dispositivos, telefonos, sensores) pueden conectarse a redes y los datos de dichas cosas pueden recogerse y procesarse dentro de las cosas y/o de manera externa a las cosas. Por ejemplo, con loT puede haber sensores en muchos dispositivos diferentes, y analisis de valor alto puede aplicarse para identificar relaciones ocultas y conducir eficacias aumentadas. Ello puede ser aplicable tanto a analisis de Grandes Volumenes de Datos como a analisis en tiempo real (flujo continuo).
Ademas, los metodos y sistemas descritos en la presente memoria pueden implementarse en muchos tipos diferentes de dispositivos de procesamiento por un codigo de programa que comprende instrucciones de programa que son ejecutables por el subsistema de procesamiento de dispositivo. Las instrucciones de programa de software pueden incluir codigo fuente, codigo objeto, codigo de maquina, o cualquier otro dato almacenado que sea utilizable para hacer que un sistema de procesamiento lleve a cabo los metodos y funciones descritas en la presente memoria. Otras implementaciones pueden tambien usarse, sin embargo, como, por ejemplo, firmware o incluso hardware disenado de manera apropiada configurado para llevar a cabo los metodos y sistemas descritos en la presente memoria.
Los datos de los sistemas y metodos (p.ej., asociaciones, mapeos, entrada de datos, salida de datos, resultados de datos intermedios, resultados de datos finales, etc.) pueden almacenarse e implementarse en uno o mas tipos diferentes de almacenes de datos implementados por ordenador como, por ejemplo, diferentes tipos de dispositivos de almacenamiento y construcciones de programacion (p.ej., RAM, ROM, memoria Flash, memoria extraible, archivos planos, memoria temporaria, bases de datos, estructuras de datos de programacion, variables de programacion, construcciones de instrucciones SI-ENTONCES (o de tipo similar), etc.). Se advierte que las estructuras de datos pueden describir formatos para su uso en la organizacion y almacenamiento de datos en bases de datos, programas, memoria, u otros medios legibles por ordenador para su uso por un programa de ordenador. Un programa de ordenador (tambien conocido como un programa, software, aplicacion de software, guion, o codigo) puede escribirse en cualquier forma de lenguaje de programacion, incluidos lenguajes compilados o interpretados, y puede desplegarse en cualquier forma, incluso como un programa autonomo o como un modulo, componente, subrutina, u otra unidad apropiada para su uso en un entorno informatico. Un programa de ordenador no corresponde, necesariamente, a un archivo en un sistema de archivos. Un programa puede almacenarse en una porcion de un archivo que contiene otros programas o datos (p.ej., uno o mas guiones almacenados en un documento de lenguaje de marcaje), en un solo archivo dedicado al programa en cuestion, o en multiples archivos coordinados (p.ej., archivos que almacenan uno o mas modulos, subprogramas o porciones de codigo). Un programa de ordenador puede desplegarse para ejecutarse en un ordenador o en multiples ordenadores que se ubican en un sitio o que se distribuyen a lo largo de multiples sitios y se encuentran interconectados por una red de comunicacion. Los procesos y flujos de logica y figuras descritas y que se muestran en la presente memoria descriptiva pueden llevarse a cabo por uno o mas procesadores programables que ejecutan uno o mas programas de ordenador para llevar a cabo funciones mediante el funcionamiento en datos de entrada y la generacion de salida.
En general, un ordenador puede tambien incluir, o acoplarse, de manera operativa, para recibir datos de o transferir datos a, o ambos, uno o mas dispositivos de almacenamiento masivo para almacenar datos, p.ej., discos magneticos, magneto-opticos, u opticos. Sin embargo, un ordenador no necesita tener dichos dispositivos. Ademas, un ordenador puede incorporarse a otro dispositivo, p.ej., un telefono movil, un asistente digital personal (PDA, por sus siglas en ingles), una tableta, un dispositivo de visualizacion movil, un reproductor de audio movil, un receptor de Sistema de Posicionamiento Global (GPS, por sus siglas en ingles), solo por nombrar algunos. Los medios legibles por ordenador apropiados para almacenar instrucciones de programa de ordenador y datos incluyen todas las formas de memoria permanente, medios y dispositivos de memoria, incluidos a modo de dispositivos de memoria de semiconductor, p.ej., EPROM, EEPROM y dispositivos de memoria flash; discos magneticos, p.ej., discos duros internos o discos extraibles; discos magneto-opticos; y discos CD ROM y DVD-ROM. El procesador y la memoria pueden complementarse por, o incorporarse a, circuitos logicos para propositos especiales.
Los componentes de ordenador, modulos de software, funciones, almacenes de datos y estructuras de datos descritos en la presente memoria pueden conectarse directa o indirectamente entre si con el fin de permitir el flujo de datos que se necesita para sus operaciones. Tambien se advierte que un modulo o procesador incluye, pero sin limitacion a ello, una unidad de codigo que lleva a cabo una funcion de software, y que puede implementarse, por ejemplo, como una unidad de codigo de subrutina, o como una unidad de codigo de funcion de software, o como un objeto (como en un paradigma orientado a objetos), o como una mini-aplicacion, o en un lenguaje de guion informatico, o como otro tipo de codigo de ordenador. Los componentes de software o la funcionalidad pueden ubicarse en un solo ordenador o distribuirse a lo largo de multiples ordenadores segun la situacion en cuestion.
El ordenador puede incluir una maquina programable que lleva a cabo el procesamiento a alta velocidad de numeros, asi como de texto, graficos, simbolos 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 como, por ejemplo, un teclado, panel tactil, o un raton, a traves de los cuales los datos y comandos entran en el ordenador; memoria que permite que el ordenador almacene programas y datos; y dispositivos de salida como, por ejemplo, impresoras y pantallas de visualizacion, que muestran los resultados despues de que el ordenador haya procesado, generado o transformado datos.
Las implementaciones del objeto y las operaciones funcionales descritas en la presente memoria descriptiva pueden implementarse en circuitos electronicos digitales, o en software de ordenador, firmware o hardware, incluidas las estructuras descritas en la presente memoria y sus equivalentes estructurales, o en combinaciones de uno o mas de ellos. Las implementaciones del objeto descritas en la presente memoria descriptiva pueden implementarse como uno o mas productos de programa de ordenador, a saber, uno o mas modulos de instrucciones de programa de ordenador codificadas en un medio legible por ordenador para la ejecucion por, o para controlar el funcionamiento de, el aparato de procesamiento de datos. El medio legible por ordenador puede ser un dispositivo de almacenamiento legible por maquina, un sustrato de almacenamiento legible por maquina, un dispositivo de memoria, una composicion de materia que efectua un comunicacion propagado, procesada legible por maquina, o una combinacion de uno o mas de ellos. La expresion "aparato de procesamiento de datos" abarca todos los aparatos, dispositivos y maquinas para procesar datos, incluidos, a modo de ejemplo, un procesador programable, un ordenador, o multiples procesadores u ordenadores. El aparato puede incluir, ademas de hardware, un codigo que crea un entorno de ejecucion para el programa de ordenador en cuestion, p.ej., el codigo que constituye el firmware del procesador, una pila de protocolos, un sistema grafico, un sistema de administracion de bases de datos, un sistema operativo, o una combinacion de uno o mas de ellos.
Los metodos, sistemas, dispositivos, implementaciones y realizaciones descritas mas arriba son ejemplos. Varias configuraciones pueden omitir, sustituir o anadir varios procedimientos o componentes segun corresponda. Por ejemplo, en configuraciones alternativas, los metodos pueden llevarse a cabo en un orden diferente de aquel descrito, o varias etapas pueden anadirse, omitirse o combinarse. Asimismo, las caracteristicas descritas con respecto a ciertas configuraciones pueden combinarse en varias otras configuraciones. Diferentes aspectos y elementos de las configuraciones pueden combinarse en una manera similar. Asimismo, la tecnologia evoluciona y, por consiguiente, muchos de los elementos son ejemplos y no limitan el alcance de la descripcion o de las reivindicaciones.
Algunos sistemas pueden usar Hadoop®, un marco de fuente abierta para almacenar y analizar grandes volumenes de datos en un entorno informatico distribuido. Algunos sistemas pueden usar computacion en la nube, que puede permitir acceso de red ubicuo, conveniente, a peticion, a un conjunto compartido de recursos informaticos configurables (p.ej., redes, servidores, almacenamiento, aplicaciones y servicios) que pueden proveerse rapidamente y liberarse con un minimo esfuerzo de gestion o interaccion del proveedor de servicios. Algunos sistemas de rejilla pueden implementarse como una agrupacion Hadoop® de multiples nodos, segun lo comprende una persona con experiencia en la tecnica. Apache™ Hadoop® es un marco de software de fuente abierta para informatica distribuida. Algunos sistemas pueden usar el Servidor Analitico SAS® LASR™ con el fin de entregar capacidades de modelado estadistico y aprendizaje por maquina en un entorno de programacion altamente interactivo, que puede permitir a multiples usuarios administrar datos de forma concurrente, transformar variables, llevar a cabo analisis exploratorios, construir y comparar modelos y puntuaciones. Algunos sistemas pueden usar SAS In-Memory Statistics for Hadoop® para leer grandes volumenes de datos y analizarlos varias veces mediante su persistencia en la memoria durante toda la sesion. Algunos sistemas pueden usar una combinacion de varios otros tipos de sistemas o servidores, incluidos aquellos sistemas y servidores mencionados en la presente memoria.
Detalles especificos se brindan en la descripcion para proveer una comprension exhaustiva de ejemplos de configuraciones (incluidas las implementaciones). Sin embargo, las configuraciones pueden practicarse sin dichos detalles especificos. Por ejemplo, los circuitos, procesos, algoritmos, estructuras y tecnicas conocidas se han mostrado sin detalle innecesario para evitar oscurecer las configuraciones. La presente descripcion provee ejemplos de configuraciones solamente y no limita el alcance, la aplicabilidad o las configuraciones de las reivindicaciones. Mas bien, la descripcion anterior de las configuraciones proveera a las personas con experiencia en la tecnica una descripcion facilitadora para implementar las tecnicas descritas. Pueden llevarse a cabo varios cambios en la funcion y disposicion de los elementos sin apartarse del alcance de la descripcion.
Asimismo, las configuraciones pueden describirse como un proceso que se ilustra como un diagrama de flujo o diagrama de bloques. Aunque cada uno puede describir las funciones como un proceso secuencial, muchas de las funciones se pueden llevar a cabo en paralelo o al mismo tiempo. Ademas, el orden de las funciones se puede redisponer. Un proceso puede tener etapas adicionales no incluidas en la figura. Ademas, ejemplos de los metodos pueden implementarse por hardware, software, firmware, middleware, microcodigo, lenguajes de descripcion de hardware, o cualquier combinacion de ellos. Cuando se implementan en software, firmare, middleware o microcodigo, el codigo de programa o segmentos de codigo para llevar a cabo las tareas necesarias se pueden almacenar en un medio legible por ordenador no transitorio como, por ejemplo, un medio de almacenamiento. Los procesadores pueden llevar a cabo las tareas descritas.
Habiendo descrito varios ejemplos de configuraciones, varias modificaciones, construcciones alternativas y equivalentes pueden usarse sin apartarse del alcance de la descripcion. Por ejemplo, los elementos de mas arriba pueden ser componentes de un sistema mas grande, en donde otras reglas pueden tener prioridad sobre o de otra manera modificar la aplicacion de la descripcion actual. Asimismo, un numero de operaciones pueden asumirse antes, durante o despues de que los elementos de mas arriba se consideren. Por consiguiente, la descripcion de mas arriba no limita el alance de las reivindicaciones.
El uso de "capaz de", "adaptado/a(s) a" o "configurado/a(s) para" en la presente memoria tiene el sentido de un lenguaje abierto e inclusivo que no excluye dispositivos adaptados a o configurados para llevar a cabo tareas o funciones adicionales. Ademas, el uso de "basado/a(s) en" pretende ser abierto e inclusivo, en el sentido de que un proceso, etapa, calculo u otra accion "basados en" una o mas condiciones o valores descritos pueden, en la practica, basarse en condiciones o valores adicionales mas alla de aquellos establecidos. Los encabezamientos, listas y numeraciones incluidas en la presente memoria son en aras de la explicacion solamente y no pretenden ser restrictivos.
Debe comprenderse que, segun su uso en la descripcion en la presente memoria y a lo largo de las reivindicaciones que siguen, el significado de "un", "una" y "el/la" incluye la referencia plural a menos que el contexto indique claramente lo contrario. Asimismo, segun su uso en la descripcion en la presente memoria y a lo largo de las reivindicaciones que siguen, el significado de "en" incluye "sobre" a menos que el contexto indique claramente lo contrario. Finalmente, segun su uso en la descripcion en la presente memoria y a lo largo de las reivindicaciones que siguen, los significados de "y" y "o" incluyen tanto el conjuntivo como el disyuntivo y pueden usarse de manera intercambiable a menos que el contexto indique expresamente lo contrario; la frase "exclusivo o " puede usarse para indicar la situacion donde solo el significado disyuntivo puede aplicarse.
Mientras el presente objeto se ha descrito en detalle con respecto a realizaciones especificas de aquel, las personas con experiencia en la tecnica apreciaran que, tras lograr una comprension de lo anterior, pueden producirse inmediatamente alteraciones a, variaciones de y equivalentes a dichas realizaciones. Por consiguiente, debe comprenderse que la presente descripcion se ha presentado a los fines de ejemplo antes que de limitacion, y no excluye la inclusion de dichas modificaciones, variaciones o incorporaciones al presente objeto como sera inmediatamente aparente para una persona con experiencia ordinaria en la tecnica.
Mientras la presente descripcion puede contener muchos detalles, estos no deben interpretarse como restricciones al alcance o de aquello que puede reivindicarse, sino, mas bien, como descripciones de caracteristicas especificas a implementaciones particulares. Ciertas caracteristicas que se describen en la presente memoria descriptiva en el contexto de implementaciones separadas pueden tambien implementarse en combinacion en una sola implementacion. Por el contrario, varias caracteristicas que se describen en el contexto de una sola implementacion pueden tambien implementarse en multiples implementaciones de forma separada o en cualquier subcombinacion apropiada. Ademas, aunque las caracteristicas pueden describirse mas arriba como unas que actuan en ciertas combinaciones e incluso inicialmente reivindicarse como tales, una o mas caracteristicas de una combinacion reivindicada pueden, en algunos casos, eliminarse de la combinacion, y la combinacion reivindicada puede dirigirse a una subcombinacion o variacion de una subcombinacion.
De manera similar, mientras las funciones se ilustran en los dibujos en un orden particular, no debe comprenderse que se requiere que dichas funciones se lleven a cabo en el orden particular que se muestra o en orden secuencial, o que todas las funciones ilustradas deben llevarse a cabo, para lograr los resultados deseables. En ciertas circunstancias, la multitarea y el procesamiento paralelo pueden ser ventajosos. Ademas, la separacion de varios componentes de sistema en las implementaciones descritas mas arriba no debe comprenderse como una que requiere dicha separacion en todas las implementaciones, y debe comprenderse que los componentes y sistemas de programa descritos pueden, en general, integrarse juntos en un solo producto de software o hardware o empaquetarse en multiples productos de software o hardware.

Claims (15)

REIVINDICACIONES
1. Un metodo implementado por ordenador, que comprende:
transmitir, de un nodo de control primario (902, 1002) conectado a uno o mas nodos trabajadores (910, 912, 914, 916, 1010, 1012, 1014, 1016) en una rejilla de comunicaciones (900, 1000), instrucciones de trabajador relacionadas con un proyecto que se esta ejecutando por el unico o mas nodos trabajadores;
generar, por el nodo de control primario, una instantanea de la rejilla de comunicaciones, en donde la instantanea de la rejilla de comunicaciones incluye un estado de proyecto de cada uno del unico o mas nodos trabajadores, en donde un estado de proyecto de un nodo trabajador incluye un estado de una porcion del proyecto que se esta ejecutando por el nodo trabajador en la rejilla de comunicaciones, y en donde la instantanea incluye un punto de comprobacion de proyecto que indica un punto durante la ejecucion de una porcion del proyecto;
determinar, por el nodo de control primario, que un nodo trabajador fallido del unico o mas nodos trabajadores ha fallado, en donde el nodo trabajador fallido ha fallado en un tiempo de fallo;
determinar que el nodo trabajador fallido ha fallado mientras el proyecto estaba pendiente;
identificar un estado de proyecto del nodo trabajador fallido mediante el uso de la instantanea de la rejilla de comunicaciones, en donde el estado de proyecto del nodo trabajador fallido incluye un estado de una porcion del proyecto que se esta ejecutando por el nodo trabajador fallido en el tiempo de fallo, e identificar un punto de comprobacion de proyecto del nodo trabajador fallido a partir de la instantanea que indica un punto durante la ejecucion de una porcion del proyecto con anterioridad al fallo del nodo trabajador fallido; y
transmitir instrucciones de trabajador actualizadas, en donde el conjunto de instrucciones incluye el punto de comprobacion de proyecto que indica el punto durante la ejecucion de una porcion del proyecto con anterioridad al fallo del nodo trabajador fallido, y en donde las instrucciones de trabajador actualizadas incluyen el estado de proyecto del nodo trabajador fallido e instrucciones actualizadas relacionadas con el proyecto que se esta ejecutando por el unico o mas nodos trabajadores, en donde un nodo trabajador en funcionamiento completa, mediante el uso de las instrucciones de trabajador actualizadas, la ejecucion de la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido desde el punto de comprobacion del proyecto.
2. El metodo de la reivindicacion 1, que ademas comprende:
identificar un nodo trabajador en funcionamiento del unico o mas nodos trabajadores para completar la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido.
3. El metodo de la reivindicacion 1, en donde a cada nodo trabajador en la rejilla de comunicaciones se asigna un identificador unico, en donde los identificadores unicos de los nodos trabajadores indican una jerarquia de los nodos trabajadores asociados a cada identificador unico dentro de la rejilla de comunicaciones.
4. El metodo de la reivindicacion 3, en donde cada nodo de control y cada nodo trabajador almacena el identificador unico para cada uno de los otros nodos de control y nodos trabajadores en la rejilla de comunicaciones.
5. El metodo de la reivindicacion 3, en donde las instrucciones de trabajador actualizadas facilitan que un nodo trabajador en funcionamiento del unico o mas nodos trabajadores comience la ejecucion de la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido.
6. El metodo de la reivindicacion 1, que ademas comprende:
determinar que el nodo trabajador fallido es el unico nodo trabajador en la rejilla de comunicaciones; y
anadir un nuevo nodo trabajador a la rejilla de comunicaciones.
7. El metodo de la reivindicacion 1, en donde el nodo de control primario gestiona la distribucion de porciones del proyecto que cada nodo trabajador es responsable de ejecutar.
8. El metodo de la reivindicacion 1, en donde la determinacion de que un nodo trabajador fallido del unico o mas nodos trabajadores ha fallado incluye determinar que el nodo de control primario no ha recibido una comunicacion de latidos posterior a la transmision de las instrucciones de trabajador relacionadas con el proyecto que se esta ejecutando por el unico o mas nodos trabajadores.
9. El metodo de la reivindicacion 1, en donde la determinacion de que un nodo trabajador fallido del unico o mas nodos trabajadores ha fallado incluye recibir una notificacion, que incluye una indicacion de que el nodo trabajador fallido ha fallado, de otro nodo trabajador.
10. El metodo de la reivindicacion 1, que ademas comprende:
identificar un grupo de nodos trabajadores en funcionamiento del unico o mas nodos trabajadores para completar la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido,
en donde las instrucciones de trabajador actualizadas incluyen instrucciones al grupo de nodos trabajadores en funcionamiento con respecto a la division de la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido entre el grupo de nodos trabajadores en funcionamiento para la ejecucion.
11. El metodo de la reivindicacion 1, que ademas comprende:
determinar que los nodos trabajadores en funcionamiento del unico o mas nodos trabajadores restantes en la rejilla de comunicaciones despues de que el nodo trabajador fallido haya fallado no completaran el proyecto dentro de cierto periodo predeterminado; y
anadir uno o mas nuevos nodos trabajadores a la rejilla de comunicaciones;
en donde las instrucciones de trabajador actualizadas incluyen instrucciones a los nodos trabajadores en funcionamiento y a los nuevos nodos trabajadores con respecto a la division de la porcion del proyecto que se esta ejecutando por el nodo trabajador fallido entre los nodos trabajadores en funcionamiento y los nuevos nodos trabajadores.
12. El metodo de la reivindicacion 1, en donde el nodo de control primario tambien se conecta a un nodo de control de seguridad, y en donde el nodo de control de seguridad recibe, de forma periodica, informacion de estado de proyecto actualizada que incluye estados de porciones del proyecto que se esta ejecutando por los nodos trabajadores en la rejilla de comunicaciones.
13. El metodo de la reivindicacion 12, en donde el nodo de control de seguridad recibe una comunicacion de nodo primario que incluye una indicacion de que el nodo de control de seguridad es el nuevo nodo de control primario, y en donde las instrucciones de trabajador actualizadas pueden transmitirse por el nodo de control de seguridad.
14. Un producto de programa de ordenador realizado, de manera tangible, en un medio de almacenamiento legible por maquina no transitorio, que incluye instrucciones configuradas para hacer que un aparato de procesamiento de datos lleve a cabo funciones segun el metodo de cualquiera de las reivindicaciones 1 a 13.
15. Un dispositivo informatico, que comprende:
uno o mas procesadores; y
una memoria que tiene instrucciones alli almacenadas que, cuando se ejecutan por el unico o mas procesadores, hacen que el dispositivo informatico lleve a cabo funciones segun el metodo de cualquiera de las reivindicaciones 1 a 13.
ES16205816T 2014-07-01 2015-06-23 Sistemas y métodos para comunicaciones tolerantes a fallos Active ES2714218T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201462019426P 2014-07-01 2014-07-01

Publications (1)

Publication Number Publication Date
ES2714218T3 true ES2714218T3 (es) 2019-05-27

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 After (1)

Application Number Title Priority Date Filing Date
ES15814364T Active ES2705708T3 (es) 2014-07-01 2015-06-23 Sistemas y procedimientos para comunicaciones tolerantes a fallos

Country Status (6)

Country Link
US (2) US9495260B2 (es)
EP (2) EP3179368B1 (es)
CN (2) CN106462612A (es)
CA (2) CA2948914C (es)
ES (2) ES2714218T3 (es)
WO (1) WO2016003708A1 (es)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303567B2 (en) * 2013-08-15 2019-05-28 Entit Software Llc Managing database nodes
US9335911B1 (en) 2014-12-29 2016-05-10 Palantir Technologies Inc. Interactive user interface for dynamic data analysis exploration and query processing
US20180039399A1 (en) * 2014-12-29 2018-02-08 Palantir Technologies Inc. Interactive user interface for dynamically updating data and data analysis 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
US10878681B2 (en) 2018-09-22 2020-12-29 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 including a command node environmental sensor
US11106528B2 (en) 2018-10-10 2021-08-31 EMC IP Holding Company LLC Datacenter IoT-triggered preemptive measures using machine learning
EP3566392B1 (en) 2018-12-13 2021-08-25 Advanced New Technologies Co., Ltd. Achieving consensus among network nodes in a distributed system
CN111543026B (zh) 2018-12-13 2023-08-04 创新先进技术有限公司 分布式网络中进行主节点变更的系统
EP3560142B1 (en) 2018-12-13 2020-09-09 Alibaba Group Holding Limited Performing a recovery process for a network 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 迅鳐成都科技有限公司 区块链共识网络自恢复方法、电子设备、系统及存储介质
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)

* Cited by examiner, † Cited by third party
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
DE69916990T2 (de) 1999-01-11 2005-04-21 Koken Co Fehlertolerantes Rechnersystem
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
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
US7305585B2 (en) 2002-05-23 2007-12-04 Exludus Technologies Inc. Asynchronous and autonomous data replication
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 日本電気株式会社 フォールトトレラント・コンピュータシステム
US20060253726A1 (en) 2005-05-06 2006-11-09 Vikas Kukshya Fault-tolerant architecture for a distributed control system
EP1877901A4 (en) 2005-05-06 2014-05-07 Stratus Technologies Bermuda Ltd ERROR TOLERANT COMPUTER 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 北京优炫软件股份有限公司 一种容灾备份系统及方法

Also Published As

Publication number Publication date
WO2016003708A1 (en) 2016-01-07
CN106462612A (zh) 2017-02-22
CA2948914A1 (en) 2016-01-07
CA2948914C (en) 2017-09-05
US20160004610A1 (en) 2016-01-07
CA2957749C (en) 2017-08-15
US20160004609A1 (en) 2016-01-07
US9495260B2 (en) 2016-11-15
ES2705708T3 (es) 2019-03-26
EP3129903B1 (en) 2018-11-28
EP3129903A4 (en) 2017-12-20
EP3179368A1 (en) 2017-06-14
CA2957749A1 (en) 2016-01-07
CN111314125A (zh) 2020-06-19
EP3129903A1 (en) 2017-02-15
US9424149B2 (en) 2016-08-23
EP3179368B1 (en) 2018-12-12

Similar Documents

Publication Publication Date Title
ES2714218T3 (es) Sistemas y métodos para comunicaciones tolerantes a fallos
ES2818597T3 (es) Realizar un proceso de recuperación para un nodo de red en un sistema distribuido
CN111543026B (zh) 分布式网络中进行主节点变更的系统
ES2876311T3 (es) Replicación de estado de instancias de función de red virtual
ES2880108T3 (es) Sistema y método para finalizar el protocolo de cambio de vista
CN114787781B (zh) 用于启用高可用性受管理故障转移服务的系统和方法
ES2645414T3 (es) Conmutación por error y recuperación para instancias de datos replicados
WO2018076760A1 (zh) 基于区块链的交易事务处理方法、系统、电子装置及存储介质
US20190386829A1 (en) Method and system for byzantine fault - tolerance replicating of data
US10530752B2 (en) Efficient device provision
US11356445B2 (en) Data access interface for clustered devices
US10826812B2 (en) Multiple quorum witness
US10713374B2 (en) Resolving detected access anomalies in a dispersed storage network
JP2022523217A (ja) 投票集計を伴うトポロジードリブンビザンチンフォールトトレラント合意プロトコル
US9973215B1 (en) Controlled multipath data packet delivery with forward error correction
CN110442601B (zh) 一种Openstack镜像数据并行加速的方法和装置
US20170078439A1 (en) Tie-breaking for high availability clusters
US10223033B2 (en) Coordinating arrival times of data slices in a dispersed storage network
US20220382637A1 (en) Snapshotting hardware security modules and disk metadata stores
US20180101310A1 (en) Latency optimizing for scalable journaling
US10652146B1 (en) System and method for high availability of ethernet network during storage system failure
EP2739010B1 (en) Method for improving reliability of distributed computer systems based on service-oriented architecture
US11481381B2 (en) System and method for non-disruptive in-memory certificate management
US10049011B2 (en) Continuing operation of a quorum based system after failures
US10481832B2 (en) Applying a probability function to avoid storage operations for already-deleted data