Je sais que golang est très bon en concurrence avec son support intégré, mais il me semble qu'ils ne sont pas distribués, alors quel serait le framework/bibliothèque nous permettant d'écrire des applications producteurs/consommateurs, dans un environnement distribué.
Si vous souhaitez utiliser les concepts de canal de Go dans un programme distribué, consultez peut-être le cadre Go Circuit .
Il fournit un cadre pour exécuter des programmes multi-processus (éventuellement répartis sur plusieurs machines), vous permettant d'utiliser des canaux pour communiquer entre ces processus.
Pas besoin de réinventer la roue ici ... les applications producteurs/consommateurs sont généralement construites à l'aide d'une file d'attente de messages.
Avec cette approche, vous devez essayer de diviser votre problème en petites tâches (et idéalement idempotentes), créer une application qui peut mettre ces tâches en file d'attente, puis avoir une autre application de travail qui peut retirer ces tâches et les exécuter. La mise à l'échelle est facile: ajoutez simplement plus de travailleurs.
Il existe de nombreuses solutions de mise en file d'attente, pour une très bonne solution écrite en Go, jetez un œil à NSQ .
Deux ans de retard mais si quelqu'un d'autre regarde. https://github.com/AsynkronIT/gam
GAM (Go Actor Model) prend en charge à la fois les acteurs comme Akka et Mme Orleans comme Virtual Grains. Les Ms Orleans comme Virtual Grains sont pris en charge via la génération de code Protobuf pour vous donner des messages et des types de grains typés. Voir https://github.com/AsynkronIT/gam/blob/dev/examples/cluster/member/main.gohttps://github.com/AsynkronIT/gam/blob /dev/examples/cluster/shared/protos.proto
Il est également extrêmement rapide, 1 mil + messages distants par seconde.
Pour mémoire NATS est une solution hautes performances pour les systèmes distribués. C'est open source et sous MIT licence. "Le cœur du serveur NATS agit comme un système nerveux central pour la création d'applications distribuées." et il a officiel clients pour Go, C #, Java, Ruby, Python, Node.js et bien plus encore fourni par la communauté.
Akka est basé sur le modèle d'acteur. Pour cela, il existe un framework Nice Go que je vous invite à tester: https://github.com/AsynkronIT/protoactor-go
On dit qu'il a de grandes performances car il prétend passer entre les nœuds:
deux millions de messages par seconde
Alors que Go implémente déjà CSP, Protoactor ajoute: