ES2765415T3 - Aparato, método y programa de procesamiento de datos basado en microservicios - Google Patents

Aparato, método y programa de procesamiento de datos basado en microservicios Download PDF

Info

Publication number
ES2765415T3
ES2765415T3 ES17195348T ES17195348T ES2765415T3 ES 2765415 T3 ES2765415 T3 ES 2765415T3 ES 17195348 T ES17195348 T ES 17195348T ES 17195348 T ES17195348 T ES 17195348T ES 2765415 T3 ES2765415 T3 ES 2765415T3
Authority
ES
Spain
Prior art keywords
message
microservice
type
data
field
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
ES17195348T
Other languages
English (en)
Inventor
Lopez José Mora
Boris Villazon-Terrazas
Munoz Manuel Pena
Alejandro Llaves
La Torre Victor 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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of ES2765415T3 publication Critical patent/ES2765415T3/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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Un aparato de procesamiento de datos basado en microservicios, que comprende: un registro de tipos, que almacena una lista de tipos, siendo un tipo una expresion semantica de un concepto instanciado por datos en el aparato; una pluralidad de microservicios, cada microservicio comprende: una anotacion de un tipo de entrada de la lista almacenada de tipos y uno o mas tipos de salida de la lista almacenada de tipos; logica de procesamiento que, cuando se ejecuta, transforma los datos de entrada instanciando el concepto semanticamente expresado por el tipo de entrada en datos de salida instanciando el concepto semanticamente expresado por uno de los uno o mas tipos de salida; un mecanismo de mensajeria para ingresar datos, a traves de un mensaje, a un microservicio entre la pluralidad de microservicios, el mecanismo de mensajeria define un formato de mensaje de acuerdo con el cual estan estructurados los mensajes, el formato del mensaje incluye: un primer campo que especifica los datos que se estan ingresando; un segundo campo que especifica un tipo, de la lista almacenada de tipos, que expresa semanticamente el concepto instanciado por los datos del primer campo; y un tercer campo que especifica uno o mas tipos, de la lista almacenada de tipos, de datos de salida solicitados; cada microservicio comprende, ademas: un controlador, el controlador esta configurado para recibir un mensaje del mecanismo de mensajeria estructurado de acuerdo con el formato de mensajeria, y para responder ejecutando la logica de procesamiento del microservicio a condicion del tipo especificado por el segundo campo del mensaje recibido que coincide con el tipo de entrada de la anotacion del microservicio; en el que el mecanismo de mensajeria esta configurado para distribuir una salida de mensaje al mecanismo de mensajeria y estructurado de acuerdo con el formato del mensaje a cada microservicio para el cual uno de los uno o mas tipos de salida de la anotacion coincide con uno de los uno o mas tipos especificados por el tercer campo del mensaje; y en el que el controlador de cada microservicio esta configurado, con la condicion del tipo especificado por el segundo campo del mensaje recibido que no coincide con el tipo de entrada de la anotacion, para modificar el mensaje agregando el tipo de entrada de la anotacion del microservicio al tercer campo del mensaje y para enviar el mensaje modificado para su transmision a traves del mecanismo de mensajeria.

Description

