Lanzamiento de eKuiper 1.5.0: realización de recopilación de datos industriales sin interrupciones + procesamiento de flujo de borde

El proyecto eKuiper llena el vacío de la computación en tiempo real en el borde, y se ha utilizado cada vez más en los campos de Internet industrial de las cosas e Internet de los vehículos. De acuerdo con una gran cantidad de comentarios de usuarios recopilados de GitHub, grupos de WeChat, foros y otros canales, hemos continuado mejorando la facilidad de uso y la confiabilidad de eKuiper, y recientemente lanzamos oficialmente la versión 1.5.0.

Los aspectos más destacados de esta actualización son:

  • Mejoras de SQL: la función central de eKuiper SQL para definir el flujo de datos y las reglas de análisis proporciona más funciones integradas que incluyen funciones de monitoreo de cambios y funciones object_construct, mejorando la expresividad;
  • Conexión ecológica: proporciona soporte de conexión Neuron incorporado, que puede procesar fácilmente los datos en el ecosistema Neuron; al mismo tiempo, el complemento SQL general se puede conectar a una variedad de bases de datos SQL tradicionales, realizando el procesamiento continuo de lotes datos hasta cierto punto.
  • Mejoras en la operación, el mantenimiento y la documentación: se mejora la estabilidad del tiempo de ejecución de reglas y se admite la compilación bajo demanda. Se reconstruye la estructura de navegación del documento y se mejora la experiencia de lectura y el efecto de consulta.

URL del sitio web de la comunidad: https://ekuiper.org/zh

Repositorio de GitHub: https://github.com/lf-edge/ekuiper

Dirección de imagen de Docker: https://hub.docker.com/r/lfedge/ekuiper

conexión ecológica

Varias fuentes/sumideros son formas en que eKuiper se conecta con el ecosistema de procesamiento de datos. En la nueva versión, eKuiper ha añadido más tipos de conexión Neuron y SQL. Al mismo tiempo, también mejoramos la conexión original, como la adición de compatibilidad con la supertabla en el receptor de TDEngine.

Integración de neuronas

Neuron  es un software de puerta de enlace de protocolo industrial de borde de Internet industrial de las cosas (IIoT) iniciado por EMQ y de código abierto para tecnologías modernas de big data para aprovechar el poder de Industry 4.0. Admite el acceso integral a múltiples protocolos industriales y los convierte al protocolo MQTT estándar para acceder a las plataformas de IoT industrial. El uso integrado de Neuron y eKuiper puede facilitar la recopilación y el cálculo de datos perimetrales de IIoT.

En versiones anteriores, se requería MQTT como tránsito entre Neuron y eKuiper. Cuando los dos trabajan juntos, se debe implementar un agente MQTT adicional. Al mismo tiempo, los usuarios deben manejar el formato de datos por sí mismos, incluida la decodificación y codificación al leer y leer. Neruon versión 2.0 y eKuiper versión 1.5.0 se integrarán a la perfección. Los usuarios pueden acceder a los datos recopilados en Neruon en eKuiper sin configuración y realizar cálculos; también pueden controlar fácilmente Neuron desde eKuiper. La integración de los dos productos puede reducir significativamente el costo de implementación de las soluciones informáticas de borde y simplificar el umbral de uso. El uso del protocolo NNG y la comunicación entre procesos también puede reducir significativamente el consumo de comunicación de la red y mejorar el rendimiento.

Cuando los usuarios acceden a Neuron, solo necesitan crear un flujo de tipo Neuron en eKuiper:

CREATE STREAM demo() WITH (TYPE="neuron",SHARED="TRUE")

Al contracontrolar a Neuron, debe agregar una acción de Neuron a la acción de la regla y especificar el nombre del grupo, el nombre del nodo y el nombre de la etiqueta que se escribirán (todos los cuales son atributos dinámicos). eKuiper convertirá automáticamente el formato para que se ajuste al formato de entrada de Neuron.

"neuron": {
  "nodeName": "{{.node}}",
  "groupName": "grp",
  "tags": [
    "tag0"
  ]
}

Para obtener más información, consulte la documentación de Neuron Source y Neuron Sink .  

Extraer y escribir SQL

La fuente de extracción de SQL proporciona una forma de convertir datos por lotes en datos de transmisión, lo que permite que eKuiper admita el procesamiento integrado preliminar de transmisiones y lotes.

