ES3042793T3 - Cross cluster replication - Google Patents

Cross cluster replication

Info

Publication number
ES3042793T3
ES3042793T3 ES19900630T ES19900630T ES3042793T3 ES 3042793 T3 ES3042793 T3 ES 3042793T3 ES 19900630 T ES19900630 T ES 19900630T ES 19900630 T ES19900630 T ES 19900630T ES 3042793 T3 ES3042793 T3 ES 3042793T3
Authority
ES
Spain
Prior art keywords
group
follower
leader
history
global
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
ES19900630T
Other languages
English (en)
Inventor
Boaz Leskes
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.)
Elasticsearch Inc
Original Assignee
Elasticsearch 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 Elasticsearch Inc filed Critical Elasticsearch Inc
Application granted granted Critical
Publication of ES3042793T3 publication Critical patent/ES3042793T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operations
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operations
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/2048Error 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 where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Se proporcionan métodos y sistemas para la replicación entre clústeres. Algunos ejemplos de métodos incluyen: solicitar periódicamente el historial de un clúster seguidor a un clúster líder, incluyendo al menos un par de operaciones y números de secuencia, y que la operación haya modificado datos en un fragmento principal del clúster líder; recibir el historial y un primer punto de control global del clúster líder; cuando la diferencia entre el primer y el segundo punto de control global supere un valor definido por el usuario, realizar simultáneamente múltiples solicitudes adicionales de historial al clúster líder; y cuando la diferencia entre el primer y el segundo punto de control global sea inferior a un valor definido por el usuario, ejecutar la operación correspondiente, modificando los datos en un fragmento principal del clúster seguidor, de modo que un índice del clúster seguidor replique un índice del clúster líder. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0002] Replicación entre grupos
[0003] Campo de la invención
[0004] La tecnología actual es pertinente a colecciones organizadas de información y más específicamente a la replicación granular de colecciones organizadas de información.
[0005] Técnica antecedente
[0006] Los enfoques descritos en esta sección podrían seguirse pero no son necesariamente enfoques que hayan sido concebidos o seguidos previamente. Por lo tanto, a menos que se indique otra cosa, no se debe asumir que cualquiera de los enfoques descritos en esta sección califica como técnica anterior simplemente en virtud de su inclusión en esta sección.
[0007] Las redes de comunicaciones de datos se pueden usar para una estructura de aplicación distribuida que divide las tareas entre los proveedores de un recurso o servicio, llamados servidores, y los solicitantes de servicio, llamados clientes. Un anfitrión de servidor ejecuta uno o más programas de servidor, que comparten sus recursos con los clientes. Un cliente no necesariamente comparte ninguno de sus recursos, sino que solicita el contenido o función de servicio de un servidor. Los clientes inician sesiones de comunicación con servidores que esperan solicitudes entrantes.
[0008] La Publicación de Solicitud de Patente de los Estados Unidos No. US 2018/101589 A1 divulga que la replicación de bases de datos se realiza al rastrear números de secuencia asociados con registros de cambios binarios. En un grupo de productores, se genera un registro de cambios binarios basado en una transacción de escritura realizada en una partición de base de datos en el grupo de productores. Incluido con el registro de cambios binarios está un número de secuencia que corresponde a la transacción de escritura. El registro de cambios binarios se transmite desde el grupo de productores a un grupo de consumidores, donde se hace una determinación de si aplicar el registro de cambios binarios con base en el número de secuencia incluido. El registro de cambios binarios luego se aplica a una partición de base de datos en el grupo de consumidores. El número de secuencia se almacena en el grupo de consumidores combinando el número de secuencia con un rango numérico que tiene un primer número y un segundo número, donde el segundo número tiene un valor que corresponde al registro de cambios binarios más reciente aplicado a la partición de base de datos en el grupo de consumidores.
[0009] La Publicación de Solicitud de Patente de los Estados Unidos No. US 2017/279901 A1 divulga un método y un servidor de base de datos para sincronizar los contenidos de una base de datos local con los contenidos de una base de datos remota. El método incluye escribir transacciones de datos en un archivo de registro de transacciones local, asignar números de contención a las transacciones de datos y determinar si los números de contención asignados han cambiado debido a la recepción de transacciones de datos subsecuentes y si los números de contención han cambiado, insertar las transacciones de datos subsecuentes en un archivo de registro de secuencia local y asignar a las transacciones de datos subsecuentes un primer número de secuencia. El método incluye proporcionar, a un servicio de replicador remoto, acceso al primer número de secuencia, teniendo el servicio de replicador remoto acceso a un segundo número de secuencia, y si el primer número de secuencia no coincide con el segundo número de secuencia, proporcionar al servicio de replicador remoto acceso a las transacciones de datos subsecuentes, actualizando el servicio de replicador remoto una base de datos remota para incluir las transacciones de datos subsecuentes.
[0010] Resumen de la invención
[0011] El alcance de la invención está definido por las reivindicaciones.
[0012] La presente divulgación está relacionada con diversos sistemas y métodos para la replicación entre grupos. Breve descripción de los dibujos
[0013] Las realizaciones se ilustran a modo de ejemplo, y no de limitación, en las figuras de los dibujos acompañantes, en los cuales referencias iguales indican elementos similares y en los cuales:
[0014] La FIG. 1 es un diagrama de bloques simplificado de un sistema que tiene una estructura de aplicación distribuida, de acuerdo con algunas realizaciones.
[0015] La FIG. 2 es un diagrama de bloques simplificado con una vista detallada de un grupo, de acuerdo con diversas realizaciones.
[0016] La FIG. 3 es un diagrama de bloques simplificado con una vista detallada de los nodos, de acuerdo con algunas realizaciones.
[0017] Las FIGS. 4A y 4B representan sistemas para la replicación entre grupos, de acuerdo con diversas realizaciones.
[0019] La FIG. 5 es un diagrama de flujo simplificado de un método para actualizar el historial y un punto de control global, de acuerdo con algunas realizaciones.
[0021] La FIG. 6 es un diagrama de flujo simplificado de un método para la replicación entre grupos, de acuerdo con diversas realizaciones.
[0023] La FIG. 7 es un diagrama de bloques simplificado de un sistema informático, de acuerdo con algunas realizaciones.
[0025] Descripción detallada
[0027] Aunque esta tecnología es susceptible de realización en muchas formas diferentes, en los dibujos se muestran y se describirán en detalle en este documento varias realizaciones específicas con el entendimiento de que la presente divulgación debe considerarse como una ejemplificación de los principios de la tecnología y no está prevista para limitar la tecnología a las realizaciones ilustradas. La terminología usada en este documento es con el propósito de describir realizaciones particulares solamente y no está prevista para que sea limitante de la tecnología. Como se usan en este documento, las formas singulares "un", "uno, una" y "el, la" están previstas para incluir también las formas plurales, a menos que el contexto indique claramente otra cosa. Se entenderá además que los términos "comprende", "que comprende", "incluye" y/o "que incluye", cuando se usan en esta especificación, especifican la presencia de características, enteros, etapas, operaciones, elementos y/o componentes establecidos, pero no excluyen la presencia o adición de una u otras más características, enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos. Se entenderá que elementos y/o componentes similares o análogos, a los que se hace referencia en este documento, pueden identificarse a lo largo de los dibujos con caracteres de referencia similares. Se entenderá además que varias de las figuras son simplemente representaciones esquemáticas de la tecnología actual. Como tal, algunos de los componentes pueden haber sido distorsionados de su escala real para claridad ilustrada.
[0029] La FIG. 1 muestra el sistema 100 que tiene una estructura de aplicación distribuida, de acuerdo con algunas realizaciones. El sistema 100 incluye la aplicación cliente 110A, uno o más nodos 120-i-120Xy conexiones 140. En conjunto, uno o más nodos 120r120x forman el grupo 130A. Cuando solo se está ejecutando un nodo (por ejemplo, el nodo 1201), el grupo 130A es solo un nodo.
[0031] En diversas realizaciones, un grupo (por ejemplo, el grupo 130A) es una colección de uno o más nodos (servidores) (por ejemplo, uno o más nodos 1201-120<x>) que juntos almacenan datos y proporcionan capacidades de indexación y búsqueda federadas a través de todos los nodos. Un grupo se puede identificar mediante un nombre único, de tal manera que un nodo puede ser parte de un grupo cuando el nodo está configurado para unirse al grupo por su nombre. Un grupo solo puede tener un nodo en él.
[0033] En algunas realizaciones, un nodo (por ejemplo, uno o más nodos 1201-120x) es un servidor único que es parte de un grupo (por ejemplo, el grupo 130<a>), almacena datos y participa en las capacidades de indexación y búsqueda del grupo. Un nodo se puede identificar por un nombre que por defecto es un IDentificador Único Universal (UUID) aleatorio que se asigna al nodo al inicio. Cualquier número de nodos puede estar en un único grupo.
[0035] Un índice (no se representa en la FIG. 1) es una colección de documentos que tienen características algo similares, de acuerdo con diversas realizaciones. Por ejemplo, puede tener un índice para datos de clientes, otro índice para un catálogo de productos y aún otro índice para datos de orden. Un índice se identifica mediante un nombre y este nombre se usa para hacer referencia al índice cuando se realizan operaciones de indexación, búsqueda, actualización y eliminación contra los documentos en él. Un documento (no se representa en la FIG.
[0036] 1) es una unidad básica de información que puede indexarse, de acuerdo con algunas realizaciones. Por ejemplo, puede tener un documento para un único cliente, otro documento para un único producto y aún otro para un único orden. Un índice puede almacenar potencialmente una gran cantidad de datos que pueden exceder los límites de hardware de un único nodo. Por ejemplo, un único índice de mil millones de documentos que ocupa 1 TB de espacio en disco puede no caber en el disco de un único nodo o puede ser demasiado lento para atender solicitudes de búsqueda de un único nodo solo. Un índice se puede subdividir en múltiples piezas llamadas fragmentos. La subdivisión de un índice en fragmentos se puede denominar como "fragmentación". Cada fragmento puede ser un "índice" completamente funcional e independiente que puede estar alojado en cualquier nodo (por ejemplo, uno o más nodos 1201-120<x>) en el grupo. Por ejemplo, la fragmentación puede ofrecer los beneficios de dividir/escalar horizontalmente el contenido y distribuir y paralelizar operaciones a través de fragmentos (y potencialmente múltiples nodos) para aumentar el desempeño/rendimiento.
[0038] En algunas realizaciones, se puede usar al menos una interfaz de programación de aplicaciones (API) para comunicarse con un grupo (por ejemplo, el grupo 130A). Una API puede incluir un conjunto de definiciones de subrutinas y protocolos. Por ejemplo, se puede usar un cliente de nodo y/o un cliente de transporte para comunicarse con nodos (por ejemplo, uno o más nodos 1201-120<x>) en un grupo. Un cliente de nodo se une a un grupo local como un nodo sin datos, que no contiene ningún dato en sí mismo, pero conoce qué datos residen en qué nodo en el grupo y puede reenviar solicitudes directamente al nodo correcto. El cliente de transporte se puede usar para enviar solicitudes a un grupo remoto. No se une al grupo en sí, sino que simplemente reenvía solicitudes a un nodo en el grupo. Se pueden usar otras API, tal como la API RESTful. Se pueden usar diversos lenguajes (por ejemplo, Groovy, JavaScript, .NET, PHP, Perl, Python, Ruby y similares) para comunicarse con un grupo usando la API RESTful.
[0040] En algunas realizaciones, los nodos (por ejemplo, uno o más nodos 120-i-120x) pueden comunicarse usando un protocolo de aplicación (por ejemplo, Protocolo de Transferencia de Hipertexto (HTTP), protocolo de capa de transporte (por ejemplo, Protocolo de Control de Transmisión (TCP)) y similares. Los nodos pueden conocer todos los otros nodos en el grupo (por ejemplo, grupo 130A) y pueden reenviar solicitudes de cliente (por ejemplo, cliente 11A) al nodo apropiado. Cada nodo puede servir a uno o más propósitos, nodo maestro y nodo de datos.
[0042] Un nodo maestro puede realizar tales acciones de todo el grupo como crear y/o eliminar un índice, rastrear qué nodos (por ejemplo, uno o más nodos 120-<i>-120<x>) son parte del grupo (por ejemplo, grupo 130A) y decidir qué fragmentos asignar a qué nodos. Los nodos de datos pueden contener fragmentos que contienen documentos que han sido indexados. Los nodos de datos pueden manejar operaciones relacionadas con datos tales como crear, leer, actualizar y eliminar (operaciones que se usan para administrar el almacenamiento de datos persistentes; también denominadas como CRUD), búsqueda y agregaciones. Los nodos de ingesta pueden aplicar una canalización de ingesta (por ejemplo, una definición de una serie de procesadores) a un documento con el fin de transformar y enriquecer el documento antes de indexarlo. Un nodo de tribu puede conectarse a múltiples grupos y realizar búsqueda y otras operaciones a través de todos los grupos conectados.
[0044] Cada una de la aplicación cliente 110A y uno o más nodos 120-<i>-120<x>pueden ser un sistema informático físico, máquina virtual, contenedor y similar. Generalmente, la aplicación cliente 110A puede ejecutarse en el mismo o diferente sistema informático físico, máquina virtual, contenedor y similares que cada uno de uno o más nodos 120-i-120x. Cada uno de uno o más nodos 120-i-120x puede ejecutarse en el mismo o en diferente sistema informático físico, máquina virtual, contenedor y similares que los otros de uno o más nodos 120-<i>-120<x>. Se describe además un sistema informático físico en relación con el sistema de ordenador de ejemplo 700 de la FIG. 7.
[0046] En algunas realizaciones, las máquinas virtuales proporcionan un sustituto de un sistema informático físico y la funcionalidad necesaria para ejecutar sistemas operativos completos. Las máquinas virtuales son creadas y ejecutadas por un hipervisor que usa ejecución nativa para compartir y gestionar hardware, lo que permite múltiples entornos que están aislados unos de otros, pero que pueden existir en el mismo sistema informático físico.
[0048] En diversas realizaciones, los contenedores son un método de virtualización a nivel de sistema operativo para implementar y ejecutar aplicaciones distribuidas sin iniciar una máquina virtual completa para cada aplicación. Los contenedores pueden parecerse a ordenadores reales desde el punto de vista de los programas que se ejecutan en ellos. Generalmente, un programa de ordenador que se ejecuta en un sistema operativo puede ver todos los recursos (por ejemplo, dispositivos conectados, archivos y carpetas, usos compartidos de red, potencia de CPU, etc.) de ese ordenador. Sin embargo, los programas que se ejecutan dentro de un contenedor solo pueden ver los contenidos del contenedor y los dispositivos asignados al contenedor. Los contenedores se pueden disponer, coordinar y gestionar mediante la orquestación de contenedores (por ejemplo, Kubernetes, Amazon Elastic Container Service, Docker Swarm y similares). A diferencia de la virtualización basada en hipervisor, los contenedores pueden ser una abstracción realizada al nivel de sistema operativo (OS), mientras que las máquinas virtuales son una abstracción del hardware físico.
[0050] Cuando la aplicación cliente 110A se ejecuta en un servidor físico diferente de un nodo (por ejemplo, de uno o más nodos 120-i-120x), las conexiones 140 pueden ser una red de comunicaciones de datos (por ejemplo, diversas combinaciones y permutaciones de redes cableadas e inalámbricas tales como el Internet, redes de área local (LAN), redes de área metropolitana (MAN), redes de área amplia (WAN) y similares que usan Ethernet, Wi-Fi, redes celulares y similares). Cuando un nodo (de uno o más nodos 120-<i>-120<x>) se ejecuta en un sistema informático físico diferente de otro nodo (de uno o más nodos 120-<i>-120<x>), las conexiones 140 pueden ser una red de comunicaciones de datos.
[0052] La FIG. 2 muestra el sistema 200 que tiene una estructura de aplicación distribuida, de acuerdo con algunas realizaciones. El sistema 200 puede incluir la aplicación cliente 110B y el grupo 130B. La aplicación cliente 110B y el grupo 130B pueden comunicarse entre sí usando la red de comunicaciones 240. La red de comunicaciones 240 puede incluir diversas combinaciones y permutaciones de redes cableadas e inalámbricas tales como el Internet, redes de área local (LAN), redes de área metropolitana (MAN), redes de área amplia (WAN) y similares que usan Ethernet, Wi-Fi, redes celulares y similares. La aplicación cliente 110B y el grupo 130B pueden tener cada uno al menos algunas de las características descritas anteriormente en relación con la aplicación cliente 110A y el grupo 130A (incluyendo uno o más nodos 120-i-120x) en la FIG. 1, respectivamente. El grupo 130B puede incluir clientes de nodo 210, nodos maestros 220 y nodos de datos 230A. Los clientes de nodo, nodos maestros y nodos de datos fueron descritos anteriormente en relación con la FIG. 1.
[0054] De acuerdo con diversas realizaciones, las conexiones 240-270 pueden incluir cada una la misma o diferente red de comunicaciones de datos (por ejemplo, diversas combinaciones y permutaciones de redes cableadas e inalámbricas tales como el Internet, redes de área local (LAN), redes de área metropolitana (MAN), redes de área amplia (WAN) y similares que usan Ethernet, Wi-Fi, redes celulares y similares). Por ejemplo, la aplicación cliente 110B puede enviar una solicitud de indexación y/o búsqueda a los clientes de nodo 210, y recibir una respuesta de indexación y/o búsqueda de los clientes de nodo 210 a través de las conexiones 240. A modo de ejemplo adicional no limitante, los clientes de nodo 210 pueden coordinar el estado de grupo y los metadatos con los nodos maestros 220 a través de conexiones 250. A modo de ejemplo adicional no limitante, los clientes de nodo 210 pueden reenviar solicitudes de indexación y/o búsqueda a los nodos de datos 230A, y recibir una respuesta de indexación y/o búsqueda de los nodos de datos 230A a través de las conexiones 260. A modo de ejemplo adicional no limitante, los nodos maestros 220 pueden coordinar el estado de grupo y los metadatos con los nodos de datos 230A a través de conexiones 270.
[0056] La FIG. 3 ilustra la topología 300 del grupo 130C, de acuerdo con algunas realizaciones. El grupo 130C y sus constituyentes pueden tener al menos algunas de las características del grupo 130A (FIG. 1), el grupo 130B (FIG. 2) y sus constituyentes. A modo de ejemplo no limitante, el grupo 130C puede incluir los nodos 310-330.
[0057] De acuerdo con algunas realizaciones, la aplicación distribuida es un motor de búsqueda de texto completo distribuido, con capacidad para múltiples inquilinos, tal como Elasticsearch. Elasticsearch es una base de datos orientada a documentos diseñada para almacenar, recuperar y gestionar datos orientados a documentos o semiestructurados. Como se describió anteriormente, un índice es una colección de documentos que pueden tener características algo similares y un documento es una unidad básica de información que puede indexarse. Un índice puede almacenar potencialmente una gran cantidad de datos que pueden exceder los límites de hardware de un único nodo (por ejemplo, nodos de datos 230B, nodos de datos 230A (FIG. 2) y uno o más nodos 120-i-120x (FIG. 1)).
[0059] Un índice se puede subdividir en múltiples piezas llamadas fragmentos. Cuando se crea un índice, se puede especificar el número de fragmentos. Cada fragmento puede ser en sí mismo un "índice" completamente funcional e independiente que puede alojarse en cualquier nodo (por ejemplo, nodos de datos 230B, nodos de datos 230A (F<i>G. 2) y uno o más nodos 120-<i>-120<x>(FIG. 1)) en el grupo (por ejemplo, grupo 130A (FIG. 1) y grupo 130B).
[0061] Con el propósito de ilustración, el grupo 130C tiene un índice y ese índice tiene dos fragmentos primarios P0 (en el nodo 330) y P1 (en el nodo 310). Una copia de un fragmento de un índice se denomina un fragmento de réplica (o réplica para abreviar). Los fragmentos primarios P0 y P1 pueden tener dos réplicas cada uno, R0 (en los nodos 310 y 320) y R1 (en los nodos 320 y 330), respectivamente. En general, una réplica (por ejemplo, R0 y R1) no se asigna en el mismo nodo que su fragmento primario (por ejemplo, P0 y P1, respectivamente). Las réplicas pueden ofrecer los beneficios de alta disponibilidad en caso de que un fragmento/nodo falle (por tanto la importancia de no asignar una réplica en el mismo nodo que el fragmento primario (original) del que fue copiado) y escalar el rendimiento dado que las operaciones se pueden ejecutar en todas las réplicas en paralelo.
[0063] A modo de ejemplo no limitante, una aplicación cliente (por ejemplo, la aplicación cliente 110A en la FIG. 1 y la aplicación cliente 110B en la FIG. 2) envía una solicitud para crear, indexar, actualizar o eliminar un documento. La solicitud se puede ejecutar en un fragmento primario (por ejemplo, P0 y P1). Si la solicitud se completa con éxito en el fragmento primario, la solicitud se puede reenviar en paralelo a los fragmentos de réplica (por ejemplo, R0 y R1). Una vez que los fragmentos de réplica reportan que la solicitud fue completada correctamente, se puede notificar a la aplicación cliente que la solicitud fue completada con éxito.
[0065] La FIG. 4A es un diagrama de bloques simplificado del sistema 400A para la replicación entre grupos, de acuerdo con diversas realizaciones. El sistema 400A puede incluir un grupo líder 410A y un grupo seguidor 460A. El grupo líder 410A, grupo seguidor 460A y sus constituyentes pueden tener al menos algunas de las características del grupo 130A (FIG. 1), grupo 130B (FIG. 2), grupo 130C (FIG. 3) y sus constituyentes. En algunas realizaciones, el grupo líder 410A y el grupo seguidor 460A son el mismo grupo.
[0067] Alternativamente, el grupo líder 410A y el grupo seguidor 460A son grupos diferentes y pueden estar ubicados en diferentes ubicaciones, tales como centros de datos. Por ejemplo, el grupo líder 410A y el grupo seguidor 460A están en diferentes ciudades, condados, estados/provincias/prefecturas, países y/o continentes. Por ejemplo, el grupo seguidor 460A es una copia "local" en San José, California del grupo líder 410A en Tokio, Japón. De esta forma, una solicitud de una aplicación cliente (por ejemplo, en Cupertino, California) se puede cumplir en una manera de baja latencia por un servidor "local" (por ejemplo, grupo seguidor 460A) que está geográficamente más cerca de la aplicación cliente que un servidor primario (por ejemplo, el grupo líder 410A). A modo de ejemplo adicional, el grupo seguidor 460A es una copia "local" en una oficina principal (sede central) de la información del grupo líder 410A en una oficina satélite, que puede escalarse a múltiples oficinas satélite.
[0068] Para tener una visión actual de las operaciones globales, los gestores en la sede central pueden acceder rápidamente a datos de todo el mundo, sin tener que contactar individualmente a todas las oficinas satélite y esperar una respuesta de cada una. A modo de ejemplo adicional, el grupo seguidor 460A es un respaldo remoto del grupo líder 410 para propósitos de recuperación ante desastres. En el caso de un desastre natural y/o provocado por el hombre (por ejemplo, un terremoto, inundación, tormenta, incendio, ataque terrorista/de piratas informáticos, y similares), el grupo seguidor 460A puede servir como un respaldo del grupo líder 410A.
[0069] El grupo líder 410A puede incluir el índice líder 420A y el índice líder 420A puede incluir fragmentos (primarios) 422A-426A. El grupo seguidor 460A puede incluir el índice seguidor 470A y el índice seguidor 470A puede incluir fragmentos (primarios) 472A-476A. Con el propósito de ilustración, el fragmento 472A es una copia del fragmento 422A. Aunque el grupo líder 410A y el grupo seguidor 460A se muestran como incluyendo un índice con los propósitos de ilustración, el grupo líder 410A y el grupo seguidor 460A pueden comprender más de un índice. Aunque el índice líder 420A y el índice seguidor 470A se representan como incluyendo tres fragmentos (primarios), el índice líder 420A e índice seguidor 470A pueden comprender cualquier número de fragmentos (primarios).
[0071] Para replicar una porción (o la totalidad) del grupo líder 410A, se replica un índice (o todos los índices) del grupo líder 410A que va a ser replicado, tal como el índice líder 420A. Para replicar un índice líder (por ejemplo, el índice líder 420), se pueden replicar todos los fragmentos (primarios y de réplica) del índice líder (por ejemplo, los fragmentos 422A-426A). La replicación del fragmento líder 422A al fragmento seguidor 472A, por ejemplo, se puede aplicar a la replicación de los fragmentos líder 424A y 426A a los fragmentos seguidores 474A y 476A.
[0073] En diversas realizaciones, durante el curso de la operación, el grupo líder 410A realizará operaciones (por ejemplo, crear, indexar, actualizar y eliminar un documento) en el fragmento (primario) 422A (por ejemplo, en respuesta a solicitudes, tales como de la aplicación cliente 110A, aplicación cliente 110B, etc.). A cada operación se le asigna un número de secuencia. Las operaciones cambian los datos, por lo que cada cambio en los datos puede considerarse como representado por un número de secuencia. Por ejemplo, a cada operación realizada en un índice se le asigna un número de secuencia y el número de secuencia se incrementa. Los números de secuencia pueden ser números representados en diversos formatos (por ejemplo, número decimal). El grupo líder 410A puede mantener un historial de operaciones, incluyendo las operaciones y sus respectivos números de secuencia.
[0075] Además, el grupo líder 410A puede realizar un rastreo del número de secuencia más reciente (por ejemplo, el más alto) que completó con éxito, denominado como un punto de control global. En diversas realizaciones, el punto de control global es una propiedad de un fragmento particular que se sigue, y los índices (y de este modo los grupos) pueden tener más de uno. Por ejemplo, un punto de control global es el número de secuencia más alto para el cual el grupo líder 410 (o el grupo seguidor 460A) puede garantizar que se hayan procesado todos los números de secuencia previos (incluidos en el historial) (por ejemplo, en todas las copias de fragmentos activos, tanto los fragmentos primarios como de réplica). El grupo líder 410A sigue un horizonte de operaciones en curso y actualiza el punto de control global al siguiente número de secuencia después de que se completa con éxito la operación asociada con el siguiente número de secuencia. El punto de control global del grupo líder 410A (y por tanto del índice líder 420A y del fragmento líder 422A) se puede proporcionar por el grupo líder 410A al grupo seguidor 460A (y por tanto del índice seguidor 470A y del fragmento 472A), y el grupo seguidor 460A puede solicitar un historial que el grupo seguidor 460A no tiene y que está por debajo del punto de control global del grupo líder 410A.
[0077] Aunque a una operación se le puede asignar un número de secuencia en el grupo líder 410A, el primario puede fallar antes de replicarlo con éxito en todas las copias de fragmentos (réplicas). Tales operaciones fueron aplicadas solo a una parte de las copias de fragmentos y se pueden revertir (por ejemplo, deshacer la operación de tal manera que se revierta su efecto) en el grupo líder 410A para lograr consistencia entre las copias de fragmentos. Estas operaciones no se replican a través de la replicación entre grupos y de este modo no es necesario revertirlas en el grupo seguidor 460A (por ejemplo, índice seguidor 470A).
[0079] Dado que un fragmento (por ejemplo, el fragmento 422A) puede ser en el orden de 50 GB a 200 GB en tamaño, no es práctico copiar regularmente todos los datos del fragmento 422A en el grupo líder 410A al fragmento 472A en el grupo seguidor 460A. Además, una copia solo sería una instantánea de información que cambia continuamente. Para mantener una copia actual del fragmento 422A, el grupo seguidor 460A puede realizar las mismas operaciones (en el mismo orden o fuera de orden) en el fragmento 472A que el grupo líder 410A realizó en el fragmento 422A. La ejecución fuera de orden ofrece los beneficios de una mejor escalabilidad y concurrencia. El grupo seguidor 460A puede solicitar (periódicamente) las operaciones y los números de secuencia asociados (historial) que no ha realizado al grupo líder 410A, tal como usando un mecanismo de sondeo. Las operaciones pueden ser realizadas por el grupo seguidor 460A en el fragmento 472A (en orden de número de secuencia o fuera de orden de número de secuencia). Generalmente, el índice seguidor 470A se puede usar (por ejemplo, buscar) cuando se actualiza usando el historial y no es necesario sacarlo de uso (por ejemplo, fuera de línea).
[0080] El grupo seguidor 460A puede tener un modelo de aplicación diferente al del grupo líder 410A. Como se describió anteriormente, el grupo líder 410A procesa datos en respuesta a solicitudes de clientes, asigna números de secuencia a las operaciones (cambios en los datos) y dicta el historial. Por el contrario, el grupo seguidor 460A recibe el historial y lo aplica.
[0082] El grupo líder 410A que proporciona el historial (por ejemplo, operaciones y números de secuencia asociados) y el grupo seguidor 460A que ejecuta el historial se pueden denominar como una relación activo-pasivo entre índices. Aquí, el índice líder 420a se cambia activamente mediante las solicitudes de cliente y el índice 470A sigue pasivamente los cambios realizados en el índice 420A. El modelo activo-pasivo evita la complicada coordinación que se requiere por un modelo de replicación activo-activo, donde puede producirse conflicto a partir de cambios que suceden en ambos índices (efectivamente) al mismo tiempo.
[0084] En diversas realizaciones, el índice seguidor 470A puede solicitar historial con base en su propio punto de control global. Cuando el grupo seguidor 460A solicita historial a partir del grupo líder 410A, el grupo líder 410A puede responder con una cantidad (incremento) de historial (por ejemplo, un cierto número de números de secuencia y operaciones asociadas, tales como en el orden de los próximos 10 a 10,000 números de secuencia y operaciones asociadas) inmediatamente después de un punto de partida especificado por el grupo seguidor 460A (en la solicitud de historial). La cantidad (incremento) de historial proporcionado en respuesta a cada solicitud puede ser variable (por ejemplo, en un rango de 10 a 10,000 números de secuencia y operaciones asociadas, dependiendo de la naturaleza de las operaciones que se envían).
[0086] Se puede intercambiar diversa información entre el grupo líder 410A y el grupo seguidor 460A para facilitar la comunicación del historial del grupo líder 410A al grupo seguidor 460A. En algunas realizaciones, el grupo seguidor 460A solicita operaciones al grupo líder si el grupo líder las tiene (por ejemplo, hay historial después del punto de control global del grupo seguidor 460A) e indica que el grupo seguidor 460A esperará una cierta cantidad de tiempo (por ejemplo, en un rango entre 30 segundos - 300 segundos) para una respuesta. El grupo líder 410A puede responder con el historial (por ejemplo, operaciones y números de secuencia asociados) y el punto de control global actual (que es un límite superior en el historial disponible y en lo que el grupo seguidor 460A puede solicitar), o una indicación de que el historial (después del punto de control global del grupo seguidor 460A) no está disponible.
[0088] De manera opcional, el grupo líder 410A puede comparar un punto de partida solicitado con un punto de control global del fragmento particular que se sigue. El grupo seguidor 460A puede quedarse atrás (por ejemplo, no se ha realizado una solicitud de historial durante horas), tal como debido a cortes en red, a que el grupo seguidor 460A se desconecta por mantenimiento, y similares. El índice líder 420A puede retener una cantidad limitada de historial. Cuando el historial solicitado por el índice seguidor 470A no está disponible, el índice seguidor 470A puede ser notificado por el índice líder 420A y el índice seguidor 470A puede entonces retroceder para realizar una copia completa de archivo del índice líder 420A. Cuando el historial solicitado por el índice seguidor 470A está disponible, el índice seguidor 470A puede enviar múltiples solicitudes simultáneas, cada una solicitando una sección diferente del historial necesaria para ponerse al día más rápido. Cada solicitud puede especificar un punto de partida diferente para el historial, de tal manera que se proporcionen incrementos contiguos del historial en respuesta.
[0090] Por ejemplo, el fragmento seguidor 472A tiene un punto de control global del número de secuencia 99 y solicita un historial que comienza en el número de secuencia 100. El fragmento líder 422A puede enviar operaciones que tienen números de secuencia 100-199 (por ejemplo, el incremento del historial es 100 operaciones). El fragmento líder 422A también puede indicar al fragmento seguidor 472A que el punto de control global del fragmento líder 422A es 1,000. Para ponerse al día, el fragmento seguidor 472A puede enviar múltiples solicitudes simultáneas para operaciones que tengan números de secuencia 200-299, 300-399, 400-499, 500­ 599, 600-699, 700-799, 800-999 y 900-999 (y 1,000). De esta forma, el fragmento seguidor 472A puede ajustar dinámicamente con qué frecuencia se solicita el historial, tal como archivar múltiples solicitudes simultáneas para ponerse al día y sondear periódicamente el historial una vez que el fragmento seguidor 472A se pone al día (por ejemplo, el punto de control global del fragmento seguidor 472A está dentro de un rango de 1-100 números de secuencia del punto de control global del fragmento líder 422A).
[0092] Los índices pueden tener un componente basado en tiempo. Por ejemplo, una nueva versión de un índice líder se crea automáticamente por el grupo líder 410A cada hora, día, mes, trimestre, año (calendario o fiscal), y similares. Generalmente, el nombre de índice líder tendrá un componente que indica de qué se trata (por ejemplo, datos de ventas) y otro componente que indica un período de tiempo particular (por ejemplo, sello de fecha, Q4CY2018, CY2018, etc.). Dado que se crean regularmente nuevos índices líderes y los nombres de índices líderes tienen un nombre predecible, el grupo seguidor 460A se puede configurar para crear automáticamente un nuevo índice seguidor para replicar el nuevo índice líder en el grupo líder 410A. Por ejemplo, el grupo seguidor 460A puede verificar con el grupo líder 410A para ver si fue creado un nuevo índice líder y si el índice líder tenía un nombre que seguía un patrón particular (que puede incluir comodines) y si es así crear un nuevo índice seguidor con el mismo nombre para replicar el nuevo índice líder.
[0093] La creación de un nuevo índice seguidor 470A puede variar. Por ejemplo, cuando el índice líder 420A también es nuevo, el índice seguidor 470A puede replicar el índice líder 420A ejecutando el historial del grupo líder 410A. Cuando el índice líder 420 ya existe, puede que no sea práctico replicarlo usando solo el historial, debido a que el historial (desde el comienzo mismo del índice líder 420A, tal como durante un año entero) podría ser tan grande que sería demasiado costoso almacenarlo. A modo de ejemplo adicional, la replicación de un índice líder existente 420A puede comenzar copiando todos los archivos del índice líder existente 420A en un punto particular en el tiempo (por ejemplo, anotando el punto de control global en ese momento) y aplicando el historial inmediatamente después del punto de control global de los archivos copiados. Los archivos del índice líder existente 420A en un punto particular en el tiempo pueden denominarse como una instantánea. Aquí, el grupo líder 410A almacena al menos el historial que se produce después de que fue creada la instantánea. Hasta que el índice seguidor 470A se actualice con el historial, no se debe usar (por ejemplo, desconectarse). Este proceso de creación de un nuevo índice seguidor 420A puede denominarse como el proceso de arranque.
[0094] Cuando el fragmento seguidor 472A necesita operaciones que ya no están almacenadas en el fragmento líder 422A, entonces se puede usar el proceso de arranque anterior para actualizar el fragmento seguidor 472A. Alternativamente, el fragmento líder 422A puede rastrear activamente la posición del fragmento seguidor 472A y de este modo asegurarse de mantener suficiente historial para que el fragmento seguidor 472A sea capaz de ponerse al día. De esta forma, habrá suficiente historial para actualizar el fragmento seguidor 472A después de un largo tiempo de inactividad (por ejemplo, en el orden de horas). Esta técnica se puede aplicar cuando hay más de un fragmento seguidor (y por tanto un grupo e índice). El fragmento líder 422A puede almacenar suficiente historial para que los fragmentos seguidores se pongan al día. Ventajosamente, actualizar el fragmento seguidor 422A (y por tanto el índice 470A) usando el historial puede tomar sustancialmente menos tiempo que el proceso de arranque. Si el fragmento líder 422A determina que el tamaño del historial que se remonta al punto de control global del fragmento seguidor 472A es demasiado grande (por ejemplo, excede un límite predeterminado/definido por usuario), tal como cuando el grupo seguidor 460A ha estado inactivo durante un día o más, entonces el historial antiguo ya no se puede almacenar y el fragmento seguidor 472A (y por tanto el índice 470A) se puede restaurar usando el proceso de arranque descrito anteriormente.
[0096] Los procesos para replicación entre grupos se pueden bifurcar en un sistema de alto rendimiento y un sistema de bajo rendimiento. El sistema de alto rendimiento puede incluir el manejo de datos mediante el grupo líder 410A. Por ejemplo, a medida que se indexan los datos, se envía una gran cantidad de datos (por ejemplo, nuevos documentos y/o una nueva versión de un documento existente) desde el grupo líder 410A al grupo seguidor 460A, potencialmente de manera simultánea, y el punto de control global se actualiza para mantenerse actualizado. El sistema de bajo rendimiento puede manejar cambios de metadatos (por ejemplo, adición de un campo) lo cual generalmente sucede con poca frecuencia. En algunas realizaciones, el sistema de bajo rendimiento se apoya en el sistema de alto rendimiento (por ejemplo, el sistema de alto rendimiento puede incluir señales que indican que el sistema de bajo rendimiento debe activarse).
[0098] Los grupos 410A y 460A pueden comunicarse entre sí usando la red de comunicaciones 450A. La red de comunicaciones 450A puede incluir diversas combinaciones y permutaciones de redes cableadas e inalámbricas tales como el Internet, redes de área local (LAN), redes de área metropolitana (MAN), redes de área amplia (WAN) y similares que usan Ethernet, Wi-Fi, redes celulares y similares. Las conexiones a través de la red de comunicaciones 450A se pueden asegurar (por ejemplo, usando un protocolo criptográfico, tal como Capa de Conexión Seguras (SSL), Seguridad de Capa de Transporte (TLS) y similares).
[0100] De acuerdo con diversas realizaciones, los grupos 410A y 460A pueden tener un modelo de seguridad común que incluye permisos de usuario (por ejemplo, quién está autorizado para leer qué datos, no solo desde dentro del grupo líder 410A, sino de grupos remotos tal como un grupo seguidor 460A). Por ejemplo, cuando se crea el índice seguidor 470A (y los fragmentos 472A-476A), el índice líder 420A se identifica como un índice líder 420A para replicar, se capturan las credenciales de un usuario que creó el índice seguidor 410A y las credenciales se incluyen con las solicitudes de historial enviadas al grupo de líder 410A. El grupo líder 410A puede autenticar las credenciales y entender el rol (por ejemplo, administrador de sistema, vendedor, etc.) del usuario al otorgar permisos. El grupo líder 410 determina cómo interpretar el rol del usuario (por ejemplo, decidir quién tiene acceso a qué), mientras que el grupo seguidor determina el usuario y el rol del usuario. Además, también puede haber un modelo de seguridad para un proceso de fondo en el grupo seguidor 460A que sondea periódicamente el grupo líder 410A para el historial.
[0102] De acuerdo con diversas realizaciones, el índice seguidor 470A debe tener los mismos (número de) fragmentos primarios que el índice líder 420A. A modo de ejemplo no limitante, si el índice líder 420A tiene cinco fragmentos primarios, entonces el índice seguidor 470A tiene cinco fragmentos primarios. Sin embargo, los fragmentos seguidores (primarios) 472A-476A no necesariamente necesitan el mismo número de réplicas (o réplicas en absoluto) que los fragmentos líderes (primarios) 422A-426A, donde el número reducido de recursos informáticos puede reducir el coste del grupo seguidor 460A.
[0104] De manera similar, el hardware y arquitectura de ordenador subyacentes al grupo líder 410A y al grupo seguidor 460A pueden ser iguales o diferentes. Por ejemplo, cuando el grupo seguidor 460A opera (por ejemplo, cumple solicitudes) a un nivel similar al grupo líder 410A, el hardware y arquitectura de ordenador subyacente pueden ser similares para manejar la carga. A modo de ejemplo adicional no limitante, cuando el grupo seguidor 460A opera a un nivel inferior que el grupo líder 410A (por ejemplo, el grupo seguidor 460A es un respaldo externo del grupo líder 410A (y no cumple con las solicitudes)), el hardware y arquitectura de ordenador subyacente pueden tener un rendimiento menor y coste menor.
[0106] Aunque la FIG. 4A representa información en el sistema 400 que fluye desde el fragmento líder 422A (y por tanto el índice líder 420A y el grupo líder 410A) al fragmento seguidor 472A (y por tanto el índice seguidor 47A y grupo seguidor 460A), en diversas realizaciones el grupo seguidor 460A puede actuar como un líder (por ejemplo, la información fluye desde el grupo seguidor 460A) y el grupo líder 410A puede actuar como un seguidor (por ejemplo, la información fluye al grupo líder 410A).
[0108] La FIG. 4B es un diagrama de bloques simplificado del sistema 400B para la replicación entre grupos, de acuerdo con diversas realizaciones. El sistema 400B puede incluir los grupos 410B y 460B. Los grupos 410B y 460B (y sus respectivos constituyentes) pueden tener al menos algunas de las características del grupo 130A (FIG. 1), grupo 130B (FIG. 2), grupo 130C (FIG. 3), grupo líder 410A y grupo seguidor 460A (FIG. 4A), y sus constituyentes. El grupo 410B y 460B puede comunicarse entre sí usando la red de comunicaciones 450B. La red de comunicaciones 450B puede incluir diversas combinaciones y permutaciones de redes cableadas e inalámbricas tal como el Internet, redes de área local (LAN), redes de área metropolitana (MAN), redes de área amplia (WAN) y similares que usan Ethernet, Wi-Fi, redes celulares y similares.
[0110] El grupo 410B puede incluir los índices 420B y 430B. El índice 420B puede incluir el fragmento (primario) 422B y el índice 430B puede incluir el fragmento 432<b>. El grupo 460B puede incluir los índices 470B y 480B. El índice 470B puede incluir el fragmento 472B y el índice 480B puede incluir el fragmento (primario) 482B.
[0112] En algunas realizaciones, el índice 420B es un índice líder y el índice 470B es un índice seguidor, de tal manera que el fragmento 472B es una copia del fragmento 422B. En diversas realizaciones, el índice 480B es un índice líder y el índice 430B es un índice seguidor, de tal manera que el fragmento 432B es una copia del fragmento 482B. El sistema 400B puede ser ventajoso tal como cuando el grupo 410 está en una oficina principal (sede central) y el grupo 460B está en una oficina satélite de una organización (global). En este ejemplo, el índice 420B puede incluir información de precios/costes que se mantiene en la oficina principal y que usa la oficina satélite. A modo de ejemplo adicional, el índice 480B puede incluir información de ventas "locales" que se origina en la oficina satélite y que usa la oficina principal. De esta forma, la oficina satélite no contacta a la oficina principal para información cada vez, y viceversa. En cambio, cada uno de ellos tiene acceso rápido a la información.
[0114] La FIG. 5 muestra el método 500 para actualizar el historial y un punto de control global, de acuerdo con algunas realizaciones. El método 500 puede ser realizado por el grupo líder 410A en la FIG. 4A (y/o los constituyentes del sistema 400B en la FIG. 4B). El método 500 puede comenzar en la etapa 510 donde se puede recibir una operación. Por ejemplo, una operación es crear, indexar, actualizar y/o eliminar un documento.
[0116] En la etapa 520, se puede asignar un número de secuencia a la operación y se puede incrementar el número de secuencia. En la etapa 530, se puede realizar la operación. En la etapa 540, se puede evaluar la compleción de la operación. Cuando la operación no se completa con éxito (no se cumple), el método 500 puede proceder a la etapa 550. Por ejemplo, la operación no se completa con éxito cuando el fragmento primario (por ejemplo, el fragmento 422A) ha fallado antes de replicarlo con éxito en todas las copias de fragmento (réplicas). Tales operaciones fueron aplicadas solo a una parte de las copias de fragmentos y se pueden revertir en la etapa 550 para lograr consistencias entre las copias de fragmentos. Cuando la operación se completa con éxito, el método 500 puede proceder a la etapa 560.
[0118] En la etapa 550, la operación parcialmente realizada puede revertirse opcionalmente. Aunque se representa que la etapa 550 se produce antes de la etapa 560, puede realizarse después de la etapa 560. Generalmente, la etapa 550 se puede realizar antes de la etapa 570. En la etapa 560, la operación y su número de secuencia se almacenan en el historial. En la etapa 570, se actualiza un punto de control global al número de secuencia asociado con la operación completada exitosamente.
[0120] La FIG. 6 ilustra un método 600 para la replicación entre grupos, de acuerdo con algunas realizaciones. El método 600 puede ser realizado por el grupo seguidor 460A (y/o los constituyentes del sistema 400B en la FIG.
[0121] 4B). El método 600 puede comenzar en la etapa 610 donde se puede solicitar el historial. Por ejemplo, se puede solicitar el historial a partir del grupo líder 410A (FIG. 4A).
[0123] En la etapa 620 se puede recibir el historial. Por ejemplo, el historial se puede recibir del grupo líder 410A (FIG.
[0124] 4A). En algunas realizaciones, se puede incluir un punto de control global (para un fragmento líder) con el historial recibido.
[0126] En la etapa 630, se evalúa si el fragmento seguidor 472A del índice seguidor 470A (FIG. 4A) está muy por detrás del fragmento líder 422A del índice líder 420A. Por ejemplo, el punto de control global del fragmento líder 422A se puede comparar con el punto de control global del fragmento seguidor 472A. Se puede determinar que el fragmento seguidor 472A está muy por detrás del fragmento líder 422A cuando la diferencia entre el punto de control global del fragmento líder 422A y el punto de control global del fragmento seguidor 472A está por encima de un umbral predeterminado/definido por usuario. El umbral predeterminado/definido por usuario puede ser una función de un incremento del historial que el grupo líder 410A proporciona en respuesta a las solicitudes (por ejemplo, la diferencia puede ser mayor que el incremento del historial). Cuando se determina que el índice seguidor 470A está muy por detrás del índice líder 420A, el método 500 puede proceder a la etapa 640. Cuando se determina que el índice seguidor 470A no está muy por detrás del índice líder 420A, el método 500 puede proceder a la etapa 650.
[0128] En la etapa 640, se pueden realizar solicitudes de historial adicional simultáneamente. En algunas realizaciones, las solicitudes se realizan al grupo líder 410A. En la etapa 650, se pueden realizar las operaciones en el historial (por ejemplo, en orden ascendente de los respectivos números de secuencia o en cualquier orden).
[0130] Los sistemas y técnicas descritos anteriormente proporcionan una solución técnica al problema de replicar eficientemente grupos que está firmemente arraigado en la tecnología de ordenador.
[0132] La FIG. 7 ilustra un sistema de ordenador de ejemplo 700 que puede usarse para implementar algunas realizaciones de la presente invención. El sistema de ordenador 700 en la FIG. 7 puede implementarse en los contextos como sistemas informáticos, redes, servidores o combinaciones de los mismos. El sistema de ordenador 700 en la FIG. 7 incluye una o más unidades de procesador 710 y una memoria principal 720. La memoria principal 720 almacena, en parte, instrucciones y datos para ejecución por las unidades de procesador 710. La memoria principal 720 almacena el código ejecutable cuando está en operación, en este ejemplo. El sistema de ordenador 700 en la FIG. 7 incluye además un almacenamiento masivo de datos 730, dispositivo de almacenamiento portátil 740, dispositivos de salida 750, dispositivos de entrada de usuario 760, un sistema de visualización de gráficos 770 y dispositivos periféricos 780.
[0134] Los componentes que se muestran en la FIG. 7 se representan como conectados a través de un único bus 790. Los componentes pueden conectarse a través de uno o más medios de transporte de datos. Las unidades de procesador 710 y la memoria principal 720 están conectadas a través de un bus de microprocesador local, y el almacenamiento masivo de datos 730, dispositivos periféricos 780, dispositivo de almacenamiento portátil 740 y sistema de visualización de gráficos 770 están conectados a través de uno o más buses de entrada/salida (E/S).
[0136] El almacenamiento masivo de datos 730, que puede implementarse con una unidad de disco magnético, unidad de estado sólido o una unidad de disco óptico, es un dispositivo de almacenamiento no volátil para almacenar datos e instrucciones para uso por las unidades de procesador 710. El almacenamiento masivo de datos 730 almacena el software de sistema para implementar realizaciones de la presente divulgación con propósitos de cargar ese software en la memoria principal 720.
[0138] El dispositivo de almacenamiento portátil 740 opera en conjunto con un medio de almacenamiento portátil no volátil, tal como una unidad flash, disco blando, disco compacto, disco de vídeo digital o un dispositivo de almacenamiento de Bus Universal en Serie (USB), para ingresar y emitir datos y códigos hacia y desde el sistema de ordenador 700 en la FIG. 7. El software de sistema para implementar realizaciones de la presente divulgación se almacena en tal medio portátil y se ingresa al sistema de ordenador 700 a través del dispositivo de almacenamiento portátil 740.
[0140] Los dispositivos de entrada de usuario 760 pueden proporcionar una porción de una interfaz de usuario. Los dispositivos de entrada de usuario 760 pueden incluir uno o más micrófonos, un teclado alfanumérico, tal como un teclado, para ingresar información alfanumérica y otra, o un dispositivo señalador, tal como un ratón, una bola de desplazamiento, lápiz óptico o teclas de dirección de cursor. Los dispositivos de entrada de usuario 760 también pueden incluir una pantalla táctil. Adicionalmente, el sistema de ordenador 700 como se muestra en la FIG. 7 incluye dispositivos de salida 750. Los dispositivos de salida adecuados 750 incluyen altavoces, impresoras, interfaces de red y monitores.
[0142] El sistema de visualización de gráficos 770 incluye una pantalla de cristal líquido (LCD) u otro dispositivo de visualización adecuado. El sistema de visualización de gráficos 770 es configurable para recibir información textual y gráfica y procesa la información para emitirla al dispositivo de visualización.
[0144] Los dispositivos periféricos 780 pueden incluir cualquier tipo de dispositivo de soporte de ordenador para agregar funcionalidad adicional al sistema de ordenador.
[0146] Algunos de los componentes proporcionados en el sistema de ordenador 700 en la FIG. 7 pueden ser aquellos que se encuentran típicamente en sistemas de ordenador que pueden ser adecuados para uso con realizaciones de la presente divulgación y están previstos a representar una categoría amplia de tales componentes de ordenador. De este modo, el sistema de ordenador 700 en la FIG. 7 puede ser un ordenador personal (PC), sistema de ordenador portátil, teléfono, sistema de ordenador móvil, estación de trabajo, tableta, phablet, teléfono móvil, servidor, miniordenador, ordenador central, dispositivo de uso personal o cualquier otro sistema de ordenador. El ordenador también puede incluir diferentes configuraciones de bus, plataformas en red, plataformas multiprocesador y similares. Se pueden usar diversos sistemas operativos incluyendo UNIX, LINUX, WINDOWS, MAC OS, PALM OS, QNX ANDROID, IOS, CHROME y otros sistemas operativos adecuados.
[0148] Algunas de las funciones descritas anteriormente pueden estar compuestas de instrucciones que están almacenadas en medios de almacenamiento (por ejemplo, medio legible por ordenador). Las instrucciones pueden ser recuperadas y ejecutadas por el procesador. Algunos ejemplos de medios de almacenamiento son dispositivos de memoria, cintas, discos y similares. Las instrucciones son operativas cuando son ejecutadas por el procesador para indicar al procesador que opere de acuerdo con la tecnología. Aquellos expertos en la técnica están familiarizados con instrucciones, procesadores y medios de almacenamiento.
[0150] En algunas realizaciones, el sistema informático 700 puede implementarse como un entorno informático basado en la nube, tal como una máquina virtual que opera dentro de una nube informática. En otras realizaciones, el sistema informático 700 puede incluir en sí mismo un entorno informático basado en la nube, donde las funcionalidades del sistema informático 700 se ejecutan de una manera distribuida. De este modo, el sistema informático 700, cuando está configurado como una nube informática, puede incluir pluralidades de dispositivos informáticos en diversas formas, como se describirá con mayor detalle a continuación.
[0152] En general, un entorno informático basado en la nube es un recurso que típicamente combina la potencia computacional de un gran grupo de procesadores (tal como dentro de servidores web) y/o que combina la capacidad de almacenamiento de un gran grupo de memorias de ordenador o dispositivos de almacenamiento. Los sistemas que proporcionan recursos basados en la nube pueden ser utilizados exclusivamente por sus propietarios o tales sistemas pueden ser accesibles para usuarios externos que implementan aplicaciones dentro de la infraestructura informática para obtener el beneficio de grandes recursos computacionales o de almacenamiento.
[0154] La nube está formada, por ejemplo, por una red de servidores web que comprenden una pluralidad de dispositivos informáticos, tal como el sistema informático 700, proporcionando cada servidor (o al menos una pluralidad de los mismos) recursos de procesador y/o almacenamiento. Estos servidores gestionan cargas de trabajo proporcionadas por múltiples usuarios (por ejemplo, clientes de recursos en la nube u otros usuarios). Típicamente, cada usuario coloca demandas de carga de trabajo en la nube que varían en tiempo real, a veces drásticamente. La naturaleza y alcance de estas variaciones típicamente dependen del tipo de negocio asociado con el usuario.
[0156] Es de destacar que cualquier plataforma de hardware adecuada para realizar el procesamiento descrito en este documento es adecuada para uso con la tecnología. Los términos "medio de almacenamiento legible por ordenador" y "medio de almacenamiento legible por ordenador" como se usan en este documento se refieren a cualquier medio o medios que participan en la provisión de instrucciones a una CPU para ejecución. Tales medios pueden adoptar muchas formas, incluyendo, pero sin limitarse a, medios no volátiles, medios volátiles y medios de transmisión. Los medios no volátiles incluyen, por ejemplo, discos ópticos, magnéticos y de estado sólido, tal como un disco fijo. Los medios volátiles incluyen la memoria dinámica, tal como memoria de acceso aleatorio (RAM) de sistema. Los medios de transmisión incluyen cables coaxiales, cable de cobre y fibra óptica, entre otros, incluyendo los cables que componen una realización de un bus. Los medios de transmisión también pueden adoptar la forma de ondas acústicas o de luz, tales como las que se generan durante las comunicaciones de datos por radiofrecuencia (RF) e infrarrojos (IR). Las formas comunes de medios legibles por ordenador incluyen, por ejemplo, un disco blando, un disco flexible, un disco duro, cinta magnética, cualquier otro medio magnético, un disco de CD-ROM, disco de vídeo digital (DVD), cualquier otro medio óptico, cualquier otro medio físico con patrones de marcas o agujeros, una RAM, una memoria de solo lectura programable (PROM), una memoria de solo lectura programable borrable (EPROM), una memoria de solo lectura programable borrable eléctricamente (EEPROM), una memoria Flash, cualquier otro chip de memoria o adaptador de intercambio de datos, una onda portadora o cualquier otro medio desde el cual un ordenador pueda leer.
[0158] Diversas formas de medios legibles por ordenador pueden involucrarse para portar una o más secuencias de una o más instrucciones a una CPU para ejecución. Un bus porta los datos a la RAM de sistema, desde la cual una CPU recupera y ejecuta las instrucciones. Las instrucciones recibidas por la RAM de sistema pueden almacenarse opcionalmente en un disco fijo ya sea antes o después de la ejecución por una CPU.
[0160] El código de programa de ordenador para llevar a cabo operaciones para aspectos de la presente tecnología puede escribirse en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos tal como JAVA, SMALLTALK, C++ o similar y lenguajes de programación procedimentales convencionales, tales como el lenguaje de programación "C" o lenguajes de programación similares. El código de programa puede ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador o servidor remoto. En el último escenario, el ordenador remoto puede estar conectado al ordenador del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través del Internet usando un Proveedor de Servicios de Internet).
[0162] Las estructuras, materiales, actos y equivalentes correspondientes de todos los medios o elementos de etapa más función en las reivindicaciones a continuación están previstos para incluir cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados como se reivindica específicamente. La descripción de la presente tecnología se ha presentado con propósitos de ilustración y descripción, pero no está prevista para ser exhaustiva ni limitarse a la invención en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para aquellos de experiencia normal en la técnica. Fueron elegidas y descritas realizaciones de ejemplo con el fin de explicar mejor los principios de la presente tecnología y su aplicación práctica, y para permitir que otros de experiencia normal en la técnica entiendan la invención para diversas realizaciones.
[0164] Los aspectos de la presente tecnología se describen anteriormente con referencia a ilustraciones de diagramas de flujo y/o diagramas de bloques de métodos, aparatos (sistemas) y productos de programas de ordenador de acuerdo con realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones de diagrama de flujo y/o diagramas de bloques, y las combinaciones de bloques en las ilustraciones de diagrama de flujo y/o diagramas de bloques, pueden implementarse mediante instrucciones de programa de ordenador. Estas instrucciones de programa de ordenador pueden proporcionarse a un procesador de un ordenador de propósito general, ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de tal manera que las instrucciones, que se ejecutan a través del procesador del ordenador u otro aparato de procesamiento de datos programable, creen medios para implementar las funciones/actos especificados en el diagrama de flujo y/o en el bloque o bloques de diagrama de bloques.
[0166] Estas instrucciones de programas de ordenador también pueden almacenarse en un medio legible por ordenador que puede dirigir a un ordenador, otro aparato de procesamiento de datos programable u otros dispositivos para que funcionen de una manera particular, de tal manera que las instrucciones almacenadas en el medio legible por ordenador produzcan un artículo de fabricación que incluya instrucciones que implementen la función/acto especificado en el diagrama de flujo y/o en el bloque o bloques de diagrama de bloques.
[0168] Las instrucciones de programa de ordenador también pueden cargarse en un ordenador, otro aparato de procesamiento de datos programable u otros dispositivos para provocar que se realice una serie de etapas operativas en el ordenador, otro aparato programable u otros dispositivos para producir un proceso implementado por ordenador de tal manera que las instrucciones que se ejecutan en el ordenador u otro aparato programable proporcionen procesos para implementar las funciones/actos especificados en el diagrama de flujo y/o en el bloque o bloques de diagrama de bloques.
[0170] El diagrama de flujo y diagramas de bloques en las figuras ilustran la arquitectura, funcionalidad y operación de posibles implementaciones de sistemas, métodos y productos de programas de ordenador de acuerdo con diversas realizaciones de la presente tecnología. En este sentido, cada bloque en el diagrama de flujo o diagramas de bloques puede representar un módulo, segmento o porción de código, que comprende una o más instrucciones ejecutables para implementar las funciones lógicas especificadas. También debe anotarse que, en algunas implementaciones alternativas, las funciones anotadas en el bloque pueden producirse fuera del orden anotado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse prácticamente de manera concurrente, o a veces los bloques pueden ejecutarse en el orden inverso, dependiendo de la funcionalidad involucrada. También se notará que cada bloque de los diagramas de bloques y/o la ilustración de diagrama de flujo, y las combinaciones de bloques en los diagramas de bloques y/o la ilustración de diagrama de flujo, pueden implementarse mediante sistemas basados en hardware de propósito especial que realizan las funciones o actos especificados, o combinaciones de hardware de propósito especial e instrucciones de ordenador.
[0172] La descripción de la presente tecnología se ha presentado con propósitos de ilustración y descripción, pero no está prevista para ser exhaustiva ni limitarse a la invención en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para aquellos de experiencia normal en la técnica. Fueron elegidas y descritas realizaciones de ejemplo con el fin de explicar mejor los principios de la presente tecnología y su aplicación práctica, y para permitir que otras personas de experiencia normal en la técnica entiendan la invención para diversas realizaciones.