DESCRIPCIÓN
Aparato, método y programa de procesamiento de datos basado en microservicios
La presente invención está en el campo del procesamiento de datos, y se refiere específicamente a arquitecturas de procesamiento de datos de microservicios.
Los microservicios son formas de dividir grandes operaciones de procesamiento de datos en módulos acoplados libremente. Los módulos individuales son responsables de tareas muy definidas y discretas y se comunican con otros módulos a través de interfaces de programa de aplicación (API) simples y de acceso universal.
A diferencia de más estructuras de diseño monolíticas, los microservicios (1) mejoran el aislamiento de fallas, (2) eliminan el compromiso a largo plazo con una sola pila de tecnología, y (3) hacen más fácil para un nuevo desarrollador comprender la funcionalidad de un servicio.
Sin embargo, la arquitectura microservicios tiene algunos inconvenientes:
- El desarrollo de sistemas distribuidos puede ser complejo;
- Múltiples bases de datos y gestión de transacciones es difícil;
- Probar una aplicación basada en microservicios puede ser engorroso;
- La implementación de microservicios puede ser compleja;
- Gestión laboriosa de la configuración;
- Mantener los servicios dependientes compatibles cuando se actualiza un solo servicio es difícil;
- Comunicación distribuida insegura.
En consecuencia, la creación de soluciones que superan algunos de estos inconvenientes mejorará la eficiencia y la conveniencia de un sistema basado en microservicio.
El documento EP1321854A2 divulga funciones de gestión en objetos en una red usando una sección de coincidencia de tipo de argumento que ejecuta un proceso de coincidencia entre un tipo de argumento de un mensaje recibido y tipos de argumento de funciones almacenadas en una tabla de tipo de argumento.
El documento US2014/0164539A1 divulga un agente de servicios de aplicaciones que incluye una pluralidad de módulos adaptadores, cada uno de los cuales está asociado con un servicio de aplicación respectivo. Los datos del servicio de aplicación se reciben de un primer servicio de aplicación y se convierten en un primer mensaje que tiene un formato de mensaje predefinido por un primer módulo adaptador asociado con el primer servicio de aplicación. El primer mensaje se envía desde el primer módulo adaptador a un segundo módulo adaptador asociado con un segundo servicio de aplicación. El primer mensaje se convierte en datos del servicio de aplicación para el segundo servicio de aplicación por el segundo módulo adaptador.
Las realizaciones de un aspecto de la presente invención incluyen un aparato de procesamiento de datos basado en microservicios, de acuerdo con la reivindicación 1.
La anotación de los microservicios por tipo dependiente, junto con un formato de mensajería que aprovecha los tipos dependientes para representar datos que están siendo transferidos por el mensaje, proporciona un sistema para la orquestación automatizada de microservicios que es rápido, fácil, y los resultados en un sistema interconectado en forma precisa de microservicios. Las realizaciones orquestan microservicios basados en tipos dependientes, trabajando como anotaciones de los microservicios. Estas anotaciones proporcionan información semántica suficiente para permitir la orquestación automática de microservicios, sin poner una carga demasiado alta en el diseñador de microservicios.
La lista almacenada de tipos proporciona un sencillo mecanismo de validación de implementar para las anotaciones microservicio.
Un microservicio es un servicio atómica en un aparato de procesamiento de datos. Atómico en este contexto significa responsabilidad única o función única. Un microservicio se distingue de un servicio web genérico por la dimensión del servicio. Por ejemplo, un servicio web genérico incluiría alguna forma de autenticación como parte de una funcionalidad más amplia. En un aparato basado en microservicios, la autenticación es un microservicio dedicado.
El aparato es, por ejemplo, un servidor de red o red de servidores de redes interconectadas. Tal servidor web o red de servidores web proporciona un servicio de procesamiento de datos a clientes/usuarios a través de Internet.
Un tipo es una expresión semántica de un concepto instanciado por los datos en el aparato. Un tipo también puede denominarse tipo de datos. El tipo especificado en la anotación de un microservicio, y el tipo especificado en mensajes estructurados de acuerdo con el formato de mensajes, son tipos dependientes. Un tipo dependiente es un tipo de datos que establece algunas restricciones en los valores que puede representar. La dependencia es la restricción de que el tipo sea de la lista de tipos almacenados.
La lista de tipos de almacenado es un modelo semántico de los datos en el aparato. La entrada de datos al aparato (como una solicitud de procesamiento de datos), la salida de datos por el aparato (en respuesta a la solicitud de procesamiento de datos) y los datos intermedios (es decir, intermedios entre los datos de entrada y los datos de salida), instancian conceptos expresados en el modelo semántico. Una expresión semántica es una o más palabras cuya semántica representa un concepto. Los datos crean una instancia de un concepto al representar un valor o rango de valores entre aquellos valores por los cuales el concepto es representable.
El microservicio puede ser un procesador (CPU) para ejecutar la lógica de procesamiento y una memoria para almacenar la lógica de procesamiento, y para el almacenamiento de datos que se procesan. El controlador también puede realizarse procesando la lógica almacenada en la memoria y ejecutada por el procesador.
El formato de mensajería también incluye: un tercer campo que especifica uno o más tipos, de la lista almacenada de tipos, de los datos de salida deseado; en el que el mecanismo de mensajería está configurado para distribuir una salida de mensaje al mecanismo de mensajería y estructurado de acuerdo con el formato del mensaje a cada microservicio para el cual uno de los uno o más tipos de salida de la anotación coincide con uno de los uno o más tipos especificados por el tercer campo del mensaje; y en el que el controlador de cada microservicio está configurado, con la condición del tipo especificado por el segundo campo del mensaje recibido que no coincide con el tipo de entrada de la anotación, para modificar el mensaje agregando el tipo de entrada de la anotación del microservicio a el tercer campo del mensaje y generar el mensaje modificado para su transmisión a través del mecanismo de mensajería.
El mecanismo de mensajería es, por ejemplo, una conexión de bus entre la pluralidad de microservicios a la que se transmiten los mensajes, y que implementa reglas almacenadas para la distribución de los mensajes transmitidos al mecanismo de mensajería entre los microservicios. Es decir, en virtud del sistema de anotaciones (apalancado por los controladores de microservicios) y el formato del mensaje, los mensajes no necesitan dirigirse a un microservicio particular para realizar un procesamiento en cadena por microservicios plurales.
Ventajosamente, la orquestación de microservicios (es decir, activación de microservicios plurales en un orden particular con el fin de cumplir una solicitud de procesamiento de datos) de una manera automatizada está habilitada por el sistema de formato de mensaje, mecanismo de mensajería, y anotaciones. El mensaje (que puede considerarse como una manifestación de una solicitud de procesamiento de datos) se distribuye primero a microservicios que pueden proporcionar la salida solicitada. Entonces, si esos microservicios requieren una entrada diferente a la entrada especificada en el mensaje, se genera un nuevo mensaje (es decir, solicitud de procesamiento de datos) solicitando la entrada requerida. El procedimiento itera hacia atrás hasta que un microservicio puede proporcionar (como lo indica su anotación) una salida especificada por un mensaje con la entrada especificada por el mensaje. Conceptualmente, en una cadena de microservicios necesarios para proporcionar un servicio de procesamiento de datos, los mensajes se propagan de principio a fin y el procesamiento se produce de principio a fin.
Por ejemplo, el tercer campo es una pila. En otras palabras, un orden en el que se agregan tipos al tercer campo se conserva en el tercer campo del mensaje. En tales realizaciones, el mecanismo de mensajería está configurado para distribuir una salida de mensaje al mecanismo de mensajería y estructurado de acuerdo con el formato del mensaje a cada microservicio para el que uno o más tipos de salida de la anotación coinciden con el tipo de salida agregado más recientemente a la pila del tercer campo (es decir, el tipo de salida en la posición de la pila “superior” o la posición de la pila que se haya agregado más recientemente).
En particular, el tercer campo puede especificar tipos como una orden en una pila, y el mecanismo de mensajería está configurado para distribuir una salida del mensaje al mecanismo de mensajería y estructurado de acuerdo con el formato de mensaje para cada microservicio para el que el uno o más de los tipos de salida de la anotación coinciden con el tipo de salida agregado más recientemente a la pila del tercer campo.
Ventajosamente, la pila del tercer campo define un orden en el que las etapas de procesamiento se han de realizar (por referencia a los tipos de salida). Una pila es una lista ordenada, en la que los elementos de la lista se ordenan de acuerdo con la cronología de inserción en la lista.
Opcionalmente, el controlador de cada microservicio está configurado, tras la ejecución de la lógica de procesamiento del microservicio, para emitir los datos de salida.
Los datos de salida es generado por el microservicio la ejecución de la lógica de procesamiento. El tipo de datos de los datos de salida puede ser fijo, es decir, se trata de un solo tipo de datos de salida por el microservicio, o el tipo de datos de los datos de salida puede ser variable, es decir, hay más de un tipo de datos que puede ser emitido por el microservicio. La anotación del microservicio especifica un solo tipo de datos de salida para el tipo de datos de salida fijo, y más de un tipo de datos de salida para el tipo de datos de salida variable.
Adicionalmente, puede ser que los datos de salida se generen, con el mecanismo de mensajería, como un nuevo mensaje generado por el controlador del microservicio y estructurado de acuerdo con el formato de mensajería. El nuevo mensaje incluye: especificación de los datos de salida como primer campo; un tipo de datos de salida generados por la ejecución de la lógica de procesamiento como el segundo campo; el tercer campo del mensaje recibido en respuesta al cual se ejecutó la lógica de procesamiento para generar los datos de salida, del cual se ha eliminado el tipo de datos de salida generados por la ejecución de la lógica de procesamiento, como el tercer campo.
Ventajosamente, una vez que el procesamiento de los datos se inicia por un microservicio, el protocolo de mensajería de salida particular se ha definido anteriormente, contribuye a la orquestación automatizado de microservicios, mediante la presentación de los datos de salida en un formato en el que se puede distribuir a microservicios capaz de generar el tipo de salida requerido, y en el que se puede determinar el tipo de datos que se ingresarán al siguiente microservicio (es decir, la salida del microservicio cuya lógica de procesamiento se acaba de ejecutar).
El nuevo mensaje puede estar relacionado con el mensaje original (el mensaje cuya recepción desencadenado la ejecución de la lógica de procesamiento), por ejemplo, por un identificador común.
Los mensajes pueden especificar datos definiendo expresamente un valor de datos o una tupla de valores de datos. Alternativamente, los datos pueden especificarse mediante una referencia o enlace a una ubicación de almacenamiento u otra forma de dirección desde la cual se pueda acceder a los datos. En particular, los mensajes estructurados de acuerdo con el formato de mensajes expresan el primer campo como un URI (indicador uniforme de recursos) o URL (localizador uniforme de recursos) desde el cual se puede acceder a los datos que se ingresan.
Ventajosamente, el intercambio de los localizadores de los datos, en lugar de datos en sí, reduce el tráfico en el mecanismo de mensajería (en términos de cantidad de datos que se transfieren). Por lo tanto, se facilita el mecanismo de mensajería y la estructura de las realizaciones, que usan mensajes como un medio para automatizar la orquestación de microservicios.
El aparato proporciona un sistema de microservicios conectables que están anotados en una manera que permite la orquestación automatizado de pluralidad microservicios para proporcionar un servicio de procesamiento de datos requeridos. Las realizaciones también proporcionan un medio (interfaz) para recibir solicitudes de procesamiento de datos y generar resultados.
El aparato puede comprender además una interfaz de petición, configurado para recibir una solicitud de procesamiento de datos, y para extraer a partir de la solicitud de procesamiento de datos: un primer parámetro de la petición, el primer parámetro de petición de especificación de datos de entrada; un segundo parámetro de solicitud, el segundo parámetro de solicitud que expresa semánticamente un concepto instanciado por los datos de entrada especificados del primer parámetro de solicitud; y un tercer parámetro de solicitud, el tercer parámetro de solicitud que expresa semánticamente uno o más conceptos a ser instanciados por datos de salida que responden a la solicitud de procesamiento de datos recibida; la interfaz de solicitud está configurada para generar un mensaje estructurado de acuerdo con el formato del mensaje y para enviar el mensaje generado al mecanismo de mensajería, el mensaje generado comprende: el primer parámetro de solicitud como el primer campo; el segundo parámetro de solicitud como el segundo campo; y el tercer parámetro de solicitud como el tercer campo.
La solicitud puede ser configurada para que las peticiones están limitados a la inclusión de los tipos de la lista almacenada de tipos como el segundo y terceros parámetros de la petición. La interfaz de solicitud puede ser, por ejemplo, una interfaz de programación de aplicaciones (API) o una interfaz gráfica de usuario. La interfaz de solicitud genera un mensaje estructurado de acuerdo con el formato del mensaje y que contiene datos extraídos de la solicitud recibida. Por supuesto, la interfaz de solicitud puede configurarse de modo que el formato de las solicitudes recibidas sea el mismo o cercano al formato del mensaje, de modo que se requiera un procesamiento mínimo para generar el mensaje, que se distribuye a través del mecanismo de mensajería. En otras palabras, la interfaz de solicitud puede simplemente enrutar solicitudes externas, que ya acceden al formato del mensaje, al mecanismo de mensajería, opcionalmente agregando una ID de solicitud como un cuarto campo.
Como procedimiento para el seguimiento de los trabajos/tareas en el aparato, la interfaz de petición pueden estar configurados para asignar un ID de referencia a los datos recibidos de procesamiento de solicitudes; el formato del mensaje incluye un cuarto campo que identifica una solicitud de procesamiento de datos en asociación con la cual se genera el mensaje; y el receptor de solicitud está configurado para incluir en el mensaje generado la ID de referencia asignada como el cuarto campo; en el que, el controlador de cada microservicio está configurado para incluir en el nuevo mensaje generado tras la ejecución de la lógica de procesamiento del microservicio, como el cuarto campo, una copia del cuarto campo del mensaje recibido en respuesta a la cual se realizó dicha ejecución de la lógica de procesamiento.
Se observa que el controlador de cada microservicio está configurado para dejar el cuarto campo sin cambios en la modificación del mensaje.
La asignación de un ID de referencia que identifica solicitudes recibidas de otras (es decir, una solicitud de identificador único) proporciona un medio para mensajes de enlace generados en relación con los mismos datos de procesamiento de la solicitud. Por ejemplo, la presencia en el sistema de datos que satisfacen la solicitud de procesamiento de datos se puede detectar y generar en virtud de mensajes que identifiquen la solicitud de procesamiento de datos en relación con la cual se generan.
Las realizaciones de otro aspecto de la invención incluyen un método de procesamiento de datos basado en microservicios, de acuerdo con la reivindicación 12.
Las realizaciones de otro aspecto incluyen un programa informático de acuerdo con la reivindicación 13.
Las características preferidas de la presente invención se describirá ahora, puramente a modo de ejemplo, con referencia a los dibujos adjuntos, en los que:
La figura 1 es una ilustración esquemática de un aparato;
La figura 2 es una ilustración esquemática de microservicios;
La figura 3 ilustra un flujo de control en un microservicio; y
La figura 4 ilustra una configuración de hardware de una realización.
La figura 1 es una ilustración esquemática de un aparato 10 de procesamiento de datos basado en microservicio. El aparato 10 comprende un registro 12 de tipo, un mecanismo 16 de mensajería y una pluralidad de microservicios 14. Cada microservicio 14 comprende un controlador 141, una anotación 142, y la lógica 143 de procesamiento. Los microservicios 14 pueden intercambiar datos mediante la transmisión de mensajes a través del mecanismo 16 de mensajería, indicado por las interconexiones entre los microservicios 14 y el mecanismo 16 de mensajería. Las anotaciones 142 de los microservicios 14 están limitadas por el contenido del registro 12 de tipo, indicado por la interconexión entre el microservicio 14 y el registro 12 de tipo.
El tipo 12 de registro almacena una lista de tipos. Un tipo es una expresión semántica de un concepto instanciado por datos en el aparato. Los datos en el aparato significan datos que forman la entrada o salida de un microservicio 14 entre la pluralidad de microservicios. En otras palabras, los datos procesados por la pluralidad de microservicios. Una expresión semántica es una palabra o frase que representa un concepto. Los datos crean una instancia de un concepto al ser o representar una instancia del concepto. Por ejemplo, los datos pueden ser un valor o rango o valores que definen una propiedad (el concepto). Cada vez que se agrega un nuevo microservicio a la pluralidad de microservicios, el nuevo microservicio especifica los tipos existentes de la lista almacenada de tipos 12 como la anotación de los datos de entrada y salida, o los tipos que expresan semánticamente los datos de entrada y salida en La anotación del nuevo microservicio se agrega a la lista almacenada de tipos.
El tipo 12 de registro puede ser proporcionada por una unidad de almacenamiento de datos, y además de la capacidad de almacenamiento de datos puede también incluir una función de gestión a través de la cual el contenido de la lista almacenada de tipos se puede consultar.
El aparato 10 comprende una pluralidad de microservicios 14. Los microservicios 14 son un tipo específico de arquitectura de procesamiento de datos modular. Cada microservicio 14 es un servicio de función/responsabilidad individual. Los microservicios 14 pueden orquestarse para ejecutarse en un orden particular, la salida de uno formando la entrada de otro, para realizar un compuesto de las funciones/responsabilidades individuales.
La lógica 143 de procesamiento es el elemento de procesamiento de datos del microservicio 14. El componente 143 de lógica de procesamiento también puede comprender un procesador en el que se ejecuta la lógica.
La anotación 142 publica a otros microservicios 14 (vía el mecanismo 16 de mensajería) la función única proporcionada por el microservicio 14, expresado en términos semánticos que representan un tipo de los datos de entrada a la lógica 143 de procesamiento, y uno o más tipos de datos de salida generados por la lógica 143 de procesamiento en respuesta a la recepción de dichos datos de entrada. Las expresiones semánticas incluidas en la anotación 142 están limitadas por la pertenencia a la lista almacenada por el registro 12 de tipo.
El controlador 141 utiliza la anotación 142 para determinar cómo responder a los datos entrantes. Los datos se reciben en el microservicio 14 a través del mecanismo 16 de mensajería. Los mensajes recibidos a través del mecanismo 16 de mensajería son efectivamente solicitudes de un servicio de procesamiento de datos para generar datos del tipo especificado por el mensaje.
El controlador 141, al recibir un mensaje que especifica un tipo (de la lista almacenada de tipos) de datos de salida que coincide con el tipo de datos de salida especificada por la anotación 142 del microservicio 14, comprueba si un tipo especificado de los datos disponibles para el procesamiento (es decir, los datos que el mensaje solicita que se procesen) coinciden con el tipo de datos de entrada especificados por la anotación 142. Si es así, el controlador 141 activa el microservicio 14 para ejecutar la lógica 143 de procesamiento (por ejemplo, en una CPU). De lo contrario, el controlador 141 genera un mensaje modificado para la salida al mecanismo 16 de mensajería, solicitando que un microservicio genere (como salida) datos del tipo de entrada especificado por la anotación 142, utilizando (como entrada) los datos disponibles para el procesamiento especificado por el mensaje recibido.
El mecanismo 16 de mensajería es, por ejemplo, un bus de servicio. El mecanismo 16 de mensajería especifica un formato de mensaje de acuerdo con el cual los mensajes están estructurados. Los microservicios 14 no se dirigen mensajes entre sí, es decir, en el diseño de un microservicio no es necesario tener conocimiento de otros microservicios. Los microservicios 14 (a través del controlador 141) generan mensajes estructurados de acuerdo con el formato del mensaje al mecanismo 16 de mensajería. El mecanismo 16 de mensajería distribuye mensajes. El mecanismo de distribución puede conceptualizarse como un sistema basado en suscripción. Cada mensaje especifica uno o más tipos (de la lista almacenada de tipos) de datos que se solicita que se generen (generen). Cada microservicio 14 se anota con uno o más tipos de datos de salida que genera el microservicio respectivo. Los tipos de salida de las anotaciones 142 sirven efectivamente como suscripciones: cada microservicio 14 recibe mensajes para los cuales uno de los uno o más tipos de salida especificados coincide con uno de los uno o más tipos de salida de la anotación 142 del microservicio 14.
La figura 2 ilustra una pluralidad de microservicios 14 interconectados en una realización. Cada microservicio 14 comprende:
- lógica 141 de control, a modo de ejemplo del controlador mencionado en otra parte de este documento;
- anotaciones 142, a modo de ejemplo de la anotación mencionada en otra parte de este documento;
- microservicio 143, a modo de ejemplo de la lógica de procesamiento mencionada en otra parte de este documento.
El bus 16 de servicio es ejemplar del mecanismo de mensajería mencionado en este documento en otros lugares.
El microservicio 143 es un procesador de datos, es decir, hardware que ejecuta instrucciones o lógica de procesamiento para realizar una función particular programado. El microservicio 143 se amplía con los elementos adicionales: anotaciones 142 y lógica 141 de control.
El bus 16 de servicio es un mecanismo de mensajería a los mensajes que se emiten por los microservicios 14 para la distribución. Los microservicios 14 solo necesitan configurarse para comunicarse con el bus de servicio 16, en lugar de con otros microservicios 14. De esta manera, no es necesario volver a configurar cada microservicio 14 después de la adición/eliminación de microservicios 14 del aparato.
La lógica 141 de control contiene las operaciones comunes en todos los microservicios 14 en el aparato. Los mensajes del bus 16 de servicio son recibidos por la lógica 141 de control y procesados.
La figura 3 expone un flujo de procesamiento ejemplar llevado a cabo por la lógica 141 de control.
La lógica 141 de control es una operación común a través de todos los microservicios 14. La lógica 141 de control determina cómo se procesa un mensaje recibido por el microservicio 14 del bus de servicio 16. El resultado de la lógica en una ejecución particular depende del contenido del mensaje que se procesa y de la anotación 142 del microservicio 14.
Las anotaciones 142 definen un número de tipos que encapsulan la semántica de las entradas y salidas de los respectivos microservicio. Por ejemplo, muchas entidades serán representadas en el aparato por objetos de cadena. Sin embargo, los tipos definidos por las anotaciones 142 no son una referencia a un tipo en términos de la forma de los datos (como cadena/número/tupla), sino que son de hecho una expresión semántica de un concepto instanciado por datos en el aparato. Por ejemplo, los tipos pueden incluir: “nombre del título”, “nombre de la persona”, “dirección”, “nombre”, “ubicación”, “hora”. La anotación 142 de un microservicio 14 incluye al menos un tipo de entrada, que define un tipo (de la lista almacenada de tipos) de datos en los que el microservicio 143 es operable, y uno o más tipos de salida, que definen un tipo (de la lista almacenada) de tipos) de datos producidos por la ejecución del microservicio 143.
El bus 16 de servicio distribuye mensajes de acuerdo con el tipo que define los datos de salida de un microservicio 14. Cada mensaje incluye un campo (tercer campo) que define un tipo de datos de salida solicitado por el mensaje (que un mensaje sea efectivamente una solicitud de procesamiento). Opcionalmente, el bus 16 de servicio distribuye cada mensaje a cada microservicio 14, y la lógica 141 de control del microservicio 14 respectivo, al recibir el mensaje en el paso S301, determina en S302 si el microservicio 14 respectivo puede o no generar el tipo de datos de salida buscado por el mensaje, en función del tipo de datos de salida definidos en la anotación 142. Por ejemplo, el tercer campo puede ser una pila de tipos de salida (una pila es una bolsa o lista o contenedor que conserva un orden en el que se agregan los tipos), con la lógica de control del microservicio 14 respectivo, al recibir el mensaje en el paso S301, determinar en el paso S302 si el microservicio 14 respectivo puede o no generar el tipo de datos de salida definidos por el tipo en la posición dentro de la pila que se denota más agregada recientemente, basado en el tipo de datos de salida definidos en la anotación 142. Como implementación alternativa, puede ser que un servicio de suscripción operado por el bus 16 de servicio solo distribuya un mensaje a microservicios 14 para el cual las anotaciones 142 indican que un tipo de salida producido por el microservicio 14 respectivo coincide con el tipo de datos de salida buscados por el mensaje, siendo indicado el tipo de datos de salida buscado por el mensaje por el tipo agregado más recientemente a la pila, como lo indica la posición dentro de la pila. Por ejemplo, cada tipo almacenado en una lista almacenada de tipos (no ilustrados) tiene un tema correspondiente. Microservicios 14 que producen datos de salida del tipo correspondiente al tema “suscribirse” al tema y, por lo tanto, reciben mensajes que especifican un tipo de salida que corresponde al tema suscrito al tema.
Los mensajes especifican datos que se procesarán (en un primer campo), por ejemplo, mediante una URL u otra referencia a los datos. Los mensajes especifican (en un segundo campo) un tipo de datos especificados por el primer campo, el tipo especificado es de la lista de tipos almacenados. Los mensajes especifican (en un tercer campo) uno o más tipos (de la lista almacenada de tipos) de datos buscados como salida, en un orden definido por una pila. Los mensajes también pueden incluir un cuarto campo que identifica una interacción con el aparato 10 o sistema que contiene los microservicios 14, es decir, que identifica una solicitud de procesamiento específica hecha del aparato 10 o sistema.
Si uno de los uno o más tipos de salida especificados por la anotación 142 del microservicio 14 no coincide con el tipo de salida en la posición de pila que denota el agregado más reciente, entonces el resultado de la lógica 141 de control no está en el paso S302, y no se produce más procesamiento en el microservicio 14 en relación con el mensaje recibido. Si uno de los uno o más tipos de salida especificados por la anotación 142 del microservicio 14 coincide con los tipos de salida especificados por la posición de la pila del tercer campo del mensaje que denota el agregado más reciente, entonces el resultado de la lógica 141 de control es sí en el paso S302, y el procesamiento pasa al paso S303.
Efectivamente, S303 determina si el microservicio 14 puede procesar los datos especificados por el (primer campo del) mensaje, o si el procesamiento adicional es que ser solicitado. El procesamiento adicional organiza la ejecución de otros microservicios para generar datos de un tipo que puede ser procesado por el microservicio 14 en cuestión. En el paso S303, un tipo de entrada especificado por el mensaje se compara con uno o más tipos de entrada especificados por la anotación 142 del microservicio 14. Si hay una coincidencia, el microservicio 14 puede procesar los datos especificados por el mensaje para generar datos de salida de un tipo especificado por el mensaje (en la posición de la pila del tercer campo que indica la adición más reciente), de modo que el flujo continúa al paso S304 y se procesa el mensaje. Si no hay coincidencia, entonces el microservicio 14 no puede procesar los datos especificados por el mensaje, y se genera un mensaje modificado en el paso S305.
En la etapa S304, la microservicio 14 accede a los datos especificados por el mensaje, ejecuta su función de procesamiento, y genera un nuevo mensaje que contiene la salida. El nuevo mensaje hereda el tipo de salida (tercer campo) y la ID de interacción (cuarto campo) del mensaje recibido. El tipo de salida heredado se modifica mediante la eliminación de la pila del tipo de salida generado por la función de procesamiento ejecutada. El primer campo del nuevo mensaje especifica los datos generados por el procesamiento del paso S304, y el segundo campo especifica un tipo de dichos datos. En el paso S306, el nuevo mensaje se envía al bus de servicio 16.
En el paso S305, el mensaje recibido se modifica y recircula a través del bus de servicio, con el fin de encontrar un microservicio que puede proporcionar el tipo requerido de entrada. Se puede apreciar que el procedimiento es iterativo, por lo que una cadena de microservicios se puede organizar de esta manera. El mensaje modificado es el mismo que el mensaje recibido, con la excepción del tercer campo, que especifica el tipo de salida buscado por el mensaje. El tipo de entrada especificado por la anotación 142 del microservicio 14 se agrega a la pila del tercer campo, y ocupa la posición de la pila que indica la adición más reciente, de modo que el nuevo mensaje busca un microservicio para generar una salida de un tipo que pueda servir como entrada (y también especifica uno o más tipos de salida buscados previamente en un orden definido por la pila). En el paso S307, el mensaje modificado se envía al bus de servicio 16.
Un trabajó ejemplo está ahora detallada. Un microservicio 14 tiene una anotación 142 que incluye la siguiente información: IncomingMeetingAgreement ^ Meeting - Confirmation, en la que “IncomingMeetingAgreement” es el tipo de entrada especificado y “MeetingConfirmation” es el tipo de salida especificado. En otras palabras, el microservicio 14 almacena la lógica de procesamiento para transformar datos instanciando un concepto expresado semánticamente como “Incoming - MeetingAgreement” en datos instanciando un concepto expresado semánticamente como “MeetingConfirmation”.
El microservicio 14 recibe el mensaje siguiente: (Msg 476 val: “Bowman” Nombre (MeetingConfirmation/Notificación)). El primer campo es “Bowman”, que es un valor a procesar. El segundo campo es “Nombre”, que es la expresión semántica del concepto instanciado por “Bowman” (es decir, el tipo de valor a procesar). El tercer campo es “MeetingConfirmation/Notificación”, que son los tipos solicitados de salida de microservicio solicitados. Además, en este ejemplo particular, “Msg” indica que los valores corresponden a un mensaje. Un cuarto campo, “476” es la ID de la solicitud de procesamiento realizada al aparato que da origen al mensaje.
El microservicio 14 puede producir un “Meeting-Confirmation”, por lo tanto, recibe el mensaje y/o respuestas “Sí” en la etapa S302 de la lógica 141 de control. Sin embargo, el microservicio 14 procesa “IncomingMeetingAgreement”, que no coincide con “Nombre”. Por lo tanto, la respuesta en el paso S303 es “No”, y se genera un mensaje modificado en el paso S305.
El nuevo mensaje busca otro microservicio 14 para generar datos de instancias de un concepto expresado por semánticamente “IncomingMeetingAgreement”. El mensaje modificado es el siguiente:
(Mensaje 476 val: Nombre “Bowman” (IncomingMeetingAgreement/MeetingConfirmation/Notificación))
Se puede observar que, en relación con el mensaje original, la entrada requerida por el microservicio 14 ha sido añadido a la tercera campo. De esta manera, se forma una pila de tipos en el tercer campo. Los tipos se eliminan del tercer campo a medida que se realiza el procesamiento y se agregan al tercer campo a medida que se solicita el procesamiento.
Otro microservicio recibe el mensaje. El otro microservicio se anota con “Incoming- MeetingAgreement” como tipo de salida y “Nombre” como tipo de entrada, y por lo tanto la lógica de procesamiento del otro microservicio se ejecuta en los datos especificados por el valor “Bowman” del tipo “Nombre”. Los datos de salida crean instancias de un concepto semánticamente expresado por “IncomingMeetingAgreement” y especificado por una referencia.
El otro microservicio genera un nuevo mensaje como sigue:
(Mensaje 476 ref.: “4004” IncomingMeetingAgreement (MeetingConfirmation/Notificación))
Donde: Msg indica que los valores corresponden a un mensaje; 476 es el id de la interacción con el sistema (cuarto campo); Ref.: “4004” es una referencia a la ubicación del valor descrito por el mensaje (primer campo); “IncomingMeetingAgreement” es el tipo del valor (segundo campo); y “MeetingConfirmation/Notificación” es la pila de tipos de salida solicitados, observando que “IncomingMeetingAgreement”, que ahora se ha emitido con éxito, se elimina del tercer campo.
El microservicio 14 que recibió el mensaje primero recibe el ejemplo trabajado recibe el mensaje, y de acuerdo con su anotación 142, puede producir una “Meeting-Confirmation”, que coincide con el tercer campo del mensaje recién recibido. Además, como lo indica el tipo de entrada de la anotación, el microservicio 14 puede procesar un “IncomingMeetingAgreement”, como se especifica en el segundo campo del mensaje. Por lo tanto, la lógica 143 de procesamiento se ejecuta en el “IncomingMeetingAgreement” especificado por el primer campo.
Se emite un “MeetingConfirmation” (o datos que instancian un concepto semánticamente expresado por “MeetingConfirmation”) y se genera un nuevo mensaje. El nuevo mensaje es el siguiente:
(Msg 476 ref.: “1989” MeetingConfirmation (Notificación))
En el nuevo mensaje, 476 es la identificación de la interacción con el sistema (cuarto campo); Ref.: “1989” es una referencia a la ubicación del valor descrito por el mensaje (primer campo); “MeetingConfirmation” es el tipo del valor (segundo campo); y “Notificación” es la pila de tipos de salida solicitados, observando que “MeetingConfirmation”, que ahora se ha enviado con éxito, se elimina del tercer campo.
Un microservicio adicional anotado con “Notificación” como tipo de salida y “MeetingConfirmation” como tipo de entrada genera y genera una notificación. El procesamiento de la solicitud se completa (lo cual es detectable por el microservicio adicional al eliminar el único tipo restante del tercer campo). Dependiendo de la implementación, un microservicio adicional puede enviar un mensaje, por ejemplo, con un tercer campo nulo. El tercer campo nulo evitaría que el mensaje se distribuya a cualquier microservicio, pero puede indicar, por ejemplo, a un registro de servicio u otra entidad, que el procesamiento de una solicitud está completo. Opcionalmente, el microservicio no emite ningún mensaje que complete el procesamiento, ya que la solicitud se ha satisfecho y no hay procesamiento adicional.
La figura 4 ilustra una configuración de hardware de una realización. La Figura 4 es un diagrama de bloques de un dispositivo informático, tal como un servidor de red, que incorpora la presente invención, y que puede usarse para implementar un método de una realización. El dispositivo informático comprende un procesador 993 y una memoria 994. Opcionalmente, el dispositivo informático también incluye una interfaz 997 de red para la comunicación con otros dispositivos informáticos, por ejemplo, con otros dispositivos informáticos de realizaciones de la invención.
Por ejemplo, una realización puede estar compuesta de una red de dichos dispositivos informáticos. Opcionalmente, el dispositivo informático también incluye uno o más mecanismos de entrada, como el teclado y el mouse 996, y una unidad de visualización como uno o más monitores 995. Los componentes se pueden conectar entre sí a través de un bus 992.
La memoria 994 puede incluir un medio legible por ordenador, cuyo término puede referirse a un medio único o múltiples medios (por ejemplo, una base de datos centralizada o distribuida y/o cachés y servidores asociados) configurados para llevar instrucciones ejecutables por ordenador o tener datos estructuras almacenadas en el mismo. Las instrucciones ejecutables por ordenador pueden incluir, por ejemplo, instrucciones y datos accesibles por de propósito general, ordenador de propósito especial o dispositivo de procesamiento de propósito especial (por ejemplo, uno o más procesadores) para realizar una o más funciones u operaciones. Por lo tanto, el término “medio de almacenamiento legible por ordenador” también puede incluir cualquier medio que sea capaz de almacenar, codificar o transportar un conjunto de instrucciones para la ejecución de la máquina y que haga que la máquina realice uno o más de los métodos de presente divulgación. En consecuencia, el término “medio de almacenamiento legible por ordenador” puede considerarse que incluye, pero no se limita a, memorias de estado sólido, medios ópticos y medios magnéticos. A modo de ejemplo, y sin limitación, dichos medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador no transitorios, que incluyen Memoria de acceso aleatorio (RAM), Memoria de solo lectura (ROM), Memoria de solo lectura programable y borrable eléctricamente (EEPROM) ), Memoria de solo lectura de disco compacto (CD-ROM) u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, dispositivos de memoria flash (por ejemplo, dispositivos de memoria de estado sólido).
El procesador 993 está configurado para controlar el dispositivo informático y ejecutar operaciones de procesamiento, por ejemplo, ejecutar código almacenado en la memoria para implementar las diversas funciones diferentes de microservicios descritos aquí y en las reivindicaciones. La memoria 994 almacena datos que son leídos y escritos por el procesador 993. Como se menciona aquí, un procesador puede incluir uno o más dispositivos de procesamiento de propósito general tales como un microprocesador, unidad de procesamiento central o similares. El procesador puede incluir un microprocesador de computación de conjunto de instrucciones (CISC) complejo, microprocesador de computación de conjunto de instrucciones reducido (RISC), microprocesador de palabra de instrucción muy larga (VLIW) o un procesador que implementa otros conjuntos de instrucciones o procesadores que implementan una combinación de conjuntos de instrucciones. El procesador también puede incluir uno o más dispositivos de procesamiento de propósito especial, tales como un circuito integrado de aplicación específica (ASIC), una matriz de puertas programables en campo (FPGA), un procesador de señal digital (DSP), procesador de red o similares. En una o más realizaciones, un procesador está configurado para ejecutar instrucciones para realizar las operaciones y los pasos discutidos aquí.
La unidad de visualización 997 puede mostrar una representación de datos almacenados por el dispositivo informático y también puede mostrar un cursor y cuadros de diálogo y pantallas que permiten la interacción entre un usuario y los programas y datos almacenados en el dispositivo informático. Los mecanismos de entrada 996 pueden permitir que un usuario ingrese datos e instrucciones al dispositivo informático.
La interfaz de red (red I/F) 997 puede estar conectada a una red, como Internet, y puede conectarse a otros dispositivos informáticos de este tipo a través de la red. La red I/F 997 puede controlar la entrada/salida de datos desde/hacia otro aparato a través de la red. Se pueden incluir otros dispositivos periféricos como micrófono, altavoces, impresora, fuente de alimentación, ventilador, carcasa, escáner, bola de seguimiento, etc. en el dispositivo informático.
El aparato 10 de procesamiento de datos basado en microservicio de las Figuras 1 a 3 puede ser un procesador 993 (o una pluralidad de los mismos) que ejecuta instrucciones de procesamiento (un programa) almacenadas en una memoria 994 e intercambia datos a través de una red I/F 997. En particular, el procesador 993 ejecuta instrucciones de procesamiento para recibir, a través de la red I/F, una solicitud de procesamiento de datos desde un dispositivo externo y ejecutar el procesamiento de acuerdo con la solicitud, a través de los microservicios. Además, el procesador 993 puede ejecutar instrucciones de procesamiento para almacenar microservicios 14 en una unidad de almacenamiento conectada y/o transmitir, a través de la red I/F 997, mensajes hacia y desde microservicios, a través del mecanismo 16 de mensajería, para el procesamiento.
El microservicio 14 de las Figuras 1 a 3 puede ser un procesador 993 (o una pluralidad de los mismos) que ejecuta instrucciones de procesamiento (un programa) almacenadas en una memoria 994 e intercambia datos a través de una red I/F 997, en el que la red I/F implementa la funcionalidad del mecanismo 16 de mensajería. En particular, el procesador 993 ejecuta instrucciones de procesamiento para recibir, a través de la red I/F, mensajes estructurados de acuerdo con el formato del mensaje desde una interfaz de solicitud u otros microservicios, y procesa el mensaje recibido a través del controlador 141 y lógica 143 de procesamiento. Además, el procesador 993 puede ejecutar instrucciones de procesamiento para almacenar datos de salida generados por la lógica 143 de procesamiento en una unidad de almacenamiento conectada y/o para transmitir, a través de la red I/F, datos de salida y/o un nuevo o mensaje modificado al mecanismo de mensajería para distribución a otros microservicios.
Los métodos que incorporan la presente invención pueden llevarse a cabo en un dispositivo informático como el ilustrado en la Figura 4. Dicho dispositivo informático no necesita tener todos los componentes ilustrados en la Figura 4, y puede estar compuesto por un subconjunto de esos componentes. Un método que incorpora la presente invención puede llevarse a cabo mediante un único dispositivo informático en comunicación con uno o más servidores de almacenamiento de datos a través de una red. El dispositivo informático puede ser un almacenamiento de datos en sí mismo que almacena los microservicios 14 y sus respectivos datos de salida.
Un método que incorpora la presente invención puede llevarse a cabo mediante una pluralidad de dispositivos informáticos que funcionan en cooperación entre sí. Uno o más de la pluralidad de dispositivos informáticos puede ser un servidor de almacenamiento de datos que almacena al menos una parte de los microservicios 14 y sus respectivos datos de salida.

