614 votes

Bon cas d'utilisation pour Akka

J'ai entendu beaucoup de furieux sur Akka cadre (Java/Scala plate-forme de service), mais jusqu'à présent, n'ont pas vu beaucoup d'exemples concrets de cas d'utilisation, il serait bon pour. Donc, je serais intéressé par des choses que les développeurs ont utilisé avec succès.

Seule limitation: veuillez ne pas inclure les cas de l'écriture d'un serveur de chat. :-) (pourquoi? puisque cela a été galvaudé comme un exemple pour beaucoup de choses semblables)

EDIT: Puisqu'il y a beaucoup de bonnes réponses, mon choix de accepté de réponse est un peu arbitraire, je pensais plus a voté l'un semble être un choix raisonnable. Merci à tous de bonnes réponses!

329voto

Raymond Roestenburg Points 2542

Je l'ai utilisé jusqu'à présent dans deux projets réels avec beaucoup de succès. les deux sont dans la proximité le trafic en temps réel champ d'informations (trafic, comme dans les voitures sur les autoroutes), distribué sur plusieurs nœuds, l'intégration de messages entre plusieurs parties, fiable backend systèmes. Je n'ai pas la liberté de donner des détails sur les clients pourtant, quand je fais la OK, peut-être, il peut être ajouté comme une référence.

Akka a vraiment tiré par sur ces projets, même si nous avons commencé lorsqu'il était sur la version 0.7. (nous sommes à l'aide de scala par la voie)

L'un des plus grands avantages est la facilité avec laquelle vous pouvez composer un système d'acteurs et de messages avec presque pas de boilerplating, elle s'adapte très bien sans toutes les complexités de roulés à la main threading et vous obtenez asynchrone de passage de messages entre les objets presque gratuit.

Il est très bon dans la modélisation de n'importe quel type de message asynchrone de la manipulation. Je préfère écrire n'importe quel type de (web) système de services dans ce style que n'importe quel autre style. (Avez-vous déjà essayé d'écrire un asynchrones service web (côté serveur) avec JAX-WS? c'est beaucoup de la plomberie). Donc je dirais que tout système qui ne veulent pas accrocher sur l'un de ses composants car tout est implicitement appelé à l'aide des méthodes synchrones, et que l'une des composantes est le verrouillage de quelque chose. Il est très stable et la let-it-crash + superviseur de la solution à l'échec, ça marche vraiment bien. Tout est facile à configurer par programmation et pas difficile à l'unité de test.

Puis il y a l'excellent add-on modules. Le Chameau module vraiment bouchons de bien en Akka et permet de développer facilement des services asynchrones avec configurables points de terminaison.

Je suis très heureux avec le cadre et il est en train de devenir un standard de facto pour les systèmes connectés que nous construisons.

225voto

Viktor Klang Points 14826

Avertissement: je suis le bon de commande pour Akka

En plus d'offrir un assortiment de simultanéité qui est beaucoup plus simple à comprendre et à obtenir de bons (les acteurs, les agents, les flux de données de simultanéité) et avec contrôle de la simultanéité dans la forme de la STM.