Claims (15)

1. REIVINDICACIONES
1. Un método implementado por ordenador para la replicación entre grupos que comprende:
solicitar periódicamente (610), mediante un grupo seguidor (460A), y con base en un punto de control global de seguidor del grupo seguidor (460A), el historial de un grupo líder (410A), incluyendo el historial al menos una operación y un número de secuencia asociado que el grupo seguidor (460A) no ha realizado, en donde cada operación de la al menos una operación es un cambio en datos en un fragmento primario del grupo líder (410A);
recibir (620), mediante el grupo seguidor (460A), un incremento de historial y un punto de control global de líder desde el grupo líder (410A), en donde el incremento de historial es un cierto número de números de secuencia y operaciones asociadas inmediatamente después de un punto de partida especificado por el grupo seguidor (460A) en el historial solicitado;
cuando una diferencia entre el punto de control global de líder y el punto de control global de seguidor excede un valor definido por usuario, en donde el valor definido por usuario es una función del incremento de historial que el grupo líder (410A) proporciona en respuesta a la solicitud, realizar simultáneamente (650), mediante el grupo seguidor (460A), múltiples solicitudes adicionales de historial del grupo líder (410A) y realizar, mediante el grupo seguidor (460A), las operaciones contenidas en las múltiples solicitudes adicionales de historial, hasta que la diferencia entre el punto de control global de líder y el punto de control global de seguidor sea menor que el incremento de historial, en donde cada una de las solicitudes adicionales de historial solicita un cierto número de operaciones que tienen números de secuencia de acuerdo con el último incremento recibido del historial; y
cuando una diferencia entre el punto de control global de líder y el punto de control global de seguidores menor que el valor definido por usuario, ejecutar (640), mediante el grupo seguidor (460A), la al menos una operación, cambiando la al menos una operación datos en un fragmento primario del grupo seguidor (460A), de tal manera que un índice del grupo seguidor (460A) replica un índice del grupo líder (410A);
en donde el punto de control global de líder es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo líder (410A); y
en donde el punto de control global de seguidor es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo seguidor (460A).
2. El método implementado por ordenador de la reivindicación 1, en donde el historial es generado por el grupo líder (410A) mediante un proceso que comprende:
recibir (510) una operación;
asignar (520) un número de secuencia a la operación;
ejecutar (530) la operación;
actualizar (570) el punto de control global de líder; y
almacenar (560) la operación y el número de secuencia en el historial.
3. El método implementado por ordenador de la reivindicación 2, que comprende además revertir (550), mediante el grupo líder (410A), la operación cuando la operación no se completa en un fragmento de réplica.
4. El método implementado por ordenador de la reivindicación 1, en donde el grupo seguidor (460A) y el grupo líder (410A) se comunican entre sí usando un protocolo criptográfico.
5. El método implementado por ordenador de la reivindicación 1, el grupo seguidor (460A) y el grupo líder (410A) son cada uno grupos Elasticsearch.
6. El método implementado por ordenador de la reivindicación 1, en donde el grupo seguidor (460A) y el grupo líder (410A) tienen un mismo número de fragmentos primarios.
7. El método implementado por ordenador de la reivindicación 1, en donde el grupo líder (410A) no envía historial cuando el número de secuencia de punto de control global de seguidor es mayor que o igual al número de secuencia de punto de control global de líder.
8. Un sistema para replicación entre grupos que comprende:
un procesador (810); y
una memoria (820) acoplada comunicativamente al procesador (810), almacenando el procesador (810) instrucciones ejecutables por el proceso para realizar un método que comprende:
solicitar periódicamente (610), mediante un grupo seguidor (460A), y con base en un punto de control global de seguidor del grupo seguidor (460A), el historial de un grupo líder (410A), incluyendo el historial al menos una operación y un número de secuencia asociado que el grupo seguidor (460A) no ha realizado, en donde cada operación de la al menos una operación es un cambio en datos en un fragmento primario del grupo líder (410A);
recibir (620), mediante el grupo seguidor (460A), un incremento de historial y un punto de control global de líder desde el grupo líder (410A), en donde el incremento de historial es un cierto número de números de secuencia y operaciones asociadas inmediatamente después de un punto de partida especificado por el grupo seguidor (460A) en el historial solicitado;
cuando una diferencia entre el punto de control global de líder y el punto de control global de seguidor excede un valor definido por usuario, en donde el valor definido por usuario es una función del incremento de historial que el grupo líder (410A) proporciona en respuesta a la solicitud, realizar simultáneamente (650), mediante el grupo seguidor (460A), múltiples solicitudes adicionales de historial del grupo líder (410A) y realizar, mediante el grupo seguidor (460A), las operaciones contenidas en las múltiples solicitudes adicionales de historial, hasta que la diferencia entre el punto de control global de líder y el punto de control global de seguidor sea menor que el incremento de historial, en donde cada una de las solicitudes adicionales de historial solicita un cierto número de operaciones que tienen números de secuencia de acuerdo con el último incremento recibido del historial; y
cuando la diferencia entre el punto de control global de líder y el punto de control global de seguidor es menor que el valor definido por usuario, ejecutar (640), mediante el grupo seguidor (460A), la al menos una operación, cambiando la al menos una operación datos en un fragmento primario del grupo seguidor (460A), de tal manera que el grupo seguidor (460A) replica un grupo líder (410A);
en donde el punto de control global de líder es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo líder (410A); y
en donde el punto de control global de seguidor es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo seguidor (460A).
9. El sistema de la reivindicación 8, en donde el grupo seguidor (460A) y el grupo líder (410A) tienen un mismo número de fragmentos primarios.
10. El sistema de la reivindicación 8, en donde el historial es generado por el grupo líder (410A), realizando el grupo líder (410A) etapas que comprenden: recibir (510) una operación; asignar (520) un número de secuencia a la operación; ejecutar (530) la operación; actualizar (570) el punto de control global de líder; y almacenar (560) la operación y número de secuencia en el historial.
11. El sistema de la reivindicación 10, en donde el grupo líder (410A) realiza una etapa de método de revertir (550) la operación cuando la operación no se completa en un fragmento de réplica.
12. El sistema de la reivindicación 8, en donde el grupo líder (410A) no envía historial cuando el número de secuencia de punto de control global de seguidor es mayor que o igual al número de secuencia de punto de control global de líder.
13. El sistema de la reivindicación 8, en donde el grupo seguidor (460A) y el grupo líder (410A) están ubicados en al menos uno de diferentes centros de datos, diferentes ciudades, diferentes países y diferentes continentes.
14. El sistema de la reivindicación 8, en donde el grupo seguidor (460A) y el grupo líder (410A) se comunican entre sí usando un protocolo criptográfico.
15. Un medio legible por ordenador no transitorio que tiene incorporado en el mismo un programa, siendo el programa ejecutable por un procesador para realizar un método para replicación entre grupos, comprendiendo el método:
solicitar periódicamente (610), mediante un grupo seguidor (460A), y con base en un punto de control global de seguidor del grupo seguidor (460A), el historial de un grupo líder (410A), incluyendo el historial al menos una operación y un número de secuencia asociado que el grupo seguidor (460A) no ha realizado, en donde cada operación de la al menos una operación es un cambio en datos de un fragmento primario del grupo líder (410A);
recibir (620), mediante el grupo seguidor (460A), un incremento de historial y un punto de control global de líder desde el grupo líder (410A), en donde el incremento de historial es un cierto número de números de secuencia
y operaciones asociadas inmediatamente después de un punto de partida especificado por el grupo seguidor (460A) en el historial solicitado;
cuando una diferencia entre el punto de control global de líder y el punto de control global de seguidor excede un valor definido por usuario, en donde el valor definido por usuario es una función del incremento de historial que el grupo líder (410A) proporciona en respuesta a la solicitud, realizar simultáneamente (650), mediante el grupo seguidor (460A), múltiples solicitudes adicionales de historial del grupo líder (410A) y realizar, mediante el grupo seguidor (460A), las operaciones contenidas en las múltiples solicitudes adicionales de historial, hasta que la diferencia entre el punto de control global de líder y el punto de control global de seguidor sea menor que el incremento de historial, en donde cada una de las solicitudes adicionales de historial solicita un cierto número de operaciones que tienen números de secuencia de acuerdo con el último incremento recibido del historial; y
cuando una diferencia entre el punto de control global de líder y el punto de control global de seguidores menor que el valor definido por usuario, ejecutar (640), mediante el grupo seguidor (460A), la al menos una operación, cambiando la al menos una operación datos en un fragmento primario del grupo seguidor (460A), de tal manera que un índice del grupo seguidor (460A) replica un índice del grupo líder (410A);
en donde el punto de control global de líder es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo líder (410A); y
en donde el punto de control global de seguidor es un número de secuencia más alto para el cual todos los números de secuencia inferiores han sido procesados por el grupo seguidor (460A).
ES19900630T 2018-12-21 2019-11-26 Cross cluster replication Active ES3042793T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/229,847 US10997204B2 (en) 2018-12-21 2018-12-21 Cross cluster replication
PCT/US2019/063437 WO2020131330A1 (en) 2018-12-21 2019-11-26 Cross cluster replication