Claims (13)

REIVINDICACIONES
1. Un aparato de procesamiento de datos basado en microservicios, que comprende:
un registro de tipos, que almacena una lista de tipos, siendo un tipo una expresión semántica de un concepto instanciado por datos en el aparato;
una pluralidad de microservicios, cada microservicio comprende:
una anotación de un tipo de entrada de la lista almacenada de tipos y uno o más tipos de salida de la lista almacenada de tipos;
lógica de procesamiento que, cuando se ejecuta, transforma los datos de entrada instanciando el concepto semánticamente expresado por el tipo de entrada en datos de salida instanciando el concepto semánticamente expresado por uno de los uno o más tipos de salida;
un mecanismo de mensajería para ingresar datos, a través de un mensaje, a un microservicio entre la pluralidad de microservicios, el mecanismo de mensajería define un formato de mensaje de acuerdo con el cual están estructurados los mensajes, el formato del mensaje incluye:
un primer campo que especifica los datos que se están ingresando;
un segundo campo que especifica un tipo, de la lista almacenada de tipos, que expresa semánticamente el concepto instanciado por los datos del primer campo;
y un tercer campo que especifica uno o más tipos, de la lista almacenada de tipos, de datos de salida solicitados; cada microservicio comprende, además:
un controlador, el controlador está configurado para recibir un mensaje del mecanismo de mensajería estructurado de acuerdo con el formato de mensajería, y para responder ejecutando la lógica de procesamiento del microservicio a condición del tipo especificado por el segundo campo del mensaje recibido que coincide con el tipo de entrada de la anotación del microservicio;
en el que
el mecanismo de mensajería está configurado para distribuir una salida de mensaje al mecanismo de mensajería y estructurado de acuerdo con el formato del mensaje a cada microservicio para el cual uno de los uno o más tipos de salida de la anotación coincide con uno de los uno o más tipos especificados por el tercer campo del mensaje; y en el que el controlador de cada microservicio está configurado, con la condición del tipo especificado por el segundo campo del mensaje recibido que no coincide con el tipo de entrada de la anotación, para modificar el mensaje agregando el tipo de entrada de la anotación del microservicio al tercer campo del mensaje y para enviar el mensaje modificado para su transmisión a través del mecanismo de mensajería.
2. El aparato de acuerdo con la reivindicación 1, en el que el tercer campo especifica los tipos como un pedido en una pila, y el mecanismo de mensajería está configurado para distribuir una salida de mensaje al mecanismo de mensajería y estructurado de acuerdo con el formato del mensaje para cada microservicio para el cual el uno o más tipos de salida de la anotación coincide con el tipo de salida agregado más recientemente a la pila del tercer campo.
3. El aparato de acuerdo con cualquiera de las reivindicaciones 1 a 2, en el que
el controlador de cada microservicio está configurado, tras la ejecución de la lógica de procesamiento del microservicio, para emitir los datos de salida.
4. El aparato de acuerdo con la reivindicación 3, en el que los datos de salida se generan, al mecanismo de mensajería, como un nuevo mensaje generado por el controlador del microservicio y estructurado de acuerdo con el formato de mensajería, el nuevo mensaje incluye:
especificación de los datos de salida como el primer campo; un tipo de datos de salida generados por la ejecución de la lógica de procesamiento como el segundo campo; el tercer campo del mensaje recibido en respuesta al cual se ejecutó la lógica de procesamiento para generar los datos de salida, del cual se ha eliminado el tipo de datos de salida generados por la ejecución de la lógica de procesamiento, como el tercer campo.
5. El aparato de acuerdo con cualquiera de las reivindicaciones anteriores, en el que
los mensajes estructurados de acuerdo con el formato de mensaje expresan el primer campo como una URL desde la cual se puede acceder a los datos que se están ingresando.
6. El aparato de acuerdo con cualquiera de las reivindicaciones anteriores, que comprende, además: una interfaz de solicitud, configurada para recibir una solicitud de procesamiento de datos, para extraer de la solicitud de procesamiento de datos:
un primer parámetro de solicitud, el primer parámetro de solicitud que especifica datos de entrada;
un segundo parámetro de solicitud, el segundo parámetro de solicitud que expresa semánticamente un concepto instanciado por los datos de entrada especificados del primer parámetro de solicitud; y
un tercer parámetro de solicitud, el tercer parámetro de solicitud que expresa semánticamente uno o más conceptos a ser instanciados por datos de salida que responden a la solicitud de procesamiento de datos recibida;
la interfaz de solicitud está configurada para generar un mensaje estructurado de acuerdo con el formato del mensaje y para enviar el mensaje generado al mecanismo de mensajería, el mensaje generado comprende:
el primer parámetro de solicitud como el primer campo;
el segundo parámetro de solicitud como el segundo campo; y
el tercer parámetro de solicitud como el tercer campo.
7. El aparato de acuerdo con las reivindicaciones 4 y 6, en el que la interfaz de solicitud está configurada para asignar una ID de referencia a la solicitud de procesamiento de datos recibida;
el formato del mensaje incluye un cuarto campo que identifica una solicitud de procesamiento de datos en asociación con la cual se genera el mensaje; y
el receptor de solicitud está configurado para incluir en el mensaje generado la ID de referencia asignada como el cuarto campo;
en el que, el controlador de cada microservicio está configurado para incluir en el nuevo mensaje generado tras la ejecución de la lógica de procesamiento del microservicio, como el cuarto campo, una copia del cuarto campo del mensaje recibido en respuesta a la cual se realizó dicha ejecución de la lógica de procesamiento.
8. El aparato de acuerdo con la reivindicación 6 o 7, en el que el controlador de cada microservicio está configurado para dejar el cuarto campo sin cambios al modificar el mensaje.
9. El aparato de acuerdo con cualquiera de las reivindicaciones 1 a 8, que comprende, además:
un administrador de microservicios, configurado para gestionar la adición de nuevos microservicios a la pluralidad de microservicios, el administrador de microservicios está configurado:
para recibir un nuevo microservicio para su inclusión en la pluralidad de microservicios, el nuevo microservicio se anota con:
un tipo de entrada, que expresa semánticamente un concepto instanciado por datos procesados por el nuevo microservicio cuando se ejecuta, y un tipo de salida, que expresa semánticamente un concepto instanciado por un resultado de procesamiento de datos por el nuevo microservicio,
el nuevo microservicio comprende:
lógica de procesamiento que, cuando se ejecuta, transforma los datos de entrada que instancian el concepto semánticamente expresado por el tipo de entrada en datos de salida que instancian el concepto semánticamente expresado por el tipo de salida;
el administrador de microservicios se está configurando aún más:
para agregar al tipo de registro el tipo de entrada y el tipo de salida con el que se anota el nuevo microservicio; y para agregar el microservicio a la pluralidad de microservicios.
10. El aparato de acuerdo con la reivindicación 9, en el que la pluralidad de microservicios se almacenan en una memoria.
11. El aparato de acuerdo con la reivindicación 10, en el que
el administrador de microservicios está configurado además para gestionar la eliminación de un microservicio de la pluralidad de microservicios, gestionando la eliminación del microservicio que comprende:
si el tipo de entrada con el que se anota el microservicio no aparece entre las anotaciones de cualquiera de la pluralidad restante de microservicios, eliminar el tipo de entrada de la lista almacenada de tipos;
si el tipo de salida con el que se anota el microservicio no aparece entre las anotaciones de ninguno de la pluralidad restante de microservicios, eliminando el tipo de salida de la lista de tipos almacenados; y
eliminar el microservicio de la pluralidad de microservicios en la memoria.
12. Un método de procesamiento de datos basado en microservicios, que comprende:
almacenar una lista de tipos, siendo un tipo una expresión semántica de un concepto instanciado por datos en el aparato;
almacenar, para cada uno de una pluralidad de microservicios:
una anotación de un tipo de entrada de la lista almacenada de tipos y uno o más tipos de salida de la lista almacenada de tipos;
lógica de procesamiento que, cuando se ejecuta, transforma los datos de entrada instanciando el concepto semánticamente expresado por el tipo de entrada en datos de salida instanciando el concepto semánticamente expresado por uno de los uno o más tipos de salida;
el método comprende, además:
ingresar datos, a través de un mensaje, a un microservicio entre la pluralidad de microservicios, el mensaje estructurado de acuerdo con un formato de mensaje, el formato del mensaje incluye:
un primer campo que especifica los datos que se están ingresando;
un segundo campo que especifica un tipo, de la lista almacenada de tipos, que expresa semánticamente el concepto instanciado por los datos del primer campo; y
un tercer campo que especifica uno o más tipos, de la lista almacenada de tipos, de datos de salida solicitados; el método comprende, además, en el microservicio entre la pluralidad de microservicios:
recibir el mensaje desde el mecanismo de mensajería estructurado de acuerdo con el formato de mensajería, y responder ejecutando la lógica de procesamiento del microservicio a condición del tipo especificado por el segundo campo del mensaje recibido que coincide con el tipo de entrada de la anotación del microservicio;
en el que el mecanismo de mensajería distribuye una salida de mensaje al mecanismo de mensajería y se estructura de acuerdo con el formato del mensaje a cada microservicio para el cual uno de los uno o más tipos de salida de la anotación coincide con uno de los uno o más tipos especificados por el tercer campo del mensaje;
y en el que cada microservicio, con la condición del tipo especificado por el segundo campo del mensaje recibido que no coincide con el tipo de entrada de la anotación, modifica el mensaje agregando el tipo de entrada de la anotación del microservicio al tercer campo del mensaje y genera el mensaje modificado para su transmisión a través del mecanismo de mensajería.
13. Un programa informático que, cuando es ejecutado por un aparato informático, hace que el aparato informático ejecute un método de acuerdo con la reivindicación 12.
ES17195348T 2016-10-21 2017-10-06 Aparato, método y programa de procesamiento de datos basado en microservicios Active ES2765415T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016220782 2016-10-21