Voici quelques cas d'utilisation que vous pouvez envisager:

  1. Le traitement des transactions (en ligne jeu, de la finance, statistiques, paris, social media, telecom, ...)
    • l'échelle, à l'échelle, de la tolérance de pannes / HA
  2. Service backend (toute l'industrie, tout app)
    • service REST, SOAP, cometd etc
    • agir en tant que message hub / couche d'intégration
    • l'échelle, à l'échelle, de la tolérance de pannes / HA
  3. Composant logiciel enfichable de la simultanéité/parallélisme ( n'importe quelle application )
    • Correct
    • Simple à utiliser et à comprendre
    • Il suffit d'ajouter les pots de votre JVM projet (utilisation de Scala, Java, Groovy ou JRuby)
  4. Traitement par lots ( toutes les industries )
    • Chameau intégration de connecter avec des lots à des sources de données
    • Les acteurs diviser et conquérir les charges de travail par lot
  5. Plaque tournante des Communications ( télécommunications, médias web, mobile, médias )
    • l'échelle, à l'échelle, de la tolérance de pannes / HA
  6. Serveur de jeux (jeux en ligne, paris)
    • l'échelle, à l'échelle, de la tolérance de pannes / HA
  7. BI/datamining/à usage général croquer
    • l'échelle, à l'échelle, de la tolérance de pannes / HA
  8. insérer l'autre beau cas d'utilisation ici

79voto

Wade Arnold Points 546

Un exemple de la façon dont nous est il le serait sur une file d'attente de priorité de la carte de débit/carte de crédit. Nous avons des millions de ces et l'effort du travail repose sur la chaîne d'entrée type. Si l'opération de VÉRIFICATION de type, nous avons très peu de transformation, mais si c'est un point de vente, leur est beaucoup de choses à faire comme fusionner avec des méta-données (catégorie, l'étiquette, les étiquettes, etc) et de fournir des services (e-mail/sms alertes, détection de fraude, les bas fonds de l'équilibre, etc). Basé sur le type d'entrée nous mixin les traits nécessaires à l'accomplissement de la tâche, puis effectuer le travail. L'ensemble de ces travaux entrent dans la même file d'attente en temps réel à partir de différents institution financière. Une fois les données est nettoyé, il est envoyé à différentes banques de données de la persistance, de l'analytique, ou poussés à une connexion de socket, ou de Soulever la comète acteur. Travail de voler les acteurs sont constamment auto-équilibrage de la charge du travail afin que nous puissions traiter les données aussi rapidement que possible. Nous pouvons également composant logiciel enfichable dans d'autres services, de la persistance de modèles, et de la STM pour les points de décision critiques.

L'Erlang OTP style de la transmission de message sur la JVM fait un système idéal pour le développement en temps réel des systèmes sur les épaules des bibliothèques existantes et les serveurs d'applications. Akka vous permet de faire la transmission de message comme vous le feriez dans un traditionnel ESB, mais avec la vitesse! Il vous donne également des outils dans le cadre de gestion de la grande quantité de l'acteur piscines, des nœuds distants, et la tolérance aux pannes que vous avez besoin pour votre solution.

39voto

Luciano Fiandesio Points 4795

Nous utilisons Akka à grande échelle projet Telco (malheureusement je ne peux pas révéler beaucoup de détails). Akka acteurs sont déployées et accès à distance par une application web. De cette façon, nous avons un modèle simplifié de la RPC basé sur Google protobuffer et nous atteignons le parallélisme à l’aide de Akka Futures. Jusqu’ici, ce modèle a travaillé avec brio. Une remarque : nous utilisons l’API Java.

38voto

tylerweir Points 581

Si vous abrégé du serveur de chat jusqu'à un niveau, vous obtenez la réponse.

Akka fournit un système de messagerie qui s'apparente à Erlang "laisser crash" mentalité.

Si les exemples sont des choses qui ont besoin de différents niveaux de durabilité et de fiabilité de la messagerie:

  • Serveur de Chat
  • La couche réseau pour un MMO
  • Données financières de la pompe
  • Système de Notification d'un iPhone/mobile/quel que soit l'application
  • RESTE Serveur
  • Peut-être quelque chose qui s'apparente à WebMachine (deviner)

Belles choses sur Akka sont les choix qu'elle offre pour la persistance, c'est de la STM mise en œuvre, le RESTE du serveur et de la tolérance de pannes.

N'obtenez pas gêné par l'exemple d'un serveur de chat, pensez-y comme un exemple d'une certaine classe de la solution.

Avec tous leur excellente documentation, je me sens comme un écart est précisément cette question, cas d'utilisation et des exemples. En gardant à l'esprit les exemples sont non-trivial.

(Écrit avec seulement l'expérience de regarder des vidéos et jouer avec la source, j'ai rien mis en œuvre à l'aide de akka.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X