ES2935141T3 - Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos - Google Patents

Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos Download PDF

Info

Publication number
ES2935141T3
ES2935141T3 ES19722729T ES19722729T ES2935141T3 ES 2935141 T3 ES2935141 T3 ES 2935141T3 ES 19722729 T ES19722729 T ES 19722729T ES 19722729 T ES19722729 T ES 19722729T ES 2935141 T3 ES2935141 T3 ES 2935141T3
Authority
ES
Spain
Prior art keywords
network
token
processing
node
orchestrator
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
ES19722729T
Other languages
English (en)
Inventor
Guilherme Spina
Moura Rocha Lima Leonardo De
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.)
V2com S A
Original Assignee
V2com S A
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 V2com S A filed Critical V2com S A
Application granted granted Critical
Publication of ES2935141T3 publication Critical patent/ES2935141T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

Un método para el procesamiento distribuido incluye recibir una solicitud de procesamiento en un orquestador e identificar una o más tareas dentro de la solicitud de procesamiento. El método fddlier incluye las operaciones de asignar una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red para su procesamiento, la asignación basada en un cuadro de mando para cada nodo del conjunto de nodos, recibir, a través de la interfaz de red, una tarea completada desde un nodo del conjunto de nodos y realizando una determinación de si la tarea completada fue procesada por un nodo en la red de testigos. Además, el método incluye la actualización de un valor de una métrica de progreso para el nodo que no está en la red de fichas, determinando si el valor de la métrica de progreso excede un valor predeterminado, (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos
Campo
Esta divulgación se refiere generalmente a la computación distribuida. Más específicamente, esta divulgación se refiere a sistemas y métodos para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos.
Antecedentes
Los avances tecnológicos (como el desarrollo de radios de paquetes de datos pequeños y de menor potencia), la demanda de los consumidores (por ejemplo, la demanda generalizada de teléfonos inteligentes) y los cambios de paradigma en la forma en que las personas perciben los ordenadores (por ejemplo, el paso de una "Internet de ordenadores" a un "Internet de las cosas (IoT)") han producido un crecimiento geométrico en el número y tipo de dispositivos que pueden considerarse "ordenadores en red". En donde el término "ordenadores en red" anteriormente abarcaba una gama estrecha de dispositivos (por ejemplo, ordenadores portátiles, ordenadores de escritorio y servidores) que operaban utilizando una gama limitada de protocolos de comunicación, el término ahora abarca una amplia gama de plataformas informáticas heterogéneas conectadas a través de una variedad de protocolos de red. Los ordenadores en red ahora incluyen, sin limitación, controladores IoT domésticos (por ejemplo, Amazon Echo), dispositivos de puerta de enlace (por ejemplo, los dispositivos Neuron y Dendrion fabricados por V2COM, Inc.), teléfonos inteligentes, así como ordenadores de escritorio, portátiles y servidores.
Sin embargo, gran parte de esta potencia informática en red recién creada está vinculada a dispositivos específicos de funciones con grandes cantidades de tiempo de inactividad entre ciclos de uso (por ejemplo, los sistemas de automatización del hogar pueden tener importantes recursos de procesamiento y memoria para respaldar operaciones como el reconocimiento de voz o facial, que no se utilizan durante el día, cuando las casas suelen estar vacías). Además de experimentar grandes períodos de tiempo de inactividad entre ciclos de uso, gran parte de esta potencia de cálculo de red recién creada está balcanizada y conectada solo a un pequeño número de dispositivos dentro de una pequeña red y al servidor de un proveedor. Por ejemplo, es probable que un controlador de automatización del hogar solo esté conectado comunicativamente a dispositivos IoT dentro de un hogar, uno o dos terminales de usuario reconocidos (por ejemplo, teléfonos inteligentes, tabletas u ordenadores portátiles) y un servidor de un fabricante (por ejemplo, un servidor alojado por Amazon o Google). El documento científico "A Software Defined Fog Node Based Distributed Blockchain Cloud Architecture for IoT", Pradip Kumar Sharma et al. (IEEE Access, vol. 6, páginas 115-124), divulga una arquitectura de nube distribuida basada en blockchain para administrar los recursos de una red informática distribuida.
La proliferación de ordenadores en red descrita anteriormente presenta una gran cantidad de potencia informática sin explotar para soportar computación distribuida en una escala previamente inimaginable. Sin embargo, aprovechar esta abundancia de potencia computacional latente presenta una serie de desafíos técnicos, como cómo lograr una asignación eficiente de recursos de procesamiento distribuido heterogéneos, cómo incorporar de manera óptima los recursos de cálculo difusos como nodos de una red distribuida y cómo regular el acceso y mantener la seguridad de los datos privados en dispositivos que son nodos de la red.
Las realizaciones descritas en este documento están dirigidas a proporcionar sistemas, métodos y estructuras de datos mediante los cuales los ordenadores en red difusos y heterogéneos se pueden reunir como una federación de nodos seguros de una red de procesamiento auto optimizada.
Resumen
La presente invención se define en las reivindicaciones independientes anexas a las cuales debe hacerse referencia. Las características ventajosas se establecen en las reivindicaciones dependientes adjuntas.
Antes de emprender la DESCRIPCIÓN DETALLADA a continuación, puede ser ventajoso establecer definiciones de ciertas palabras y frases utilizadas a lo largo de este documento de patente. El término "acoplar" y sus derivados se refieren a cualquier comunicación directa o indirecta entre dos o más elementos, estén o no en contacto físico entre sí. Los términos "transmitir", "recibir" y "comunicar", así como sus derivados, abarcan tanto la comunicación directa como la indirecta. Los términos "incluir" y "comprender", así como sus derivados, significan inclusión sin limitación. El término "o" es inclusivo, significando y/o. La frase "asociado con", así como sus derivados, significa incluir, ser incluido en, interconectar con, contener, estar contenido dentro, conectarse a o con, acoplarse a o con, ser comunicable con, cooperar con, intercalar, yuxtaponer, estar próximo a, estar vinculado a o con, tener, tener una propiedad de, tener una relación con, o similar. El término "controlador" significa cualquier dispositivo, sistema o parte del mismo que controla al menos una operación. Dicho controlador puede implementarse en hardware o en una combinación de hardware y software y/o firmware. La funcionalidad asociada con cualquier controlador en particular puede estar centralizada o distribuida, ya sea local o remotamente. La frase "al menos uno de", cuando se usa con una lista de elementos, significa que se pueden usar diferentes combinaciones de uno o más de los elementos enumerados, y solo se puede necesitar un elemento en la lista. Por ejemplo, "al menos uno de: A, B y C" incluye cualquiera de las siguientes combinaciones: A, B, C, A y B, A y C, B y C, y A y B y C.
Además, varias funciones descritas a continuación pueden ser implementadas o respaldadas por uno o más programas informáticos, cada uno de los cuales está formado a partir de código de programa legible por ordenador e incorporado en un medio legible por ordenador. Los términos "aplicación" y "programa" se refieren a uno o más programas informáticos, componentes de software, conjuntos de instrucciones, procedimientos, funciones, objetos, clases, instancias, datos relacionados, o una parte de los mismos adaptada para su implementación en un código de programa legible por ordenador adecuado. La frase "código de programa legible por ordenador" incluye cualquier tipo de código de ordenador, incluido el código fuente, el código objeto y el código ejecutable. La frase "medio legible por ordenador" incluye cualquier tipo de medio al que pueda acceder un ordenador, como memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), una unidad de disco duro, un disco compacto (CD), un disco de video digital (DVD) o cualquier otro tipo de memoria. Un medio legible por ordenador "no transitorio" excluye los enlaces de comunicación cableados, inalámbricos, ópticos u otros que transportan señales eléctricas transitorias u otras señales. Un medio legible por ordenador no transitorio incluye medios donde los datos se pueden almacenar permanentemente y medios donde los datos se pueden almacenar y sobrescribir posteriormente, como un disco óptico regrabable o un dispositivo de memoria borrable.
Las definiciones de otras palabras y frases determinadas se proporcionan a lo largo de este documento de patente. Aquellos con conocimientos ordinarios en la técnica deben entender que, en muchos, si no en la mayoría de los casos, tales definiciones se aplican a usos anteriores y futuros de tales palabras y frases definidas.
Breve descripción de los dibujos
Para una comprensión más completa de esta divulgación y sus ventajas, se hace ahora referencia a la siguiente descripción, tomada junto con los dibujos adjuntos, en la que:
La FIGURA 1 ilustra un ejemplo de un contexto de red que incluye un orquestador y una red de tokens de acuerdo con ciertas realizaciones de esta divulgación;
La FIGURA 2 ilustra un ejemplo de un orquestador según ciertas realizaciones de esta divulgación;
La FIGURA 3 ilustra un ejemplo de un nodo de procesamiento de acuerdo con ciertas realizaciones de esta divulgación; La FIGURA 4 ilustra las operaciones de un método de acuerdo con ciertas realizaciones de esta divulgación; y
La FIGURA 5 ilustra un ejemplo de una estructura de datos para rastrear la membresía en una red de tokens de acuerdo con ciertas realizaciones de esta divulgación.
Descripción detallada
Las FIGURAS 1 a 5, que se analizan a continuación, y las diversas realizaciones utilizadas para describir los principios de esta divulgación en este documento de patente son solo a título ilustrativo y no deben interpretarse de ninguna manera para limitar el alcance de la divulgación.
La FIGURA 1 ilustra un ejemplo de un contexto de red 100 que incluye un orquestador y una red de tokens de acuerdo con esta divulgación.
De acuerdo con ciertas realizaciones, el contexto de red 100 incluye un orquestador 105, una capa de aplicación 110, una o más redes 115, uno o más nodos de procesamiento heterogéneos 120a-c que pertenecen a una red de tokens y uno o más nodos de procesamiento heterogéneos 125a-b que no pertenecen a la red de tokens.
En el ejemplo no limitativo de la FIGURA 1, el orquestador 105 es un servidor de administración, como un servidor Hewlett-Packard Proliant™ incorporado en un único rack de servidores. De acuerdo con ciertas realizaciones, el orquestador 105 incluye código de programa, que cuando es ejecutado por uno o más núcleos de los procesadores del orquestador 105, hace que reciba una solicitud de procesamiento a través de una interfaz de red (por ejemplo, interfaz de red 225 en la FIGURA 2) para ser procesada por uno o más nodos de una red de procesamiento distribuido (por ejemplo, nodos de red de token 120a-c y/o nodos de red sin token 125a-b). El código del programa, cuando es ejecutado por el procesador, hace que el orquestador identifique una o más tareas dentro de la solicitud de procesamiento y reparto, a través de la interfaz de red, una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red para su procesamiento, el reparto basado en una tarjeta de puntuación para cada nodo del conjunto de nodos. Además, el código del programa, cuando es ejecutado por el procesador, hace que el orquestador reciba, a través de la interfaz de red; una tarea completada desde un nodo del conjunto de nodos, realizar una determinación de si la tarea completada fue procesada por un nodo en la red de tokens, en respuesta a una determinación de que la tarea completada fue procesada por un nodo que no está en la red de tokens, actualizar un valor de una métrica de progreso para el nodo que no está en la red de tokens, y realizar una determinación de si el valor de la métrica de progreso supera un valor predeterminado. Además, cuando lo ejecuta el procesador, el código de programa hace que el orquestador agregue el nodo a la red de tokens en respuesta a una determinación de que el valor de la métrica de progreso supera un valor predeterminado.
Son posibles varias arquitecturas para implementar un orquestador 105 y dentro del alcance de esta divulgación. De acuerdo con algunas realizaciones, el orquestador 105 es un servidor único, y en otras realizaciones, el orquestador 105 puede comprender varios servidores físicos. En algunas realizaciones, el orquestador 105 se implementa en una o en máquinas virtuales (VM). De acuerdo con otras realizaciones, el orquestador 105 se implementa en la nube, en una variedad de máquinas. De acuerdo con otras realizaciones, el orquestador 105 se implementa en un centro de comando, como se describe en el documento de patente WO2019169035-A1.
De acuerdo con varias realizaciones, el orquestador 105 recibe solicitudes de procesamiento, o trabajos para ser procesados por las plataformas de computación en red que comprenden nodos (por ejemplo, nodos 120a-c y nodos 125ab) de una o más redes de nodos de procesamiento heterogéneos. Como se discutirá con mayor detalle aquí, en algunas realizaciones, el orquestador 105 divide la solicitud de procesamiento en tareas constituyentes que se repartirán a los nodos dentro de una o más redes heterogéneas. En algunos casos, el orquestador puede seleccionar nodos de procesamiento y repartir las tareas constituyentes de un trabajo de procesamiento a nodos seleccionados en función de una o más propiedades de los nodos de procesamiento que conoce el orquestador. En algunas realizaciones, cada nodo de procesamiento puede mantener una "tarjeta de puntuación" de métricas relevantes de su capacidad (por ejemplo, velocidad del procesador, memoria disponible, capacidades del sensor, etc.). En otras realizaciones, las "tarjetas de puntuación" para cada nodo de procesamiento de la red se mantienen en el orquestador o en un repositorio de datos (por ejemplo, una base de datos) accesible al orquestador y a uno o más nodos de la red.
Dada la posible heterogeneidad de los dispositivos en los nodos de procesamiento 120a-c y 125a-b y el hecho de que ciertos nodos de procesamiento realizan "luz de luna", o realizan tareas de procesamiento repartidas por el orquestador además de realizar tareas como parte de una funcionalidad originalmente prevista, las características a nivel de máquina (por ejemplo, velocidad del procesador, memoria disponible, características del sensor, etc.) de un nodo en particular no siempre reflejan con precisión el valor computacional de la contribución del nodo a una red de procesamiento. Como ejemplo no limitativo, considere dos dispositivos que constituyen nodos de procesamiento de una red a la que un orquestador (por ejemplo, orquestador 105) puede repartir tareas de procesamiento. De los dos dispositivos, uno tiene un procesador más rápido y más memoria, pero menos tiempo de inactividad que el otro procesador. Alternativamente, un dispositivo con características superiores a nivel de máquina puede conectarse al orquestador 105 a través de una red que es lenta, poco confiable o reduce su utilidad para una red de procesamiento distribuido de una manera que no se puede anticipar o modelar fácilmente. En tales casos, las características a nivel de máquina de los dos nodos de procesamiento pueden no reflejar con precisión el valor computacional (en este ejemplo, el valor se expresa como la probabilidad de que, en un momento dado, el nodo sea el primero entre dos o más nodos en completar con éxito la tarea). En algunas realizaciones, el orquestador 105 modela las variaciones en el tiempo de inactividad, el problema de conectividad de red y otros factores que son determinantes del valor computacional de un nodo de procesamiento para una red de procesamiento. En otras realizaciones, en donde el número de nodos de procesamiento en la red es grande o los factores que afectan la computación de los nodos de procesamiento para una red no se pueden modelar de manera confiable, el orquestador 105 puede complementar o reemplazar el modelado del valor computacional de los nodos de procesamiento, con enfoques basados en tokens de acuerdo con las realizaciones de esta divulgación.
De acuerdo con varias realizaciones, el orquestador 105 reparte tareas de procesamiento a nodos de procesamiento para su ejecución probabilística. Tal como se utiliza en la presente invención, el concepto de ejecución probabilística abarca una carrera entre varios nodos de procesamiento de una red para completar con éxito una tarea de procesamiento repartida. De acuerdo con ciertas realizaciones, las incertidumbres potenciales (por ejemplo, trabajos que se cancelan debido a que el nodo de procesamiento tiene que realizar una función de procesamiento nativa, problemas de conectividad de red, etc.) asociadas con cualquier nodo de procesamiento que realiza con éxito un procesamiento significa que las tareas de procesamiento se reparten entre múltiples nodos, con la expectativa de una probabilidad aceptablemente alta de que al menos un nodo de procesamiento complete con éxito la tarea repartida.
En ciertas realizaciones de esta divulgación, el orquestador 105 mantiene métricas de progreso para cada nodo de procesamiento dentro de la red. Una métrica de progreso registra, entre otras cosas, el número de carreras que el nodo de procesamiento ha "ganado" al ser el primero en completar la tarea repartida. Cuando la métrica de progreso de un nodo de procesamiento supera un valor predeterminado, el nodo se agrega a una red de tokens. En algunas realizaciones, después de que un nodo se promueve a la red de tokens, el orquestador 105 puede dejar de mantener y actualizar la métrica de progreso para ese nodo.
De acuerdo con varias realizaciones, la implementación de una red de tokens que comprende nodos de procesamiento cuyo valor computacional para una red para procesamiento distribuido proporciona un mecanismo para que las redes de nodos de procesamiento de acuerdo con las realizaciones de esta divulgación auto optimicen su rendimiento como un súper ordenador distribuido. Por ejemplo, agregar ejecutantes probados a una red de tokens puede reducir la carga de procesamiento en un orquestador 105 al reducir o eliminar las tareas de procesamiento asociadas con el modelado del valor computacional de los nodos de procesamiento para una red de procesamiento. Además, agregar ejecutantes probados puede contribuir aún más a la auto optimización de la red distribuida en el sentido de que la ejecución probabilística puede mejorarse al incluir uno o más miembros de una red de tokens (que, por su pertenencia a la red de tokens, han demostrado su capacidad para reconciliar sus roles en la red de procesamiento con su funcionalidad nativa) dentro del conjunto de nodos de procesamiento a los que se asigna una tarea de procesamiento específica.
Aún más, las realizaciones que implementan una red de tokens de acuerdo con esta divulgación pueden proporcionar una forma computacionalmente económica de auto optimizar el rendimiento de una red de procesamiento distribuido como un súper ordenador para manejar tareas de procesamiento al proporcionar un punto de referencia de rendimiento orgánicamente creciente. Específicamente, en ciertas realizaciones, para una tarea de procesamiento determinada, el orquestador 105 reparte la tarea a varios nodos de procesamiento, incluidos uno o más nodos que ya están en la red de tokens. En este caso, la tarea de procesamiento se convierte en una carrera entre miembros de la red de tokens y no miembros. Para que un no miembro aumente el valor de su membresía de progreso y avance hacia la membresía en la red de tokens, debe vencer a los miembros actuales de la red de tokens en la carrera para completar con éxito la tarea repartida. De esta manera, la red de tokens crece agregando nodos de procesamiento cuyo valor computacional a la red es mayor que el de los nodos existentes.
De acuerdo con ciertas realizaciones, la capa de aplicación 110 comprende una o más aplicaciones en donde interactúan con el orquestador 105 y proporcionan al orquestador 105 solicitudes de procesamiento. En el ejemplo no limitativo de la FIGURA 1, las aplicaciones dentro de la capa de aplicación 110 proporcionan solicitudes de procesamiento al orquestador 105 con metadatos que especifican los parámetros de procesamiento para la solicitud de procesamiento. Los parámetros de procesamiento incluyen, sin limitación, fechas límite de procesamiento para la solicitud de procesamiento (por ejemplo, una fecha en la que el trabajo debe completarse), parámetros de prioridad para procesar nodos de la red de tokens (por ejemplo, cuando las solicitudes de procesamiento se reparten para la ejecución probabilística, un parámetro de prioridad puede especificar un porcentaje mínimo de nodos de red de tokens a los que se repartirán tareas de procesamiento), requisitos de salida para la solicitud de procesamiento y parámetros geográficos (por ejemplo, requerir que las tareas de procesamiento asociadas con la solicitud de procesamiento solo se repartan a los nodos de procesamiento en un país determinado).
De acuerdo con ciertas realizaciones, la red 115 es una red cableada que conecta el orquestador 105 a cada uno de los nodos de procesamiento heterogéneos 120a, 120c y 120d. Según otras realizaciones, la red 115 es una red inalámbrica, como una red inalámbrica Wi-Fi o 3G. La red 115 aloja comunicaciones utilizando protocolos de red contextualmente apropiados, incluidos sin limitación, HTTP, Aeron, Message Queueing Telemetry Transport (MQTT), NanoIP, ROLL (Routing Over Low Power and Lossy networks), uIP y UDP. Otros protocolos de comunicación son posibles y dentro del alcance de la presente divulgación.
De acuerdo con ciertas realizaciones, los nodos de procesamiento 120a-c comprenden plataformas de procesamiento en red que son miembros de una red de tokens y que son capaces de recibir de forma segura tareas de procesamiento repartidas por un orquestador 105. Además, cada uno de los nodos de procesamiento 120a-c está asociado con un valor de identificador único almacenado en una memoria a la que el orquestador 105a tiene acceso. En el ejemplo no limitativo de la FIGURA 1, cada uno de los nodos de procesamiento 120a-c se asocia además con uno de los tokens 130a-130c. Como se discutirá con mayor detalle aquí, en ciertas realizaciones, cada uno de los tokens 130a-130c comprende un identificador único mantenido en una billetera de tokens.
De acuerdo con ciertas realizaciones, los nodos de procesamiento 120a-c son potencialmente heterogéneos con respecto a sus capacidades de procesamiento y manejo de trabajos. Las facetas de heterogeneidad entre los nodos de procesamiento 120a-c incluyen, sin limitación, velocidad de procesamiento, RAM disponible, requisitos de energía, almacenamiento disponible, tipos de conectividad de red (por ejemplo, conectividad Wi-Fi, conectividad 3G, GigaBit Ethernet), sensores disponibles (por ejemplo, micrófonos, termómetros, cámaras, barómetros), funcionalidad del procesador (por ejemplo, capacidad de procesamiento de punto flotante, capacidad para la generación de números verdaderos aleatorios) y número de núcleos de procesador. De acuerdo con ciertas realizaciones, los nodos de procesamiento 120a-c son dispositivos miembros, como se describe en el documento de patente WO2019169035-A1.
En algunas realizaciones, los nodos de procesamiento 125a-b comprenden plataformas de procesamiento en red que no son miembros de una red de tokens, y capaces de recibir de forma segura tareas de procesamiento repartidas por el orquestador 105. Además, en el ejemplo no limitativo de la FIGURA 1, cada uno de los nodos de procesamiento 125a-b está asociado con un valor de identificador único y un valor de una métrica de progreso almacenada en una memoria a la que el orquestador 105 tiene acceso de lectura y escritura.
De acuerdo con ciertas realizaciones, los nodos de procesamiento 125a-b son potencialmente heterogéneos con respecto a sus capacidades de procesamiento y manejo de trabajos. Las facetas de heterogeneidad entre los nodos de procesamiento 125a-b incluyen, sin limitación, velocidad de procesamiento, RAM disponible, requisitos de energía, almacenamiento disponible, tipos de conectividad de red (por ejemplo, conectividad Wi-Fi, conectividad 3G, GigaBit Ethernet), sensores disponibles (por ejemplo, micrófonos, termómetros, cámaras, barómetros), funcionalidad del procesador (por ejemplo, capacidad de procesamiento de punto flotante, capacidad para la generación de números aleatorios verdaderos) y número de núcleos de procesador. De acuerdo con ciertas realizaciones, los nodos de procesamiento 125a-b son dispositivos miembros, como se describe en el documento de patente WO2019169035-A1.
La FIGURA 2 ilustra un ejemplo de un orquestador 200 según ciertas realizaciones de esta divulgación.
De acuerdo con ciertas realizaciones, el orquestador 200 se implementa en un equipo servidor y comprende una memoria 205, un procesador 210, un evaluador 215, una suite de API 220 y una interfaz de red 225. El orquestador 200 puede, en algunas realizaciones, ser un orquestador de trabajos, como se describe en el documento de patente WO2019169035-A1.
En el ejemplo no limitativo de la FIGURA 2, el orquestador 200 comprende la memoria 205. La memoria 205 puede contener una o más bibliotecas de datos (por ejemplo, tarjetas de puntuación) que especifican las capacidades de procesamiento de los nodos de procesamiento. En algunas realizaciones, las bibliotecas de las capacidades de los nodos de procesamiento pueden mantenerse a un alto nivel de granularidad, con datos para cada nodo de procesamiento, incluyendo, sin limitación, información sobre el procesador específico del dispositivo y los recursos de memoria. Alternativamente, de acuerdo con otras realizaciones, la biblioteca de información de capacidad del dispositivo consiste en un diccionario de identificadores de dispositivos y una clasificación (por ejemplo, "10X" o "100X") determinada para el dispositivo.
Además, la memoria 205 puede contener un índice que empareja valores de métricas de progreso con identificadores únicos de nodos de procesamiento a los que un orquestador 200 puede repartir tareas de procesamiento. En algunas realizaciones, la memoria 205 comprende además algoritmos de puntuación para asociar tareas de procesamiento con valor computacional, así como identificadores únicos que asocian nodos de procesamiento pertenecientes a una red de tokens (por ejemplo, nodos de procesamiento 120a-c en la FIGURA 1) con identificadores únicos de billeteras de tokens.
De acuerdo con ciertas realizaciones, procesador 210 es un chip de unidad central de procesamiento (CPU) proporcionado dentro de un servidor. De acuerdo con otras realizaciones, el orquestador 200 puede implementarse en múltiples servidores o como parte de un sistema de computación en la nube. En tales realizaciones, procesador 210 consiste en múltiples procesadores separados que operan a través de una transmisión dinámicamente cambiante de máquinas servidor. De acuerdo con otras realizaciones, el orquestador 200 puede implementarse en una máquina virtual, y el procesador 210 es una CPU virtual que consiste en una asignación de recursos de procesador de la(s) máquina(s) física(s) que implementa(n) la máquina virtual.
En varias realizaciones, el orquestador 200 incluye el evaluador 215, que realiza varias tareas de preprocesamiento y postprocesamiento en las solicitudes de procesamiento recibidas por un orquestador 200. De acuerdo con ciertas realizaciones, el evaluador 215 analiza las solicitudes de procesamiento recibidas en el orquestador en tareas de procesamiento constituyentes que pueden repartirse a los nodos de procesamiento. De acuerdo con ciertas realizaciones, el evaluador 215, también puede implementar algoritmos de ponderación u otros procesos para determinar una métrica de trabajo computacional asociado con una tarea de procesamiento repartida (y por implicación, valor computacional para la red de procesamiento proporcionada por el nodo de procesamiento que es el primero en completar una tarea de procesamiento dada). Por ejemplo, un algoritmo implementado por el evaluador 215 puede proporcionar una métrica de trabajo computacional basada en una serie de operaciones de coma flotante ("flops") asociadas con una tarea de procesamiento. En otro ejemplo, un algoritmo implementado por el evaluador 215 puede proporcionar una métrica de trabajo computacional basada en el volumen de datos no procesados proporcionados como parte de la solicitud de procesamiento. Numerosas variaciones son posibles y dentro del alcance previsto de esta divulgación.
Según algunas realizaciones, la suite de API 220 contiene una o más interfaces de programación de aplicaciones (API) 225a-225d para establecer comunicaciones entre el orquestador 200 y los nodos de procesamiento.
En el ejemplo no limitativo de la FIGURA 2, la suite de API 220 comprende una o más API que son capaces de asignar un conjunto de funciones de procesamiento preestablecidas en una solicitud de procesamiento (por ejemplo, para realizar una función hash) a un conjunto de comandos para los nodos de procesamiento. En algunas realizaciones, las funciones de procesamiento preestablecidas pueden expresarse en un formato orientado a objetos, y como métodos y atributos comprendientes. Por ejemplo, en algunas realizaciones, las funciones preestablecidas pueden asignarse a objetos API de un sistema operativo específico de IoT, como la plataforma Conera desarrollada por V2COM, Inc.
Según algunas realizaciones, las funciones de procesamiento preestablecidas pueden asignarse a comandos específicos del dispositivo o del sistema operativo. Por ejemplo, de acuerdo con algunas realizaciones, la API puede asignar una función "hash" en una solicitud de procesamiento al método Java "hashCode" que puede ser implementado por un nodo de procesamiento. Alternativamente, en algunas realizaciones, la suite de API 220 puede comprender una sola API, que asigna funciones preestablecidas a comandos en todo el espectro de sistemas operativos y capacidades de procesamiento encontradas en los nodos de procesamiento. De acuerdo con otras realizaciones, las a Pi individuales dentro de la suite de API 220 pueden proporcionar asignaciones de funciones preestablecidas de nivel de centro de comando a diferentes modelos de datos, con el fin de admitir comunicaciones en una amplia gama de contextos de red y capacidades de nodos de procesamiento.
En algunas realizaciones, interfaz de red 225 funciona para interconectar un orquestador 200 con una o más redes (por ejemplo, la red 115 en la FIGURA 1). La interfaz de red 225 puede, dependiendo de las realizaciones, tener una dirección de red expresada como un ID de nodo, un número de puerto o una dirección IP. De acuerdo con ciertas realizaciones, la interfaz de red 225 se implementa como hardware, por ejemplo, mediante una tarjeta de interfaz de red (NIC). Alternativamente, la interfaz de red 225 puede implementarse como software, como por ejemplo mediante una instancia de la clase java.net.NetworkInterface. Además, según algunas realizaciones, la interfaz de red 225 admite comunicaciones a través de múltiples protocolos, como TCP / IP, así como protocolos inalámbricos, como 3G o Bluetooth.
La FIGURA 3 ilustra un nodo de procesamiento de acuerdo con varias realizaciones de esta divulgación.
La FIGURA 3 ilustra un ejemplo de un nodo de procesamiento 300 de acuerdo con ciertas realizaciones de esta divulgación. De acuerdo con algunas realizaciones, el nodo de procesamiento 300 es un tipo "inteligente" de otro dispositivo, como un electrodoméstico o el controlador de otros electrodomésticos. Según otras realizaciones, el nodo de procesamiento 300 es un teléfono inteligente o una tableta. De acuerdo con otras realizaciones, el nodo de procesamiento 300 es un medidor en red, o una placa de desarrollo conectada a un punto de presencia (por ejemplo, una farola, un interruptor, un semáforo o un poste de servicios públicos) de una empresa de servicios públicos. De acuerdo con otras realizaciones, el nodo de procesamiento 300 puede ser un dispositivo de puerta de enlace, como un dispositivo de puerta de enlace de Internet de las cosas (IoT). Ejemplos de dispositivos de puerta de enlace que pueden funcionar como un nodo de procesamiento 300 incluyen, sin limitación, el concentrador inteligente Neuron C y la unidad de submedición inteligente Dendrion Power de V2COM, Inc. y numerosas realizaciones son posibles y dentro del alcance de esta divulgación.
De acuerdo con ciertas realizaciones, el nodo de procesamiento 300 incluye un procesador 305. En el ejemplo no limitativo de la Figura 3, el procesador 305 es un procesador multifunción (a diferencia de, por ejemplo, un ASIC específico de la función) con uno o más núcleos, que es capaz de ejecutar código de programa almacenado en una memoria no transitoria 310. En el ejemplo no limitativo de la FIGURA 3, el procesador 305 incluye, o está acoplado con un reloj 307, cuya velocidad proporciona una medida de la capacidad de procesamiento del procesador 305. En algunas realizaciones, el procesador 305 tiene características tales como, por ejemplo y sin limitación, procesamiento de coma flotante, generación de números aleatorios verdaderos, o una caché inteligente, que no se encuentra en el procesador de otros nodos de procesamiento.
De acuerdo con algunas realizaciones, la memoria 310 contiene código de programa que, cuando es ejecutado por el procesador 305, hace que el procesador realice las funciones del nodo de procesamiento 300 del que forma parte. Volviendo al ejemplo no limitativo de un controlador de sistema de automatización del hogar discutido aquí, la memoria 310 contiene instrucciones, que cuando son ejecutadas por el procesador 305, hacen que realice funciones, como leer y escribir datos de temperatura en la memoria 310, controlar el funcionamiento de los dispositivos de entrada / salida 320 para enviar señales de control para dispositivos dentro del hogar (por ejemplo, bombillas inteligentes, calentadores y acondicionadores de aire controlados electrónicamente, y persianas controladas electrónicamente). Además, las regiones de memoria 310 se pueden asignar para el almacenamiento de datos y el almacenamiento de código de programa adicional, incluidas una o más aplicaciones 315.
De acuerdo con ciertas realizaciones, las aplicaciones 315 comprenden código de programa o software que puede ser escrito en la memoria 310 y leído y ejecutado por el procesador 305. En el ejemplo no limitativo de la FIGURA 3, las aplicaciones 315 incluyen aplicaciones asociadas con la función principal del nodo de procesamiento (por ejemplo, aplicaciones de automatización del hogar, como una aplicación para el control automatizado de bombillas conectadas a Internet) y máquinas virtuales alojadas en el nodo de procesamiento 300.
En el ejemplo no limitativo de la FIGURA 3, el nodo de procesamiento 300 tiene dispositivos de entrada/salida 320. Según ciertas realizaciones, los dispositivos de entrada/salida 320 incluyen una pantalla (como una pantalla LED), un teclado y un ratón. De acuerdo con otras realizaciones, los dispositivos de E/S 320 son un conjunto de pines de entrada/salida conectados a pines de un procesador o controlador, como el procesador 305.
En el ejemplo no limitativo de la FIGURA 3, el nodo de procesamiento 300 tiene un sistema operativo (SO) 325, que admite el procesamiento de las funciones básicas del nodo 300, incluidas, entre otras, la ejecución de aplicaciones 315, la recepción de datos de los sensores 330 y el envío y recepción de datos a través de la interfaz de red 325. Según algunas realizaciones, el SO 325 puede ser un sistema operativo de propósito general, como Android o iOS. Según otras realizaciones, el SO 325 puede ser un sistema operativo propietario como Fire OS. Según otras realizaciones, el SO 325 es un sistema operativo orientado a IoT, como Conera de V2COM, Inc.
De acuerdo con ciertas realizaciones, el nodo de procesamiento 300 incluye sensores 330. En el ejemplo no limitativo de la FIGURA 3, los sensores 330 incluyen, sin limitación, cámaras, micrófonos, termómetros, sensores barométricos, medidores de luz, monitores de energía, medidores de agua y sensores de lluvia.
En algunas realizaciones, la interfaz de red 325 opera para interconectar el nodo de procesamiento 300 con una o más redes (por ejemplo, la red 115 en la FIGURA 1). La interfaz de red 325 puede, de acuerdo con ciertas realizaciones, tener una dirección de red expresada como un ID de nodo, un número de puerto o una dirección IP. De acuerdo con ciertas realizaciones, la interfaz de red 325 se implementa como hardware, como por ejemplo mediante una tarjeta de interfaz de red (NIC). Alternativamente, la interfaz de red 325 puede implementarse como software, como por ejemplo mediante una instancia de la clase java.net.NetworkInterface. Además, según algunas realizaciones, la interfaz de red 325 admite comunicaciones a través de múltiples protocolos, como TCP/IP, así como protocolos inalámbricos, como 3G o Bluetooth.
La FIGURA 4 ilustra las operaciones de un método 400 según esta divulgación.
En el ejemplo no limitativo de la FIGURA 4, las operaciones del método 400 se realizan en un orquestador incorporado en una única plataforma de servidor. Otras realizaciones, en las que las operaciones del método 400 son realizadas por múltiples y/o diferentes plataformas informáticas (por ejemplo, un nodo de procesamiento, como se muestra en la FIGURA 1) son posibles y están dentro del alcance previsto de esta divulgación.
En la operación 405, el orquestador (por ejemplo, orquestador 105 en la FIGURA 1) recibe una solicitud de procesamiento. Las solicitudes de procesamiento son, en algunas realizaciones, recibidas de aplicaciones a través de una o más interfaces del orquestador. En otras realizaciones, la recepción de una tarea de procesamiento en el orquestador está asociada con el establecimiento de un contrato inteligente entre una billetera digital del orquestador y la billetera digital asociada con un identificador único de una parte (o dispositivo) que envía la solicitud de procesamiento. Tal como se utiliza en este documento, el término solicitud de procesamiento abarca envíos digitales al orquestador que definen los parámetros de una tarea computacional que deben realizar los nodos de procesamiento configurados para recibir tareas de procesamiento repartidas por el orquestador. En algunas realizaciones, las solicitudes de procesamiento se envían como paquetes de archivos de datos para ser procesados, junto con instrucciones definidas por el usuario. En otras realizaciones, las solicitudes de procesamiento pueden enviarse en un formato orientado a objetos, que comprende un conjunto definido de atributos y métodos que se realizarán al respecto. En otras realizaciones, las solicitudes de procesamiento pueden enviarse como un conjunto de punteros a fuentes de datos a las que se debe realizar un conjunto de operaciones predefinidas. Los ejemplos de operaciones computacionales que se pueden incluir en una solicitud de procesamiento recibida en la operación 405 incluyen, entre otros, tareas de reconocimiento de imágenes, extracción de características (como en una red neuronal convolucional) y cálculo de valores hash.
En la FIGURA 4, en la operación 410, el orquestador identifica uno o más procesamientos dentro de la solicitud de procesamiento. Según algunas realizaciones, la identificación de tareas de procesamiento dentro de una tarea de procesamiento comprende la reemisión de la solicitud de procesamiento como un conjunto de tareas de procesamiento constituyentes discretas que se ajustan a las capacidades a nivel de máquina de los nodos de procesamiento en la red.
En la operación 415, el orquestador reparte las tareas de procesamiento identificadas en la operación 415 a los nodos de procesamiento de la red de procesamiento a través de una interfaz de red, basándose en uno o más factores predeterminados. En el ejemplo no limitativo de la FIGURA 4, los factores no limitantes incluyen, sin limitación, valores de métricas de rendimiento del nodo de procesamiento extraídas de tarjetas de puntuación mantenidos en el orquestador. En otras realizaciones, los valores de las métricas de rendimiento del nodo de procesamiento se pueden mantener en los nodos de procesamiento mismos. En ciertas realizaciones, los factores predeterminados sobre los que se puede basar la repartición de las tareas de procesamiento incluyen, sin limitación, indicadores (como una variable binaria) que indican si un nodo de procesamiento es miembro de una red de tokens o, alternativamente, el valor de la métrica de progreso para un nodo de procesamiento que aún no es miembro de una red de tokens.
En algunas realizaciones, como parte de la operación 415, el orquestador, o un componente del mismo (por ejemplo, el evaluador 215 que se muestra en la FIGURA 2) también puede calcular el valor de una métrica que representa el costo computacional para el nodo de procesamiento (y, por implicación, el valor del trabajo computacional para la red de procesamiento) asociado con el procesamiento de la tarea repartida. Como se discutió aquí, las métricas de costo computacional incluyen, sin limitarse a, estimaciones del número de flops asociados con una tarea o el volumen de datos sin procesar.
En algunas realizaciones, después de que las tareas de procesamiento se reparten y proporcionan los nodos de procesamiento identificados a través de una red (por ejemplo, la red 115 en la FIGURA 1), comienza una carrera entre los nodos de procesamiento para ser el primer proceso exitoso una tarea de procesamiento repartida. En algunas realizaciones, el campo de los nodos de procesamiento puede estar compuesto completamente por nodos de procesamiento dentro de la red de tokens. En otras realizaciones, el campo de los nodos de procesamiento puede incluir uno o más nodos de procesamiento dentro de la red de tokens, para proporcionar un punto de referencia de rendimiento y promover la auto optimización de la red de procesamiento al requerir que las nuevas adiciones a la red de tokens tengan un rendimiento más alto que los nodos de procesamiento actuales de la red de tokens.
En la operación 420, uno de los nodos a los que se repartió la tarea de procesamiento en la operación es el primero en notificar al orquestador que ha completado correctamente su tarea de procesamiento, y el orquestador recibe la tarea completada del nodo. En algunas realizaciones, el nodo de procesamiento notifica al orquestador de su finalización correcta proporcionando al orquestador la salida (por ejemplo, un valor calculado o datos procesados) de su operación de procesamiento. En otras realizaciones, la recepción por parte del orquestador de la tarea completada es independiente de su notificación de recepción de que el nodo de procesamiento ha completado correctamente la tarea.
En la operación 425, el orquestador realiza una determinación de si la tarea de procesamiento competidora fue completada por un nodo de procesamiento que es miembro de una red de tokens. En un ejemplo no limitativo, la tarea de procesamiento completada recibida en el orquestador en la operación 420 también puede incluir un indicador confiable (como una firma digital del nodo de procesamiento) en cuanto a la identidad del nodo de procesamiento. En función del indicador de confianza de la identidad del nodo de procesamiento, el orquestador determina si la tarea de procesamiento fue completada por un nodo perteneciente a una red de tokens.
En la FIGURA 4, si la tarea repartida no es procesada por un nodo en la red de tokens, el método 400 procede a la operación 430, en donde el orquestador actualiza un valor existente de una métrica de progreso para el nodo identificado en la operación 425. En algunas otras realizaciones, el orquestador crea un valor nuevo o inicial de una métrica de progreso para el nodo de procesamiento. En algunas realizaciones, el valor de la métrica de progreso puede reflejar el agregado calculado del valor (por ejemplo, una estimación de flop determinada por el evaluador 215 en la FIGURA 2) de las tareas repartidas que el nodo de procesamiento fue el primero en completar con éxito. Alternativamente, en otras realizaciones, el valor de la métrica de progreso puede, dependiendo de los requisitos generales de rendimiento de la red de procesamiento, comprender el número de tareas repartidas que el nodo de procesamiento fue el primero en proporcionar al orquestador una tarea completada. Numerosas variaciones son posibles y dentro del alcance previsto de esta divulgación.
En la operación 435, el orquestador determina si la métrica de progreso actualizada para el nodo de procesamiento del que el orquestador recibió la tarea completada en la operación 420 supera un valor umbral predeterminado. Por ejemplo, en realizaciones en las que la métrica de progreso se deduce de un volumen de datos sin procesar en la solicitud de procesamiento completada correctamente por el nodo, el valor umbral puede ser diez gigabytes (10GB). En tales realizaciones, en la operación 435, el orquestador compara el volumen total de datos asociados con tareas repartidas que el nodo de procesamiento fue el primero entre uno o más nodos de procesamiento en completar con el valor umbral de 10 GB.
Aunque en el ejemplo anterior, la determinación de si el valor de la métrica de progreso para el nodo de procesamiento excede un valor umbral se ha descrito con referencia a una realización en la que cada nodo de procesamiento se evalúa sobre la base de una única métrica común y un único valor de umbral común predeterminado, la divulgación no es tan limitada. En algunas realizaciones, el grado de heterogeneidad entre los nodos de procesamiento puede ser tal que los diversos nodos de procesamiento del sistema pueden organizarse en clases y el progreso de un nodo en particular hacia la membresía en la red de tokens se determina en función de una métrica de progreso específica de la clase y un par de valores de umbral. Por lo tanto, en ciertas redes de procesamiento heterogéneas de acuerdo con las realizaciones de esta divulgación, una clase de progreso de los nodos de procesamiento puede evaluarse de acuerdo con las métricas de volumen de datos descritas en el párrafo anterior, mientras que otra clase de dispositivos (por ejemplo, dispositivos que tienen unidades de procesamiento de gráficos u otros procesadores capaces de procesar simultáneamente un gran número de subprocesos) puede evaluarse de acuerdo con una métrica de progreso denominada de manera diferente (por ejemplo, un número de hashes calculados).
En la FIGURA 4, si la métrica de progreso actualizada para el nodo de procesamiento excede un valor predeterminado, entonces el método 400 procede a la operación 440, en donde el nodo de procesamiento, cuya métrica de progreso se determinó, en la operación 435, para tener un valor superior a un valor umbral predeterminado, se agrega a la red de tokens. Según algunas realizaciones, agregar el nodo de procesamiento a la red de tokens es computacionalmente liviano y simplemente requiere agregar el nodo a un índice de identificadores de nodo de procesamiento. En otras realizaciones, la integridad de la red de tokens puede mejorarse (por ejemplo, evitando adiciones fraudulentas o no ganadas a la red de tokens) mediante la implementación de una billetera digital y un sistema de contabilidad distribuida. En algunas realizaciones, cada token está asociado con un libro mayor distribuido, y el orquestador y los nodos de procesamiento están asociados con identificadores únicos (por ejemplo, un identificador IMEI). Cuando se agrega un nodo de procesamiento a la red de tokens, el libro mayor distribuido se actualiza para incluir una entrada que empareja el identificador único de un token con el identificador único del nodo de procesamiento o la billetera digital de un titular de token. Una vez que la adición del nodo de procesamiento a la red de tokens en el libro mayor distribuido ha sido ratificada por las máquinas que mantienen el libro mayor distribuido, el nodo de procesamiento se agrega formal y completamente como miembro de la red de tokens.
De acuerdo con ciertas realizaciones, si la métrica de progreso actualizada para el nodo de procesamiento no excede un valor predeterminado, entonces el método 400 procede a la operación 445, en donde, para los fines de la tarea de procesamiento repartida en la operación 415 y el nodo de procesamiento, se concluye la instancia actual del método 400. Sin embargo, debe tenerse en cuenta que, en algunas realizaciones, a un nodo de procesamiento dado se le pueden repartir múltiples tareas de procesamiento por el orquestador, y como tal, el orquestador puede estar realizando múltiples instancias del método 400 con respecto a un nodo de procesamiento particular.
Además, en algunas realizaciones, si se determina en la operación 425 que la tarea repartida fue procesada con éxito por un nodo en la red de tokens, el método 400 procede a la operación 450, en donde se aplica una regla de red de token para el nodo de procesamiento desde el cual se recibió la tarea completada en la operación 420. De acuerdo con algunas realizaciones, la aplicación de la regla de red de token puede comprender proporcionar un identificador único asociado con el nodo de procesamiento con una recompensa u otro proxy de valor a cambio de la finalización rápida y exitosa del nodo de procesamiento de la tarea de procesamiento repartida en la operación 415.
Como se discutió en otra parte del presente documento, al agregar nodos de procesamiento con valor computacional demostrado como miembros de una red de tokens, ciertas realizaciones de acuerdo con esta divulgación proporcionan una forma computacionalmente económica (por ejemplo, como alternativa al intento de modelar, con base en la heterogeneidad de la potencia computacional, la calidad de la conexión de red y la disponibilidad esperada para realizar tareas repartidas) de auto optimizar una red de nodos de procesamiento heterogéneos como un súper ordenador para el procesamiento distribuido de solicitudes de procesamiento grandes. Según algunas realizaciones, las tareas de procesamiento se reparten a un conjunto de nodos de procesamiento sustraídos que incluye miembros de la red de tokens. De esta manera, las nuevas adiciones a la red de tokens son, en conjunto, al menos tan computacionalmente capaces como los miembros existentes de la red de tokens. En consecuencia, la red de procesamiento se auto optimiza identificando y expandiendo el conjunto de nodos de procesamiento cuyo valor computacional para la red ha sido probado. Además, la red de procesamiento se auto optimiza aún más en el sentido de que, con el tiempo, el rendimiento computacional agregado de la red de tokens aumenta constantemente, como resultado del hecho de que, para ser agregado como un nuevo miembro de la red de tokens, un nodo de procesamiento generalmente debe superar a los miembros actuales de la red de tokens.
La auto optimización de una red de nodos de procesamiento como un súper ordenador para el procesamiento distribuido de grandes solicitudes de procesamiento puede ampliarse y mejorarse al permitir que los tokens se transfieran de forma segura. Permitir que se transfieran tokens (y, por implicación, un nodo de procesamiento asociado con el titular del token) puede, por ejemplo, abordar problemas que surgen cuando un cambio en las circunstancias (por ejemplo, daño al nodo de procesamiento, un cambio en la cantidad de tiempo de inactividad del nodo de procesamiento, etc.) disminuye el valor computacional de un nodo de procesamiento en la red de tokens a una red de procesamiento distribuido. En ciertas realizaciones, el token obtenido por el primer nodo de procesamiento podría transferirse a un segundo nodo de procesamiento, sin tener que esperar a que el segundo nodo de procesamiento gane por separado su membresía en el nodo token. Al no vincular rígidamente el token que indica la pertenencia de un nodo de procesamiento en la red de tokens a una sola máquina específica, los nodos de procesamiento de la red de tokens se pueden actualizar, reparar o reemplazar, lo que ayuda a garantizar que los nodos de procesamiento de la red de tokens puedan mantener su estado como contribuyentes probados a la red de procesamiento.
La FIGURA 5 ilustra una estructura de datos 500 para rastrear la membresía en una red de tokens de acuerdo con ciertas realizaciones de esta divulgación. En el ejemplo no limitativo de la FIGURA 5, la estructura de datos 500 comprende una entrada en un libro mayor distribuido que es ratificada por ordenadores en red que están conectados comunicativamente a un orquestador (por ejemplo, orquestador 105 en la FIGURA 1). En otras realizaciones, la estructura de datos 500 se mantiene como datos en el orquestador. En otras realizaciones, los datos 500 se mantienen en una base de datos de lenguaje de consulta estructurado (SQL) accesible a un orquestador. Numerosas realizaciones son posibles y dentro del alcance previsto de esta divulgación.
De acuerdo con ciertas realizaciones, para cada token de una red de tokens, se mantiene al menos una instancia confiable de la estructura de datos 500. En el ejemplo no limitativo de la FIGURA 5, la instancia de la estructura de datos 500 se asigna al identificador único de un token 505. En este ejemplo, el token #1234 se asigna al identificador único "ZZ9876". En algunas realizaciones, un orquestador puede servir como agente de nomenclatura para identificadores únicos asociados con tokens. En esta capacidad, el orquestador puede asignar identificadores únicos para tokens y también verificar la autenticidad de los identificadores únicos presentados en el orquestador, por ejemplo, confirmando si un identificador único coincide con un valor en un registro mantenido por el orquestador.
En algunas realizaciones, la estructura de datos 500 proporciona una lista confiable de identificadores de origen y destino para cada transacción en la vida útil del token, comenzando con una transferencia desde una entidad raíz de confianza.
En el ejemplo no limitativo de la FIGURA 5, la primera entrada 510 en la estructura de datos 500 representa la adición de un nodo de procesamiento a una red. En la transacción registrada por la primera entrada 510, el token #1234, que tiene un identificador único #ZZZ9876 se transfiere de la billetera del tesoro a la billetera del "Usuario 1" (que está asociada con el identificador único #: DEF 2345). Tal como se usa en este documento, el término "billetera" abarca evidencia digital en la que confían los nodos de procesamiento y los usuarios de la red de procesamiento en cuanto a la propiedad actual de un token. Las carteras pueden, sin limitación, mantenerse como entradas de base de datos en un servidor de confianza o en un libro mayor distribuido. Además, tal como se utiliza en este documento, con el fin de mantener registros en la estructura de datos 500, el término "usuario" abarca tanto a los miembros constitutivos de la red de procesamiento (por ejemplo, orquestadores y nodos de procesamiento), como a las personas y entidades que poseen o controlan los nodos de procesamiento de la red. En el ejemplo no limitativo de la FIGURA 5, "Usuario 1" se refiere a un nodo de procesamiento cuya métrica de progreso ha superado un valor de umbral.
De acuerdo con ciertas realizaciones, cada transferencia de un token de un usuario a otro usuario se registra en la estructura de datos 500, y las brechas en la cadena de transferencia (por ejemplo, "de a a b" y luego "de c a d") desencadenan la aplicación de reglas predeterminadas (por ejemplo, anular todas las transacciones después de la brecha en la cadena de transferencia. Además, según algunas realizaciones, para que se reconozca una nueva entrada en la estructura de datos 500, puede estar sujeta a la ratificación de una cohorte de máquinas pares que mantienen la estructura de datos 500 como una entrada en un libro mayor distribuido.
En el ejemplo no limitativo de la FIGURA 5, la estructura de datos 500 se muestra como manteniendo una cadena de transferencia completa desde la transferencia inicial 510 desde la billetera del tesoro hasta una penúltima 515 y la transferencia final 520. Como se muestra en la FIGURA 5, el token #1234 está actualmente en manos del "usuario 4". De acuerdo con ciertas realizaciones, una billetera digital asociada con el "usuario 4", después de que la entrada 530 se registre en la estructura de datos 500, se actualizaría para reflejar la propiedad actual del token del "usuario 4". Además, en algunas realizaciones, para prevenir el fraude o resolver conflictos en cuanto a la propiedad de tokens, un orquestador puede implementar una jerarquía entre las instancias de la estructura de datos 500 y las billeteras digitales de los usuarios, por la cual la estructura de datos 500 se acuerda como el registro de control de la propiedad del token.

Claims (20)

REIVINDICACIONES
1. Un método de procesamiento distribuido, el método comprende:
recibir (405) una solicitud de procesamiento en un orquestador (105), el orquestador comprende un procesador (210), una interfaz de red (225) y una memoria (205), el orquestador (105) conectado a través de la interfaz de red (225) a una red (115) de nodos de procesamiento (120a-c, 125a-b), la red de nodos de procesamiento comprende una red de tokens, en donde los nodos de procesamiento (120a-c) que son miembros de la red de tokens son capaces de recibir de forma segura las tareas de procesamiento repartidas por el orquestador (105) y están asociados con tokens (130a-130c); identificar (410) una o más tareas dentro de la solicitud de procesamiento;
repartir (415), a través de la interfaz de red (225), una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red (115) para su procesamiento, la repartición basada en una tarjeta de puntuación para cada nodo del conjunto de nodos;
recibir (420), a través de la interfaz de red (225), una tarea completada desde un nodo del conjunto de nodos; realizar una determinación (425) de si la tarea completada fue procesada por un nodo de la red de tokens;
en respuesta a la determinación de que la tarea completada fue procesada por un nodo que no está en la red de tokens, actualizar (430) un valor de una métrica de progreso para el nodo que no está en la red de tokens;
realizar una determinación (435) de si el valor de la métrica de progreso excede un valor predeterminado; y en respuesta a una determinación de que el valor de la métrica de progreso supera un valor predeterminado, agregar (440) el nodo a la red de tokens.
2. El método de acuerdo con la reivindicación 1, caracterizado porque el orquestador (105) está conectado a través de la interfaz de red (225) a la red de tokens, la red de tokens comprende una red de nodos heterogéneos (120a-c).
3. El método de acuerdo con la reivindicación 1, caracterizado porque la repartición (415) de una o más tareas de la solicitud de procesamiento comprende la optimización de una métrica de rendimiento de red basada en los valores de propiedad del nodo incluidos en la tarjeta de puntuación para cada nodo del conjunto de nodos.
4. El método de acuerdo con la reivindicación 1, caracterizado porque el orquestador (105) se implementa en uno o más nodos del conjunto de nodos de la red de procesamiento.
5. El método de acuerdo con la reivindicación 1, caracterizado porque agregar (440) el nodo a la red de tokens comprende asociar un ID único de un token con un ID único de una billetera de tokens.
6. El método de acuerdo con la reivindicación 5, caracterizado porque asociar el ID único de un token con el ID único de la billetera de tokens comprende la generación de una entrada en un libro mayor distribuido.
7. El método de acuerdo con la reivindicación 1, que comprende, además:
En respuesta a agregar (440) el nodo a la red de tokens, actualizar un índice de nodo de token del orquestador (105) para asociar un identificador único de un token con el nodo agregado a la red de tokens.
8. Un orquestador (105) que comprende:
un procesador (210);
una interfaz de red (225) conectada a una red (115) de nodos de procesamiento (120a-c, 125a-b), la red de nodos de procesamiento comprende una red de tokens, en donde los nodos de procesamiento (120a-c) que son miembros de la red de tokens son capaces de recibir de forma segura las tareas de procesamiento repartidas por el orquestador (105) y están asociadas con tokens (130a-130c); y
una memoria (205) que contiene instrucciones que, cuando son ejecutadas por el procesador (210), hacen que el orquestador (105):
reciba (405) una solicitud de procesamiento;
identifique (410) una o más tareas dentro de la solicitud de procesamiento;
reparta (415), a través de la interfaz de red (225), las una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red (115) para su procesamiento, la repartición basada en una tarjeta de puntuación para cada nodo del conjunto de nodos;
reciba (420), a través de la interfaz de red (225); una tarea completada desde un nodo del conjunto de nodos; realizar una determinación (425) de si la tarea completada fue procesada por un nodo de la red de tokens;
en respuesta a la determinación de que la tarea completada fue procesada por un nodo que no está en la red de tokens, actualice (430) un valor de una métrica de progreso para el nodo que no está en la red de tokens;
realice una determinación (435) de si el valor de la métrica de progreso supera un valor predeterminado; y
en respuesta a la determinación de que el valor de la métrica de progreso supera un valor predeterminado, agregue (440) el nodo a la red de tokens.
9. El orquestador de acuerdo con la reivindicación 8, caracterizado porque el orquestador (105) está conectado a través de la interfaz de red (225) a la red de tokens, la red de tokens comprende una red de nodos heterogéneos (120a-c).
10. El orquestador de acuerdo con la reivindicación 8, caracterizado porque la repartición (415) de una o más tareas de la solicitud de procesamiento comprende la optimización de una métrica de rendimiento de red basada en los valores de propiedad del nodo incluidos en la tarjeta de puntuación para cada nodo del conjunto de nodos.
11. El orquestador de acuerdo con la reivindicación 8, caracterizado porque el orquestador (105) se implementa en uno o más nodos del conjunto de nodos de la red de procesamiento.
12. El orquestador de acuerdo con la reivindicación 8, caracterizado porque agregar (440) el nodo a la red de tokens comprende asociar un ID único de un token con un ID único de una billetera de tokens.
13. El orquestador de acuerdo con la reivindicación 12, caracterizado porque la asociación del ID único de un token con el ID único de la billetera de tokens comprende la generación de una entrada en un libro mayor distribuido.
14. El orquestador de acuerdo con la reivindicación 8, caracterizado porque la memoria contiene instrucciones adicionales, que cuando son ejecutadas por el procesador (210), hacen que el orquestador (105):
en respuesta a la adición de (440) el nodo a la red de tokens, actualice un índice de nodo de token del orquestador (105) para asociar un identificador único de un token con el nodo agregado a la red de tokens.
15. Un medio no transitorio legible por ordenador que contiene código de programa, que cuando es ejecutado por un procesador (210) de un orquestador (105), hace que el orquestador (105):
reciba (405) una solicitud de procesamiento a través de una interfaz de red (225) del orquestador (105) conectada a una red (115) de nodos de procesamiento (120a-c, 125a-b), la red de nodos de procesamiento comprende una red de tokens, en donde los nodos de procesamiento (120a-c) que son miembros de la red de tokens son capaces de recibir de forma segura las tareas de procesamiento distribuidas por el orquestador (105) y están asociadas con tokens (130a-130c); identificar (410) una o más tareas dentro de la solicitud de procesamiento;
reparta (415), a través de la interfaz de red (225), las una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red (115) para su procesamiento, la repartición basada en una tarjeta de puntuación para cada nodo del conjunto de nodos;
reciba (420), a través de la interfaz de red (225); una tarea completada desde un nodo del conjunto de nodos; realice una determinación (425) de si la tarea completada fue procesada por un nodo de la red de tokens;
en respuesta a la determinación de que la tarea completada fue procesada por un nodo que no está en la red de tokens, actualice (430) un valor de una métrica de progreso para el nodo que no está en la red de tokens;
realice una determinación (435) de si el valor de la métrica de progreso supera un valor predeterminado; y
en respuesta a la determinación de que el valor de la métrica de progreso supera un valor predeterminado, agregue (440) el nodo a la red de tokens.
16. El medio legible por ordenador no transitorio de acuerdo con la reivindicación 15, que contiene código de programa, que cuando es ejecutado por el procesador (210), además hace que el orquestador (105) se conecte a través de la interfaz de red (225) a la red de tokens, la red de tokens comprende una red de nodos heterogéneos (120a-c).
17. El medio no transitorio legible por ordenador de acuerdo con la reivindicación 15, que contiene código de programa, que cuando es ejecutado por el procesador (210), además hace que el procesador reparta (415), a través de la interfaz de red (225), las una o más tareas de la solicitud de procesamiento a un conjunto de nodos de la red (115) para su procesamiento, caracterizado porque la repartición de las una o más tareas de la solicitud de procesamiento comprende la optimización de una métrica de rendimiento de red basada en los valores de propiedad del nodo incluido en la tarjeta de puntuación para cada nodo del conjunto de nodos.
18. El medio no transitorio legible por ordenador de acuerdo con la reivindicación 15, que contiene código de programa, que cuando es ejecutado por el procesador (210), además hace que el orquestador (105) se implemente en uno o más nodos del conjunto de nodos de la red de procesamiento.
19. El medio no transitorio legible por ordenador de acuerdo con la reivindicación 15, caracterizado porque agregar (440) el nodo a la red de tokens comprende asociar un ID único de un token con un ID único de una billetera de tokens.
20. El medio no transitorio legible por ordenador de acuerdo con la reivindicación 19, que contiene código de programa, que cuando es ejecutado por el procesador (210), además hace que el orquestador (105) asocie el ID único del token con el ID único de la billetera de tokens, en donde la asociación del ID único de un token con el ID único de la billetera de tokens comprende la generación de una entrada en un libro mayor distribuido.
ES19722729T 2018-03-30 2019-03-29 Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos Active ES2935141T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862650659P 2018-03-30 2018-03-30
PCT/US2019/024809 WO2019191569A1 (en) 2018-03-30 2019-03-29 System and method for resource management and resource allocation in a self-optimizing network of heterogeneous processing nodes

Publications (1)

Publication Number Publication Date
ES2935141T3 true ES2935141T3 (es) 2023-03-01

Family

ID=66440116

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19722729T Active ES2935141T3 (es) 2018-03-30 2019-03-29 Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos

Country Status (8)

Country Link
EP (1) EP3777047B1 (es)
CN (1) CN112106327B (es)
BR (1) BR112020020119A2 (es)
DK (1) DK3777047T3 (es)
ES (1) ES2935141T3 (es)
FI (1) FI3777047T3 (es)
MX (1) MX2020009779A (es)
WO (1) WO2019191569A1 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110866167B (zh) * 2019-11-14 2022-09-20 北京知道创宇信息技术股份有限公司 任务分配方法、装置、服务器和存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0805393B1 (en) * 1996-04-30 2011-11-09 International Business Machines Corporation Method and apparatus for managing membership of a group of processors in a distributed computing environment
US7543020B2 (en) * 2005-02-10 2009-06-02 Cisco Technology, Inc. Distributed client services based on execution of service attributes and data attributes by multiple nodes in resource groups
US8244721B2 (en) * 2008-02-13 2012-08-14 Microsoft Corporation Using related users data to enhance web search
US20120254965A1 (en) * 2011-04-04 2012-10-04 Lansing Arthur Parker Method and system for secured distributed computing using devices
US9197733B2 (en) * 2012-02-21 2015-11-24 Blackberry Limited System and method for transferring data between electronic devices
US10187474B2 (en) * 2012-08-08 2019-01-22 Samsung Electronics Co., Ltd. Method and device for resource sharing between devices
US10454997B2 (en) * 2012-09-07 2019-10-22 Avigilon Corporation Distributed physical security system
US9819596B2 (en) * 2015-02-24 2017-11-14 Qualcomm Incorporated Efficient policy enforcement using network tokens for services C-plane approach
US10212596B2 (en) * 2015-06-05 2019-02-19 Apple Inc. System and method for migrating data between devices
US9699205B2 (en) * 2015-08-31 2017-07-04 Splunk Inc. Network security system
JP6579884B2 (ja) * 2015-09-24 2019-09-25 キヤノン株式会社 通信装置、制御方法、及びプログラム
US9977697B2 (en) * 2016-04-15 2018-05-22 Google Llc Task management system for a modular electronic device
WO2017222763A2 (en) * 2016-05-31 2017-12-28 Vapor IO Inc. Autonomous distributed workload and infrastructure scheduling

Also Published As

Publication number Publication date
CN112106327B (zh) 2021-11-23
CN112106327A (zh) 2020-12-18
EP3777047A1 (en) 2021-02-17
BR112020020119A2 (pt) 2021-01-26
FI3777047T3 (fi) 2023-01-13
DK3777047T3 (da) 2023-01-09
EP3777047B1 (en) 2022-10-05
WO2019191569A1 (en) 2019-10-03
MX2020009779A (es) 2020-10-12

Similar Documents

Publication Publication Date Title
US10476985B1 (en) System and method for resource management and resource allocation in a self-optimizing network of heterogeneous processing nodes
US11436051B2 (en) Technologies for providing attestation of function as a service flavors
JP6638024B2 (ja) システム、スマートコントラクトのライフサイクルの管理方法、及び非一時的コンピュータ可読媒体
US10884810B1 (en) Workload management using blockchain-based transaction deferrals
US10929198B2 (en) Blockchain-based resource allocation method and apparatus
KR102499076B1 (ko) 그래프 데이터 기반의 태스크 스케줄링 방법, 디바이스, 저장 매체 및 장치
KR101815148B1 (ko) 설정 가능한 컴퓨팅 자원 할당 기술
BR112019014589A2 (pt) Método de processamento de serviço e aparelho
CN109710406B (zh) 数据分配及其模型训练方法、装置、及计算集群
CN112513812A (zh) 使用区块链网络的任务完成
KR20210096619A (ko) 분산 컴퓨팅 및 스토리지에 대한 지능형 비중앙집중식 자율 마켓플레이스
CN109218383A (zh) 虚拟网络功能负载平衡器
ES2935141T3 (es) Sistema y método para la gestión y asignación de recursos en una red auto optimizada de nodos de procesamiento heterogéneos
Steffenel Improving the performance of fog computing through the use of data locality
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources
US9898614B1 (en) Implicit prioritization to rate-limit secondary index creation for an online table
Hsu et al. A proactive, cost-aware, optimized data replication strategy in geo-distributed cloud datastores
US20200183586A1 (en) Apparatus and method for maintaining data on block-based distributed data storage system
US20230029380A1 (en) System and method of multilateral computer resource reallocation and asset transaction migration and management
US11849342B2 (en) Global and local measures of centrality for signed and unsigned networks
Wang et al. Virtual network embedding with pre‐transformation and incentive convergence mechanism
US10761900B1 (en) System and method for secure distributed processing across networks of heterogeneous processing nodes
US10721181B1 (en) Network locality-based throttling for automated resource migration
US20170005866A1 (en) System and Method for Implementing an Ecosystem based on Policy Exchanges in a Network of Devices with Embedded Electronics
US20220188295A1 (en) Dynamic management of blockchain resources