Publications (1)

Publication Number Publication Date
ES2765415T3 true ES2765415T3 (es) 2020-06-09

Family

ID=60186000

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17195348T Active ES2765415T3 (es) 2016-10-21 2017-10-06 Aparato, método y programa de procesamiento de datos basado en microservicios

Country Status (4)

Country Link
US (1) US10776107B2 (es)
EP (1) EP3312724B1 (es)
JP (1) JP7043780B2 (es)
ES (1) ES2765415T3 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10511651B2 (en) * 2017-04-25 2019-12-17 General Electric Company Infinite micro-services architecture
US10686862B2 (en) * 2017-12-08 2020-06-16 Salesforce.Com, Inc. Apparatus and method for low-latency message request/response processing
US11062315B2 (en) * 2018-04-25 2021-07-13 At&T Intellectual Property I, L.P. Fraud as a service
CN109729149A (zh) * 2018-12-03 2019-05-07 国云科技股份有限公司 一种基于注解的微服务框架实现方法
KR102027749B1 (ko) * 2019-02-08 2019-10-02 아콘소프트 주식회사 마이크로서비스 시스템 및 방법
CN110287438A (zh) * 2019-06-19 2019-09-27 天津大学 一种基于微服务架构的跨界服务融合方法
CN111209126A (zh) * 2020-01-03 2020-05-29 北京明略软件系统有限公司 微服务之间的数据传输方法及装置、电子设备
US11451643B2 (en) 2020-03-30 2022-09-20 Amazon Technologies, Inc. Managed traffic processing for applications with multiple constituent services
CN111556039B (zh) * 2020-04-21 2021-04-09 南京行者易智能交通科技有限公司 一种通用微服务的web数据导出方法及装置
CN112328221A (zh) * 2020-11-06 2021-02-05 深圳壹账通智能科技有限公司 基于微服务框架的数据结构转化方法、装置及计算机设备
CN112882752B (zh) * 2021-01-26 2022-10-28 苏州达家迎信息技术有限公司 微服务的批量处理方法、装置、计算机设备及存储介质
CN112929358B (zh) * 2021-01-29 2022-12-30 中国工商银行股份有限公司 用于微服务编排的方法和装置、电子设备、及介质
CN113704755B (zh) * 2021-07-13 2024-06-28 奇安信科技集团股份有限公司 一种文件检测方法、装置、电子设备、程序及存储介质
WO2023038904A1 (en) * 2021-09-07 2023-03-16 Dish Wireless L.L.C. System and method for data management in a distributed data mesh for 5g-wireless virtualized deployment
CN114238331B (zh) * 2021-12-16 2024-10-01 深圳前海环融联易信息科技服务有限公司 一种基于扁平List设计的服务编排系统数据方法

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR111574A (es) 1973-12-13 1900-01-01
JPH11282681A (ja) * 1998-03-30 1999-10-15 Mitsubishi Electric Corp オブジェクト利用ガイド装置と対象メソッドの呼び出し順序検索プログラムを記録した記録媒体及びプログラム編集装置
JP3007340B1 (ja) 1998-11-17 2000-02-07 株式会社ディジタル・ビジョン・ラボラトリーズ 機能呼び出し方法、並列分散処理システムおよびコンピュータ
JP2002041293A (ja) 2000-07-28 2002-02-08 Hitachi Ltd プログラム制御方法及びプログラム制御システム
US6990453B2 (en) 2000-07-31 2006-01-24 Landmark Digital Services Llc System and methods for recognizing sound and music signals in high noise and distortion
JP4145477B2 (ja) 2000-11-07 2008-09-03 富士通株式会社 オブジェクト連携装置
JP2003186855A (ja) * 2001-12-20 2003-07-04 Fujitsu Ltd 型照合によるオブジェクト連携システムおよび方法
DE60323086D1 (de) 2002-04-25 2008-10-02 Landmark Digital Services Llc Robuster und invarianter audiomustervergleich
US20040006559A1 (en) 2002-05-29 2004-01-08 Gange David M. System, apparatus, and method for user tunable and selectable searching of a database using a weigthted quantized feature vector
US6961736B1 (en) 2002-05-31 2005-11-01 Adobe Systems Incorporated Compact color feature vector representation
US7081579B2 (en) 2002-10-03 2006-07-25 Polyphonic Human Media Interface, S.L. Method and system for music recommendation
CN1708758A (zh) 2002-11-01 2005-12-14 皇家飞利浦电子股份有限公司 改进的音频数据指纹搜索
JP2004164313A (ja) 2002-11-13 2004-06-10 Fujitsu Ltd サービス連携装置
US8005919B2 (en) 2002-11-18 2011-08-23 Aol Inc. Host-based intelligent results related to a character stream
US20050060350A1 (en) 2003-09-15 2005-03-17 Baum Zachariah Journey System and method for recommendation of media segments
TW594510B (en) 2003-11-05 2004-06-21 Ind Tech Res Inst Method and system of automatic service composition
US7797198B1 (en) 2004-01-27 2010-09-14 Amazon Technologies, Inc. Providing an invocable composite network service based on multiple other invocable constituent network services
US7433835B2 (en) 2004-01-27 2008-10-07 Amazon Technologies, Inc. Providing a marketplace for web services
US7558822B2 (en) 2004-06-30 2009-07-07 Google Inc. Accelerating user interfaces by predicting user actions
US7823123B2 (en) 2004-07-13 2010-10-26 The Mitre Corporation Semantic system for integrating software components
US7324976B2 (en) 2004-07-19 2008-01-29 Amazon Technologies, Inc. Automatic authorization of programmatic transactions
JP4476786B2 (ja) 2004-11-10 2010-06-09 株式会社東芝 検索装置
US8195693B2 (en) 2004-12-16 2012-06-05 International Business Machines Corporation Automatic composition of services through semantic attribute matching
US7734515B1 (en) 2005-08-17 2010-06-08 Amazon Technologies, Inc. Generating new invocable composite network services based on multiple other invocable constituent network services
US7949529B2 (en) 2005-08-29 2011-05-24 Voicebox Technologies, Inc. Mobile systems and methods of supporting natural language human-machine interactions
WO2008015417A1 (en) 2006-07-31 2008-02-07 British Telecommunications Public Limited Company Automatic composition of web services based on syntactiv and semantic rules
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US8122045B2 (en) 2007-02-27 2012-02-21 International Business Machines Corporation Method for mapping a data source to a data target
US8543534B2 (en) * 2007-09-11 2013-09-24 Oracle International Corporation Concurrency in event processing networks for event server
US8312426B2 (en) 2008-01-07 2012-11-13 International Business Machines Corporation Method and system for simplified service composition in web environment
CN101262374A (zh) 2008-04-22 2008-09-10 北京邮电大学 一种服务注册的方法和装置
US8344233B2 (en) 2008-05-07 2013-01-01 Microsoft Corporation Scalable music recommendation by search
US8660924B2 (en) 2009-04-30 2014-02-25 Navera, Inc. Configurable interactive assistant
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8815581B2 (en) 2010-02-03 2014-08-26 Samsung Life Public Welfare Foundation Method for proliferating stem cells by activating c-MET/HGF signaling and notch signaling
US8391590B2 (en) 2010-03-04 2013-03-05 Flashscan3D, Llc System and method for three-dimensional biometric data feature detection and recognition
US8386929B2 (en) 2010-06-22 2013-02-26 Microsoft Corporation Personal assistant for task utilization
CN102385858B (zh) 2010-08-31 2013-06-05 国际商业机器公司 情感语音合成方法和系统
KR20120052610A (ko) 2010-11-16 2012-05-24 삼성전자주식회사 신경망 학습을 통한 동작 인식 방법 및 장치
US9064006B2 (en) 2012-08-23 2015-06-23 Microsoft Technology Licensing, Llc Translating natural language utterances to keyword search queries
US9146917B2 (en) 2011-07-15 2015-09-29 International Business Machines Corporation Validating that a user is human
EP3392876A1 (en) 2011-09-30 2018-10-24 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US8655989B2 (en) 2011-10-14 2014-02-18 Sap Ag Business network access protocol for the business network
KR101910576B1 (ko) 2011-11-08 2018-12-31 삼성전자주식회사 인공신경망을 이용하여 신속하게 입력 패턴을 분류하는 방법 및 장치
KR101912165B1 (ko) 2011-12-09 2018-10-29 삼성전자주식회사 스파이킹 뉴런 기반 작업 기억 장치
US8788269B2 (en) 2011-12-15 2014-07-22 Microsoft Corporation Satisfying specified intent(s) based on multimodal request(s)
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
WO2014009963A1 (en) * 2012-07-10 2014-01-16 Indian Institute Of Technology, Bombay Method and apparatus for optimizing and scaling control plane traffic in carrier ethernet transport networks
EP2704029A1 (en) 2012-09-03 2014-03-05 Agfa Healthcare Semantic data warehouse
KR20140066640A (ko) 2012-11-23 2014-06-02 삼성전자주식회사 다국어 음향 모델 구축 장치 및 이의 다국어 음향 모델 구축 방법, 그리고 그 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능 매체
EP2736042A1 (en) 2012-11-23 2014-05-28 Samsung Electronics Co., Ltd Apparatus and method for constructing multilingual acoustic model and computer readable recording medium for storing program for performing the method
US10938868B2 (en) * 2012-12-07 2021-03-02 Unisys Corporation Application service integration
US20140201629A1 (en) 2013-01-17 2014-07-17 Microsoft Corporation Collaborative learning through user generated knowledge
US9268617B1 (en) 2013-03-11 2016-02-23 Ca, Inc. Bus-based dynamic evaluation with dynamic data lookups
US11470036B2 (en) 2013-03-14 2022-10-11 Microsoft Technology Licensing, Llc Email assistant for efficiently managing emails
US9031933B2 (en) 2013-04-03 2015-05-12 International Business Machines Corporation Method and apparatus for optimizing the evaluation of semantic web queries
US9501503B2 (en) 2013-05-09 2016-11-22 Microsoft Technology Licensing, Llc Inferring entity attribute values
US9081411B2 (en) 2013-05-10 2015-07-14 Sri International Rapid development of virtual personal assistant applications
US9491063B2 (en) 2013-05-15 2016-11-08 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for providing network services orchestration
WO2014189486A1 (en) 2013-05-20 2014-11-27 Intel Corporation Natural human-computer interaction for virtual personal assistant systems
EP3937002A1 (en) 2013-06-09 2022-01-12 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US9336203B2 (en) * 2013-07-19 2016-05-10 Tibco Software Inc. Semantics-oriented analysis of log message content
US9299331B1 (en) 2013-12-11 2016-03-29 Amazon Technologies, Inc. Techniques for selecting musical content for playback
EP2894587B1 (en) 2014-01-09 2019-01-09 Fujitsu Limited Stored data access controller
US9191349B2 (en) * 2014-01-22 2015-11-17 Qualcomm Incorporated Dynamic invites with automatically adjusting displays
WO2015126734A1 (en) 2014-02-23 2015-08-27 Intel Corporation Orchestration and management of services to deployed devices
US9473944B2 (en) 2014-02-24 2016-10-18 Microsoft Technology Licensing, Llc Local personal daemon
US9984158B2 (en) 2014-03-18 2018-05-29 Axis Ab Finding services in a service-oriented architecture (SOA) network
US9705995B2 (en) 2014-03-18 2017-07-11 Axis Ab Capability monitoring in a service oriented architecture
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US20160044380A1 (en) 2014-06-12 2016-02-11 Bertrand Barrett Personal helper bot system
EP3155525A2 (en) 2014-06-13 2017-04-19 Convida Wireless, LLC Automated service profiling and orchestration
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
EP2977918A1 (en) 2014-07-24 2016-01-27 Tata Consultancy Services Limited A system and method for executing a sparql query
KR102239714B1 (ko) 2014-07-24 2021-04-13 삼성전자주식회사 신경망 학습 방법 및 장치, 데이터 처리 장치
US9836701B2 (en) 2014-08-13 2017-12-05 Microsoft Technology Licensing, Llc Distributed stage-wise parallel machine learning
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US20160063874A1 (en) 2014-08-28 2016-03-03 Microsoft Corporation Emotionally intelligent systems
US10698585B2 (en) 2014-08-29 2020-06-30 Nuance Communications, Inc. Virtual assistant development system
US20160070580A1 (en) 2014-09-09 2016-03-10 Microsoft Technology Licensing, Llc Digital personal assistant remote invocation
CN104202416A (zh) 2014-09-16 2014-12-10 浪潮(北京)电子信息产业有限公司 一种云操作系统下的服务编排系统及方法
US10210246B2 (en) 2014-09-26 2019-02-19 Oracle International Corporation Techniques for similarity analysis and data enrichment using knowledge sources
US10129078B2 (en) 2014-10-30 2018-11-13 Equinix, Inc. Orchestration engine for real-time configuration and management of interconnections within a cloud-based services exchange
US10152558B2 (en) 2014-12-23 2018-12-11 Intel Corporation Graph operations
CN105357143B (zh) 2015-11-27 2019-10-01 华为技术有限公司 一种转发方法及服务路由中继节点
US10120734B1 (en) * 2016-08-29 2018-11-06 Equinix, Inc. Application programming interface and services engine with application-level multi-tenancy

