Ce que les décisions de conception serait en faveur de Scala Acteurs au lieu de JMS?
Quelles sont les différences à l'aide de la Scala Acteurs au lieu de JMS?
Par exemple à partir d'une performance et d'évolutivité point de vue, ce qui ne la Scala Acteur modèle à ajouter par rapport à JMS? Dans quels cas est-il plus logique d'utiliser des Acteurs plutôt que JMS, c'est à dire quels sont les problèmes liés Acteurs de l'adresse que JMS ne peut pas couvrir?
Vous devez vous connecter pour publier un commentaire.
JMS et Scala acteurs partagent une similitude théorique, mais n'est pas pour autant nécessairement résoudre les mêmes problèmes à l'architecture. Les acteurs sont censés être une alternative légère à la mémoire partagée de la simultanéité où les courses et les blocages sont généralement plus difficile à accidentellement créer. JMS est un système sophistiqué de l'API qui est censé durée de messagerie instantanée, de publier/souscrire, les transactions, les EJB intégration, etc.
Le plus proche JMS équivalent à un acteur serait un message driven bean qui est soutenu par un non-persistant, non transactionnelles, non-pub/sub file d'attente. Je vais l'appeler qu'une "simple JMS bean".
Maintenant, à vos questions.
De la Performance est une chose difficile à en parler depuis JMS est un cahier des charges plutôt que d'une mise en œuvre. Aucun-le-moins lors de l'utilisation de simple JMS bean que j'avais s'attendre à des performances à peu près semblable, avec peut-être un peu d'un bord à l'acteur en temps et en mémoire. Comme vous ajouter des fonctionnalités à JMS comme pub/sub, transactions, etc performances vont naturellement se dégrader encore plus loin, mais alors vous êtes en train de comparer des pommes à des oranges.
Comme pour l'évolutivité, la simple JMS haricots doivent échelle à peu près exactement de la même façon que les acteurs. L'ajout de transactions dans la JMS mélange naturellement mal à l'évolutivité d'un montant en fonction de la portée des opérations.
La question plus large de ce que font les acteurs qui JMS ne le peuvent pas. Eh bien, sans haut-pub ou les sous-transactions, il semblerait que les acteurs de soustraire de JMS - et largement c'est vrai. Mais voici la chose: les acteurs nécessitent donc peu de code que je peux heureusement les utiliser pour la très fine de la concurrence. Dans l'ordinaire de code Java, je pourrais dire "je n'ai pas envie de vissage avec JMS et de ses dépendances ou le code il nécessite etc donc je vais juste frayer un fil, utiliser un verrou, et de partager une structure de données." Avec Scala acteurs, je suis beaucoup plus enclins à dire "je vais concocter un acteur et avancer."
Il y a aussi une différence philosophique dans la conception. Les acteurs ont un simple, intégré dans le concept de superviseur des hiérarchies. Les acteurs sont généralement utilisés dans un "laisser écraser" de la conception. Si un acteur meurt pour une raison quelconque, puis un autre acteur est responsable de décider quoi faire à ce sujet comme le redémarrage que l'acteur, le meurtre d'une bande d'acteurs et le redémarrage de tous d'entre eux, ou de tuer un tas d'acteurs et de lui-même, de sorte que certains otther acteur peut régler le problème. Ce genre de chose peut ajoutés sur JMS, mais ce n'est pas de base de l'API et doivent être gérés de l'extérieur en quelque sorte.
Par la manière, pour un Scala bibliothèque de l'acteur qui se déplace de plus en plus dans les domaines que JMS couvre voir Akka. Akka apporte également une approche déclarative pour de nombreuses communes acteur de la hiérarchie des stratégies.