En el proceso de actualización y transformación del sistema anterior, a menudo debemos considerar la compatibilidad con el sistema original. Una gran cantidad de sistemas heredados utilizan bases de datos relacionales tradicionales para almacenar los datos recopilados. En el nuevo sistema, también puede haber datos almacenados en la base de datos, lo cual es un inconveniente para proporcionar datos de acceso de transmisión, pero debe calcularse en tiempo real. Hay muchos más escenarios que requieren acceso a una gran variedad de bases de datos habilitadas para SQL u otros sistemas externos.

eKuiper proporciona una fuente de extracción de SQL universal unificada/de múltiples bases de datos, que puede extraer datos regularmente de fuentes de datos que admiten SQL, y proporciona capacidades básicas de deduplicación para formar datos de transmisión para el procesamiento informático de transmisión unificado. La versión precompilada del complemento admite el acceso a bases de datos comunes como MySQL y PostgresSQL. Al mismo tiempo, el complemento está equipado con capacidades de conexión de casi todas las bases de datos comunes. Los usuarios solo necesitan proporcionar los parámetros de la base de datos que necesitan soporte al compilar, y luego pueden compilar y admitir por sí mismos Complementos para tipos de bases de datos personalizados.

Además de la extracción de datos, también proporcionamos un complemento de SQL genérico para la escritura de datos. Vale la pena señalar que el propio eKuiper ha proporcionado complementos especiales para bases de datos de series temporales como InfluxDB y TEngine. El complemento SQL general también puede admitir la conexión a estas bases de datos, pero proporciona la función de inserción y no admite los conceptos no estándar de bases de datos específicas. Por ejemplo, la supertabla de TEngine solo se puede escribir con el complemento TEngine. en.

Para obtener más información y una lista de las bases de datos admitidas, consulte la documentación del complemento SQL source y el complemento SQL sumidero .  

Mejoras de eKuiper SQL

Las funciones integradas son la principal forma organizativa de SQL para completar varios cálculos y también son una fuente importante de expresividad de SQL. Las mejoras de SQL en la nueva versión se logran principalmente mediante la adición de nuevas funciones.

Cambiar la función de monitoreo

Se han agregado tres funciones generales relacionadas con la detección de cambios en la nueva versión: CHANGED_COLS, CHANGED_COL y HAD_CHANGED.

El papel de la función CHANGED_COLS es detectar si la columna especificada ha cambiado, si ha cambiado, devolverá el valor de la columna modificada, de lo contrario no devolverá. En escenarios de detección de cambios, los usuarios a menudo necesitan monitorear múltiples columnas/expresiones y el número no es fijo. Por lo tanto, la función puede recibir un número indeterminado de argumentos y su valor de retorno puede ser varias columnas. En comparación con las funciones escalares ordinarias que devuelven una sola columna de resultados (los resultados de varias columnas se incluirán en el mapa), esta es la primera función que devuelve varias columnas. Hemos refactorizado la implementación de la función para realizar la función de varias columnas. apoyo. El número de parámetros de la función es variable, y los parámetros de la columna también pueden ser otras expresiones. El parámetro de columna también admite el signo *, lo que significa detectar todas las columnas, como SELECT CHANGED*COLS ("c*", true,*) FROM demo.

Las funciones de varias columnas solo se pueden usar en la cláusula Select, y sus valores seleccionados no se pueden usar en WHERE ni en otras cláusulas. Si necesita filtrar según el valor cambiado, puede usar la función CHANGED_COL para obtener el valor cambiado como condición de filtro, o usar la función HAD_CHANGED para obtener el estado de cambio de varias columnas como condición de filtro. Para obtener detalles y ejemplos de uso, consulte la documentación .

Agrupar columnas seleccionadas

Todas las columnas seleccionadas por select en la instrucción SQL regular formarán un objeto para que el complemento receptor y las aplicaciones posteriores las procesen. En algunos escenarios, las aplicaciones posteriores necesitan agrupar columnas seleccionadas y luego procesar de manera flexible cada agrupación. Por ejemplo, los resultados seleccionados se dividen en varios conjuntos de clave/valor, donde la clave es el nombre del archivo, de modo que los resultados se pueden escribir dinámicamente en varios archivos.

El nuevo método incorporado object_construct facilita agrupar y nombrar columnas. Su sintaxis es object_construct (key1, col, ...), admite varios parámetros y devuelve un objeto construido a partir de los parámetros. El parámetro es una serie de pares clave-valor, por lo que debe ser un número par. La clave debe ser de tipo cadena y el valor puede ser de cualquier tipo. Por ejemplo, el usuario debe escribir las columnas 1, 2, 3 en el archivo 1 y las columnas 4, 5 en el archivo 2. Luego se puede usar una regla SQL para agrupar las columnas y asignar un valor al nombre del grupo:

SELECT object_construct("key1", col1, "key2", col2, "key3", col3) AS file1, object_construct("key4", col4, "key5", col5) AS file2 FROM demoStream

Su salida tiene la forma del siguiente objeto JSON:

{
"file1":{"key1":"aValue","key2":23,"key3":2.5},
"file2":{"key4":"bValue","key5":90}
}

Más fácil de operar

Las principales mejoras de la nueva versión en términos de operación y mantenimiento incluyen mejorar la estabilidad del tiempo de ejecución y proporcionar parámetros de compilación convenientes para facilitar a los usuarios personalizar las funciones del software de acuerdo con sus necesidades para adaptarse a dispositivos con menor poder de cómputo.

Aislamiento de reglas

En la nueva versión, hemos optimizado y refactorizado el funcionamiento de las reglas y el ciclo de vida para aumentar la estabilidad del funcionamiento de las reglas y mejorar el aislamiento entre reglas. Principalmente en los siguientes aspectos:

Aislamiento de errores de reglas: incluso para las reglas que usan una fuente compartida, un error de tiempo de ejecución en una regla no afectará a otras reglas relacionadas. Al mismo tiempo, los errores de pánico a nivel de sistema de la nueva versión de las reglas también se manejarán a nivel de regla y ya no provocarán que todo el proceso de eKuiper se bloquee.

Aislamiento de carga de reglas: entre reglas hermanas que usan fuentes de memoria o compartidas, el rendimiento del flujo de entrada de mensajes no se ve afectado por otras reglas mientras se mantiene el orden de los mensajes.

compilar bajo demanda

Como motor de procesamiento de flujo de borde, hay muchos sistemas de destino heterogéneos que deben implementarse, incluidas salas de computadoras de borde y puertas de enlace con mejor poder de cómputo, así como otros más baratos o personalizados debido al costo y los requisitos comerciales especiales.Soluciones de software y hardware. Con la mejora gradual de las funciones, el eKuiper con todas las funciones puede estar ligeramente inflado en dispositivos con recursos extremadamente limitados, como terminales con menos de 50 MB de memoria. En la nueva versión, eliminamos las funciones principales y otras funciones de eKuiper a través de las etiquetas de compilación del lenguaje go. Cuando los usuarios lo usan, pueden compilar algunas funciones según sea necesario configurando los parámetros de compilación, para obtener un archivo de ejecución más pequeño. Por ejemplo, para compilar solo funciones principales, use make build_core para obtener un archivo de ejecución que contenga solo funciones principales. Para obtener más información, consulte Compilación bajo demanda . 

La documentación es más fácil de usar

En el sitio web oficial ( https://ekuiper.org  ) lanzado en abril, la documentación de eKuiper se refactorizó en la estructura del directorio y se compiló en el sitio web de documentación. El nuevo sitio web de documentación ha agregado módulos como introducciones de conceptos y tutoriales, y ha ajustado el árbol de navegación, con la esperanza de ayudar a los usuarios a encontrar información útil más fácilmente.

Instrucciones de actualización

La iteración de la versión de eKuiper intentará mantener la compatibilidad entre la versión anterior y la nueva, y la nueva versión no es una excepción. Después de actualizar a la versión 1.5.0, la mayoría de las funciones se pueden actualizar sin problemas sin ningún cambio, pero hay dos cambios que el usuario debe cambiar manualmente:

  1. El elemento de configuración del servidor de la fuente Mqtt se cambia de servidor a servidor, y el valor de configuración se cambia de matriz a cadena. Se requieren cambios en el archivo de configuración del usuario etc/mqtt_source.yaml. Si utiliza variables de entorno, como el inicio de Docker y el inicio de archivo de composición de Docker, debe cambiar las variables de entorno: MQTT_SOURCE DEFAULT SERVERS => MQTT_SOURCE DEFAULT SERVER . El comando lanzado por Docker se cambia a docker run -p 9081:9081 -d --name ekuiper MQTT_SOURCE DEFAULT SERVER="$MQTT_BROKER_ADDRESS" lfedge/ekuiper:$tag.
  2. Si usa el receptor Tdengine, su nombre de atributo ip se cambia a host y el valor del atributo debe ser el nombre de dominio.

Supongo que te gusta

Origin www.oschina.net/news/197906/ekuiper-1-5-0-released
Recomendado
Clasificación