Also Published As

Publication number Publication date
US10776107B2 (en) 2020-09-15
JP7043780B2 (ja) 2022-03-30
JP2018073400A (ja) 2018-05-10
EP3312724B1 (en) 2019-10-30
US20180113707A1 (en) 2018-04-26
EP3312724A1 (en) 2018-04-25

Similar Documents

Publication Publication Date Title
ES2765415T3 (es) Aparato, método y programa de procesamiento de datos basado en microservicios
US10324742B2 (en) Instantiation of JavaScript object
US8751558B2 (en) Mashup infrastructure with learning mechanism
Blackstock et al. Toward a distributed data flow platform for the web of things (distributed node-red)
Leibiusky et al. Getting started with storm
US9729592B2 (en) System and method for distributed virtual assistant platforms
US10146599B2 (en) System and method for a generic actor system container application
US8751626B2 (en) Model-based composite application platform
JP5420065B2 (ja) データ・ストリーム処理アプリケーションの動的な構成
US10866828B2 (en) Extending object-schema-based application programming interfaces (APIs)
US10078654B2 (en) Data logging framework
US20150067503A1 (en) System and method for virtual assistants with agent store
US20090165021A1 (en) Model-Based Composite Application Platform
CN104145257A (zh) 用于被连接设备的语义缓存云服务
US10824544B1 (en) Generating test data as a service for use in testing software during software development
CN112307122B (zh) 一种基于数据湖的数据管理系统及方法
Di Martino et al. Semantic representation of cloud services: a case study for microsoft windows azure
US11893367B2 (en) Source code conversion from application program interface to policy document
WO2015039105A1 (en) System and method for distributed virtual assistant platforms
US9442746B2 (en) Common system services for managing configuration and other runtime settings of applications
EP4030280A1 (en) Seamless lifecycle stability for extensible software features
CN102402433A (zh) 模型、操作以及实现的分离
CN117093252A (zh) 云对象交付方法、装置、电子设备和计算机可读存储介质
Goriparthi ENHANCING DATA QUERY EFFICIENCY WITH GRAPHQL APIS: A COMPARATIVE STUDY WITH RESTFUL WEB SERVICES
Soininen et al. M3 Semantic Interoperability Workshop