Publications (1)

Publication Number Publication Date
ES3042793T3 true ES3042793T3 (en) 2025-11-24

Family

ID=71098657

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19900630T Active ES3042793T3 (en) 2018-12-21 2019-11-26 Cross cluster replication

Country Status (4)

Country Link
US (2) US10997204B2 (es)
EP (2) EP3899710B1 (es)
ES (1) ES3042793T3 (es)
WO (1) WO2020131330A1 (es)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914592B2 (en) 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US11188531B2 (en) 2018-02-27 2021-11-30 Elasticsearch B.V. Systems and methods for converting and resolving structured queries as search queries
US11461270B2 (en) 2018-10-31 2022-10-04 Elasticsearch B.V. Shard splitting
US10997204B2 (en) 2018-12-21 2021-05-04 Elasticsearch B.V. Cross cluster replication
US11431558B2 (en) 2019-04-09 2022-08-30 Elasticsearch B.V. Data shipper agent management and configuration systems and methods
US11943295B2 (en) 2019-04-09 2024-03-26 Elasticsearch B.V. Single bi-directional point of policy control, administration, interactive queries, and security protections
US10891165B2 (en) 2019-04-12 2021-01-12 Elasticsearch B.V. Frozen indices
US11182093B2 (en) 2019-05-02 2021-11-23 Elasticsearch B.V. Index lifecycle management
US11429418B2 (en) 2019-07-31 2022-08-30 Rubrik, Inc. Asynchronous input and output for snapshots of virtual machines
US11429417B2 (en) * 2019-07-31 2022-08-30 Rubrik, Inc. Asynchronous input and output for snapshots of virtual machines
US11604674B2 (en) 2020-09-04 2023-03-14 Elasticsearch B.V. Systems and methods for detecting and filtering function calls within processes for malware behavior
US11567811B2 (en) 2020-09-28 2023-01-31 Red Hat, Inc. Detecting multiple operator pattern services making conflicting resource modifications
US12499164B2 (en) 2021-04-30 2025-12-16 Elasticsearch B.V. Controlling precision of searches
CN119806796B (zh) * 2022-05-11 2025-08-22 华为云计算技术有限公司 弹性搜索集群的资源调度方法、装置及系统
CN115378947B (zh) * 2022-08-08 2024-09-24 国网浙江省电力有限公司信息通信分公司 面向分布式存储系统的查询负载均衡方法
US12517882B2 (en) * 2022-11-21 2026-01-06 International Business Machines Corporation Building and using scalable database indexes

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519597B1 (en) 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US20090176722A9 (en) * 2000-01-28 2009-07-09 Shiv Srivastava Androgen-regulated PMEPA1 gene and polypeptides
US6886020B1 (en) 2000-08-17 2005-04-26 Emc Corporation Method and apparatus for storage system metrics management and archive
US10489364B2 (en) * 2001-08-31 2019-11-26 Margaret Runchey Semantic model of everything recorded with UR-URL combination identity-identifier-addressing-indexing method, means and apparatus
US9189501B2 (en) * 2001-08-31 2015-11-17 Margaret Runchey Semantic model of everything recorded with UR-URL combination identity-identifier-addressing-indexing method, means, and apparatus
EP1614255B1 (en) 2003-04-04 2014-09-03 CA, Inc. Method and system for discovery of remote agents
US7146352B2 (en) 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US7707148B1 (en) * 2003-10-07 2010-04-27 Natural Selection, Inc. Method and device for clustering categorical data and identifying anomalies, outliers, and exemplars
US20060075079A1 (en) 2004-10-06 2006-04-06 Digipede Technologies, Llc Distributed computing system installation
US7565217B2 (en) * 2005-04-01 2009-07-21 International Business Machines Corporation Traversal of empty regions in a searchable data structure
US7945533B2 (en) 2006-03-01 2011-05-17 Oracle International Corp. Index replication using crawl modification information
GB2451371B (en) 2006-04-17 2011-02-23 Vovision Llc Method and systems for correcting transcribed audio files
US9015301B2 (en) 2007-01-05 2015-04-21 Digital Doors, Inc. Information infrastructure management tools with extractor, secure storage, content analysis and classification and method therefor
US8898261B1 (en) 2007-07-02 2014-11-25 Emc Corporation Configuring agent services operable by agents in a storage area network
US8352519B2 (en) 2008-07-31 2013-01-08 Microsoft Corporation Maintaining large random sample with semi-random append-only operations
US9973582B2 (en) 2009-10-19 2018-05-15 Tritan Software International Method and apparatus for bi-directional communication and data replication between multiple locations during intermittent connectivity
US8675494B2 (en) 2009-12-04 2014-03-18 Brocade Communications Systems, Inc. Conflict identification in label switched services
DE112010004772T8 (de) 2009-12-10 2013-03-14 International Business Machines Corporation Verfahren und System zum Verwalten von Konfigurationen von Systemverwaltungsagenten in einer Verteilten Umgebung
US8930332B2 (en) 2010-03-12 2015-01-06 Salesforce.Com, Inc. Method and system for partitioning search indexes
US9047351B2 (en) * 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8762340B2 (en) 2010-05-14 2014-06-24 Salesforce.Com, Inc. Methods and systems for backing up a search index in a multi-tenant database environment
US8332433B2 (en) * 2010-10-18 2012-12-11 Verisign, Inc. Database synchronization and validation
US8510267B2 (en) * 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories
US8918362B2 (en) * 2011-05-23 2014-12-23 Microsoft Corporation Replication processes in a distributed storage environment
US9330141B2 (en) * 2011-09-29 2016-05-03 Cirro, Inc. Federated query engine for federation of data queries across structure and unstructured data
US9491247B2 (en) 2012-02-02 2016-11-08 AppDynamics, Inc. Automatic capture of detailed analysis information based on remote server analysis
US10489412B2 (en) 2012-03-29 2019-11-26 Hitachi Vantara Corporation Highly available search index with storage node addition and removal
US20130297469A1 (en) * 2012-05-01 2013-11-07 Bank Of America Corporation Tagging, data collection and content delivery in a globally distributed computing infrastructure
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9619540B2 (en) * 2012-09-07 2017-04-11 Oracle International Corporation Subscription order generation for cloud services
ES2606175T3 (es) * 2012-11-30 2017-03-23 Accenture Global Services Limited Red de comunicaciones, arquitectura de ordenador, método implementado en ordenador y producto de programa de ordenador para el desarrollo y la administración de aplicaciones basadas en femtoceldas
US8615794B1 (en) 2013-01-09 2013-12-24 Ping Identity Corporation Methods and apparatus for increased security in issuing tokens
US20140279871A1 (en) * 2013-03-13 2014-09-18 Marcelo Ochoa System and method for providing near real time data synchronization
GB2515501A (en) * 2013-06-25 2014-12-31 Ibm Replication for on-line hot-standby database
US9912546B2 (en) 2014-03-28 2018-03-06 Sciencelogic, Inc. Component detection and management using relationships
US10127273B2 (en) 2014-04-15 2018-11-13 Splunk Inc. Distributed processing of network data using remote capture agents
US9838512B2 (en) 2014-10-30 2017-12-05 Splunk Inc. Protocol-based capture of network data using remote capture agents
US20150379083A1 (en) 2014-06-25 2015-12-31 Microsoft Corporation Custom query execution engine
US9348710B2 (en) * 2014-07-29 2016-05-24 Saudi Arabian Oil Company Proactive failure recovery model for distributed computing using a checkpoint frequency determined by a MTBF threshold
EP2998881B1 (en) 2014-09-18 2018-07-25 Amplidata NV A computer implemented method for dynamic sharding
US9734180B1 (en) 2014-09-30 2017-08-15 EMC IP Holding Company LLC Object metadata query with secondary indexes
US9596253B2 (en) 2014-10-30 2017-03-14 Splunk Inc. Capture triggers for capturing network data
US9507678B2 (en) * 2014-11-13 2016-11-29 Netapp, Inc. Non-disruptive controller replacement in a cross-cluster redundancy configuration
US9767130B2 (en) 2014-12-31 2017-09-19 Nexenta Systems, Inc. Methods and systems for key sharding of objects stored in distributed storage system
US11030171B2 (en) 2015-01-09 2021-06-08 Ariba, Inc. Elastic sharding of data in a multi-tenant cloud
US10303796B2 (en) 2015-01-09 2019-05-28 Ariba, Inc. Updating distributed shards without compromising on consistency
US10572863B2 (en) * 2015-01-30 2020-02-25 Splunk Inc. Systems and methods for managing allocation of machine data storage
US10015238B2 (en) * 2015-03-31 2018-07-03 International Business Machines Corporation Command processing in distributed computing systems
US9886441B2 (en) 2015-04-06 2018-02-06 Sap Se Shard aware near real time indexing
US10623486B2 (en) * 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
US10091087B2 (en) * 2015-07-20 2018-10-02 Cisco Technology, Inc. Methods and systems for load balancing based on data shard leader
US10216793B2 (en) * 2015-11-03 2019-02-26 Sap Se Optimization of continuous queries in hybrid database and stream processing systems
US20170193041A1 (en) 2016-01-05 2017-07-06 Sqrrl Data, Inc. Document-partitioned secondary indexes in a sorted, distributed key/value data store
US9990260B2 (en) * 2016-04-29 2018-06-05 Netapp Inc. Cross-platform replication
US11709833B2 (en) * 2016-06-24 2023-07-25 Dremio Corporation Self-service data platform
US10067999B2 (en) * 2016-10-11 2018-09-04 VoltDB, Inc. High-performance database replication systems and methods
CN106528797A (zh) 2016-11-10 2017-03-22 上海轻维软件有限公司 基于Elasticsearch的DSL查询方法
US20180189328A1 (en) 2016-12-30 2018-07-05 Teradata Us, Inc. Method and system for providing data access and local processing across disparate data systems
US10678817B2 (en) * 2017-02-03 2020-06-09 DataJaguar, Inc Systems and methods of scalable distributed databases
US10585913B2 (en) * 2017-03-20 2020-03-10 Datameer, Inc. Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps
CN106934062B (zh) 2017-03-28 2020-05-19 广东工业大学 一种查询elasticsearch的实现方法及系统
US10541983B1 (en) 2017-07-19 2020-01-21 Amazon Technologies, Inc. Secure storage and searching of information maintained on search systems
CN109299133A (zh) * 2017-07-24 2019-02-01 迅讯科技(北京)有限公司 数据查询方法、计算机系统及非暂时性计算机可读介质
US12118009B2 (en) 2017-07-31 2024-10-15 Splunk Inc. Supporting query languages through distributed execution of query engines
US10552274B1 (en) * 2017-08-03 2020-02-04 EMC IP Holding Company LLC Asynchronous in-memory data checkpointing for distributed computing systems
US11914592B2 (en) 2018-02-27 2024-02-27 Elasticsearch B.V. Systems and methods for processing structured queries over clusters
US11188531B2 (en) * 2018-02-27 2021-11-30 Elasticsearch B.V. Systems and methods for converting and resolving structured queries as search queries
US10838977B2 (en) * 2018-06-22 2020-11-17 Ebay Inc. Key-value replication with consensus protocol
US20200084213A1 (en) * 2018-09-07 2020-03-12 Google Llc Low-latency differential access controls in a time-series prediction system
US10846216B2 (en) * 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US11461270B2 (en) * 2018-10-31 2022-10-04 Elasticsearch B.V. Shard splitting
EP3891755A4 (en) 2018-12-03 2022-09-07 Tempus Labs, Inc. IDENTIFICATION, EXTRACTION AND PREDICTION SYSTEM FOR CLINICAL CONCEPTS AND RELATED PROCEDURES
GB2592130B (en) 2018-12-21 2023-03-08 Elasticsearch Bv Cross cluster replication
US10997204B2 (en) 2018-12-21 2021-05-04 Elasticsearch B.V. Cross cluster replication
US11301280B2 (en) 2019-01-23 2022-04-12 Vmware, Inc. System and method for managing a monitoring agent in an operating system of a virtual computing instance
US20210126977A1 (en) 2019-04-09 2021-04-29 Elasticsearch B.V. Single Agent for Logs, Metrics, Traces, Synthetics, Security, and End Point Monitoring
US11431558B2 (en) 2019-04-09 2022-08-30 Elasticsearch B.V. Data shipper agent management and configuration systems and methods
US10891165B2 (en) 2019-04-12 2021-01-12 Elasticsearch B.V. Frozen indices
US11182093B2 (en) 2019-05-02 2021-11-23 Elasticsearch B.V. Index lifecycle management
KR102283013B1 (ko) 2019-07-19 2021-07-29 동아알루미늄 주식회사 휴대용 의자
US11604674B2 (en) 2020-09-04 2023-03-14 Elasticsearch B.V. Systems and methods for detecting and filtering function calls within processes for malware behavior

