¿Cuál es la mejor manera de transmitir datos móviles desde una aplicación móvil a transmisiones de MapR o temas de Apache Kafka?

Si desea implementar algo como Viber o WhatsApp mientras utiliza Kafka para almacenar / leer datos de dispositivos móviles, una solución es construir o usar un servicio REST existente que exponga las API apropiadas para lograr las capacidades deseadas. ( como se presenta en otras respuestas a esta pregunta )

El enfoque alternativo es construir o utilizar un servicio WebSocket existente.

Un zócalo web permite un “canal de comunicación bidireccional” entre el dispositivo móvil y Kafka, lo que le brinda un control más preciso, lo que le permite incorporar autenticación y autorización (es decir, oAuth).

Un proyecto de socket web existente disponible en github es Landoop / kafka-ws

Si observa el protocolo, incluye “latidos del corazón” para garantizar que la conexión con el dispositivo móvil esté activa, y otras características interesantes en las que termina pensando una vez que intenta construir una implementación sólida / lista para producción.

Lo que hice fue escribir un simple servicio NIO REST que acepta mensajes y los enruta a un tema kafka.

Expongo un único recurso REST: / events / {topic}

Una POST a ese recurso dará como resultado que el cuerpo de la solicitud se procese ligeramente (agrego un Id de copo de nieve, que utilizo para equilibrar la carga en las particiones de kafka, y algunos otros trucos) y el objeto del mensaje se envía al kafka especificado tema.

Todo se hace con unos cientos de líneas de código muy estricto. El servicio ha estado funcionando durante algunos años y ha manejado enormes picos de tráfico sin parpadear.

Puede usar el proxy REST Kafka Confluent Open Source y mantener todo el tráfico de aplicaciones móviles HTTP (S). La versión 3.3 de Kafka REST Proxy incluirá incluso las credenciales del cliente SSL Proxy en las credenciales de Kafka (SSL o SASL) para pasar por las listas de control de acceso.

La fuente está aquí

confluentinc / kafka-rest

O descargue el código de lectura para ejecutar desde aquí

Descargar Confluent Open Source & Confluent Enterprise