J'ai lu Manifeste réactif quelques fois et j'ai essayé d'envelopper ma tête de tout ce truc réactif, asynchrone et non bloquant. Il est clair comment faire des systèmes évolutifs sur Actors, mais j'obtiendrai le même effet, en terme d'évolutivité, d'exécution asynchrone si j'utilise activement scala Future
partout dans mon code, chaque méthode accepterait ou retournerait un Future. Un tel service serait-il évolutif et réactif? Disons que dans cette question je ne suis pas très intéressé par une partie du service axée sur les événements et résiliente.Services réactifs et évolutivité sans Akka
Répondre
Cette réponse reflète mon expérience d'utilisation d'Akka dans Scala et de ses types Actor
et Future
. Je ne me considère pas encore comme un expert, mais j'ai fait quelques systèmes utilisant ces bibliothèques et je sens que je commence à développer une idée de la façon de les utiliser.
Le choix d'utiliser un acteur par rapport à un futur concerne la nature de la concurrence dont vous avez besoin. Les contrats à terme se composent de façon monadique et dans des graphes structurés en DAG, ce qui rend certaines structures de calcul très élégantes. Mais ils ont des limitations sévères. Fondamentalement, le calcul qui est effectué simultanément dans un avenir doit être autonome (ou tout au plus référence uniquement état externe immuable) ou vous n'avez pas résolu le problème de l'interférence inter-thread avec tous les risques inhérents tels que l'impasse, conditions de course, comportement imprévisible ou corruption de structure de données. Lorsque votre calcul implique un état mutable de longue durée, un acteur encapsule celui qui empêche de manière sûre la corruption et les conditions de concurrence. D'un autre côté, les acteurs ne sont pas composables, mais ils fournissent beaucoup de flexibilité dans la façon dont vous construisez des réseaux de calculs en interaction. Cela n'est vrai que si vous ne limitez pas les réponses des acteurs à toujours et seulement en les envoyant (la réponse à une requête) à l'acteur à partir duquel la requête a été reçue. Si vous envoyez uniquement des réponses à l'acteur demandeur, vous êtes limité à un modèle d'interaction inter-acteur structuré en arborescence.
Dans n'importe quel système réel, non trivial, vous êtes très susceptible d'utiliser les deux formalismes, Future et Actor.
- 1. Évolutivité des services Web J2EE, comment approcher?
- 2. POO et évolutivité
- 3. WP7 Silverlight App Évolutivité Évolutivité
- 4. Positionnement absolu et divs réactifs
- 5. Évolutivité MSMQ
- 6. évolutivité websocket
- 7. Débutant Évolutivité
- 8. Évolutivité de Cytoscape.js
- 9. Équilibrage de charge RMI/évolutivité
- 10. Cache Hadoop et évolutivité du cache
- 11. évolutivité et performance de l'application Web
- 12. Évolutivité memcached et statistiques de vote efficaces
- 13. Silverlight Toolkit Contrôle et évolutivité TreeView
- 14. Arrière-plans réactifs
- 15. Comment rendre mes boutons réactifs?
- 16. Requêtes médias réactifs IE
- 17. Ajustements de menu réactifs
- 18. Onglets réactifs jQuery
- 19. Évolutivité Poco SocketReactor
- 20. ASP.NET SqlMembership Fournisseur évolutivité
- 21. Problème d'onglets réactifs
- 22. Douilles paresseuses - évolutivité?
- 23. Évolutivité des Oracle Forms
- 24. tester une classe sans activité et services
- 25. Combinant Akka, Spray et Embedded Jetty
- 26. Fichiers IntelliJ, Akka et Configuration
- 27. Rendre les sites sharepoint réactifs
- 28. Évolutivité de Laravel Web App
- 29. Services web sans état
- 30. Évolutivité SaaS - Tomcat est-il suffisamment évolutif?