2017-04-06 2 views
2

Je crée une application d'analyse en continu dans laquelle chaque analytique/fonctionnalité sera implémentée en tant que Microservice afin que cette analyse puisse être utilisée ultérieurement dans les différents projets. J'utilise Lagom pour créer Microservice. Je suis nouveau à lagom c'est pourquoi je suis tombé sur quelques doutes.Meilleure approche pour intégrer des données de streaming dans Lagom Microservice

Je ne comprends pas quelle sera la meilleure approche pour publier mon flux de données (provenant de plusieurs capteurs) sur microservice, puis ce microservice publie des données sur le sujet kafka.

  1. Est-ce que Lagom fonction Stream message dans Description du service ServiceCall [Source [String, NOTUSED], Source [String, NOTUSED]] est-il la bonne approche à Post flux de données (Big Data) de centaines de capteurs wifi? A-t-il une location pour gérer cette énorme quantité de flux de données en temps quasi-réel (= 5 Sec)? Deuxièmement, tout en publiant des données à des sujets kafka pourquoi je dois implémenter l'entité persistante (recommandé par Lagom)? Parce que Kafka lui-même garantit à-moins une fois la transmission du message

Mon application n'est pas application CRUD, il prend en charge uniquement pour traiter des données en continu.

Répondre

2
  1. Les appels en streaming de Lagom utilisent WebSockets. Il est basé sur le support WebSocket de Play, qui peut évoluer vers des millions de clients connectés. Je n'appellerais pas des centaines de capteurs wifi une énorme quantité de données, Lagom devrait facilement le manipuler, et Lagom peut aussi facilement être mis à l'échelle horizontalement, donc si le traitement que vous faites est lourd, vous pouvez facilement répartir ce traitement sur plusieurs nœuds .

  2. La publication d'un flux WebSocket entrant sur Kafka n'est actuellement pas prise en charge dans Lagom. Alors que Kafka garantit au moins une fois une fois qu'un message est publié à Kafka, il n'y a pas de telles garanties lors de l'envoi de ce message dans Kafka dans un premier temps. Par exemple, si vous effectuez un effet secondaire, comme mettre à jour une base de données, puis publier un message, il n'y a aucune garantie que l'application se bloque entre la mise à jour de la base de données et la publication du message dans Kafka. être publié à Kafka (en fait ce ne sera pas, ce message sera perdu). C'est pourquoi Lagom encourage uniquement les flux d'événements de base de données à être publiés sur Kafka, car publier le journal des événements de cette manière garantit que toute opération de base de données qui doit ensuite être envoyée à Kafka se produit au moins une fois. Cependant, si vous ne produisez pas d'effets secondaires, ce qui semble ne pas être le cas, cela pourrait ne pas vous concerner. Ce que je recommanderais dans ce cas serait d'utiliser akka-streams-kafka (sur lequel le support de Kafka de Lagom est construit) directement.

J'ai soulevé un problème en référence à votre cas d'utilisation here.

+0

Merci pour la discussion détaillée. En effet dans mon cas, je n'ai pas à considérer les effets secondaires, Et si j'utilise External Kafka Producer (non intégré à Lagom) directement en tant que client et que je consomme ce message publié dans le microservice Lagom pour un traitement ultérieur? –