Also Published As

Publication number Publication date
EP4600802A1 (en) 2025-08-13
EP3899710B1 (en) 2025-07-02
WO2020131330A1 (en) 2020-06-25
EP3899710A1 (en) 2021-10-27
US11580133B2 (en) 2023-02-14
US10997204B2 (en) 2021-05-04
US20200201879A1 (en) 2020-06-25
US20210240731A1 (en) 2021-08-05
EP3899710A4 (en) 2022-09-21

Similar Documents

Publication Publication Date Title
ES3042793T3 (en) Cross cluster replication
US11556659B1 (en) Partially encrypted snapshots
US11079966B2 (en) Enhanced soft fence of devices
US11163728B2 (en) Sharing container images utilizing a shared storage system
US10152268B1 (en) System and methods for replication resource management in asymmetric secure multi-tenancy deployments in protection storage
US9483540B2 (en) Cloud based data migration and replication
US8868860B2 (en) Restore in cascaded copy environment
US10585767B2 (en) Automatic data healing using a storage controller
US9678680B1 (en) Forming a protection domain in a storage architecture
US11645237B2 (en) Replicating data utilizing a virtual file system and cloud storage
CN113661490A (zh) 基于通过分发混淆的安全数据存储
CN111201763A (zh) 基于文件系统内容的安全性
US10496493B1 (en) Method and system for restoring applications of particular point in time
US10719257B1 (en) Time-to-live (TTL) license management in an active/active replication session
US9830471B1 (en) Outcome-based data protection using multiple data protection systems
US10324747B1 (en) Distributed configuration checking and troubleshooting in data center using best practices rules
US11226746B2 (en) Automatic data healing by I/O
US10908830B2 (en) Extent lock resolution in active/active replication
US20190146887A1 (en) Policy-driven high availability standby servers
US10038694B1 (en) System and method for security mode-based authorization for data management operations in a multi-tenant protection storage system
US11513906B2 (en) Systems and methods for automatic backup scheduling based on backup history
US11106379B2 (en) Multi cloud asynchronous active/active transactional storage for availability
US11501014B2 (en) Secure data replication in distributed data storage environments
US10671597B1 (en) Data management system and method
US11552861B2 (en) Efficient way to perform location SLO validation