9
votes

Existe-t-il une implémentation non bloquante IO Open Source pour les acteurs de Scala?

J'ai des fichiers assez volumineux que je dois gérer (500meg + zip dossiers).

Y a-t-il des implémentations non bloquantes d'IO open source pour les acteurs de Scala?


1 commentaires

Qu'est-ce que cela signifie Nio pour les fichiers? Dans Socket Nio est important car les sockets sont lents et enclins à s'arrêter à plusieurs reprises et à recommencer. En outre, dans WebServer, vous souhaiterez peut-être séparer le nombre de fils du nombre de sockets servis. Mais avec des fichiers habituellement, vous n'avez pas ces problèmes, alors quel est votre problème exactement?


4 Réponses :


1
votes

Parlez-vous de télécommandes acteurs? Une norme acteur est bien sûr une entité intra-jvm. Je ne suis pas au courant d'une implémentation de Nio d'acteurs distants que j'ai peur.


2 commentaires

Les acteurs "locaux" seraient totalement bien


Votre question n'a pas vraiment de sens que je crains que ce soit libellé. Voulez-vous dire "Y a-t-il des implémentations Nio qui utilisent des acteurs?"



1
votes

Bonjour est une option pour vous? BIGDATA (R) est un stockage de stockage et de calcul de l'ordinateur à l'échelle prenant en charge les transactions optionnelles, très élevées de simultanéité et à des tarifs globaux très élevés.

http://sourceforge.net/projects/bigdata/


0 commentaires

6
votes

Si j'ai eu votre question à droite, vous devez non-bloquer io pour les fichiers. J'ai de mauvaises nouvelles pour vous alors.

NIO

Java Nio in Java6 prend en charge uniquement le blocage du fonctionnement lorsque vous travaillez avec des fichiers. Vous remarquerez peut-être cela à partir du fait FILECHANNEL ne met pas en œuvre selectableChannel interface. (NIO prend en charge le mode non bloquant pour les sockets)

Il y a Nio.2 ( JSR-203 ) Spécification visant à Surmontez de nombreuses limites actuelles de Java.io et Nio et de fournir une assistance aux fichiers IO asynchrones sur les fichiers. Nio.2 doit être libéré avec Java 7 autant que je sache.

Ce sont des limites de la bibliothèque Java, alors vous en souffrirez également à Scala.

Acteurs

Les acteurs sont basés sur la Fork-Joindre Cadre de Doug Lea (au moins dans la branche 2.7.x jusqu'à Version 2.7.7 ). Une citation de classe FJTASK < / a>:

Il n'y a rien d'empêchant vous de bloquer dans un fjtak, et très courtes attends / blocs sont complètement bien comporté. Mais fjtasks ne sont pas conçu pour soutenir arbitraire synchronisation car il n'y a aucun moyen suspendre et reprendre des tâches individuelles une fois qu'ils ont commencé à exécuter. FJTasks devrait également être fini dans durée - ils ne doivent pas contenir boucles infinies. FJTasks qui pourrait besoin d'effectuer une action de blocage ou tenir des serrures pendant de longues périodes, ou boucle pour toujours peut plutôt créer normal Java thread Objets qui le feront. FJTasks ne sont tout simplement pas conçus pour Soutenez ces choses.

La bibliothèque FJ est améliorée dans SCALA pour fournir une manière unifiée permettant à un acteur de fonctionner comme un fil ou une tâche basée sur des événements en fonction du nombre de threads de travail et de "activité de la bibliothèque" (vous pouvez trouver une explication dans le rapport technique "< a href = "http://lamamp.epfl.ch/~phaller/doc/haller07coord.pdf" rel = "Nofollow NOREFERRER"> Acteurs qui unifient des threads et des événements "de Philipp Haller et Martin Odersky). < / p>

Solution?

Mais après tout si vous exécutez un code bloquant dans un acteur, il se comporte comme s'il s'agissait d'un fil, alors pourquoi ne pas utiliser de fil ordinaire pour bloquer les lectures et envoyer des événements aux acteurs basés sur des événements de ce fil?


0 commentaires

1
votes

Non pas que je sache, mais vous pourriez probablement obtenir beaucoup de kilométrage de regarder Naggati , un wrapper Scala autour de Apache Mina. MINA est une bibliothèque de réseau qui utilise Nio, Naggati traduit cela en un style de codage Scala.


0 commentaires