Hacker News new | ask | show | jobs
Show HN: Go Actor Model, fast distributed actors for Golang (github.com)
115 points by RogerAlsing 3695 days ago
6 comments

Help wanted, There are a few easy to implement tasks here if anyone is interested in getting involved.

https://github.com/rogeralsing/gam/issues?q=is%3Aissue+is%3A...

Totally cool. Alsing and Stannard did a great work on Akka.NET, and I'm happy to see the OP making inroads into Golang projects. How does the message throughput compare between GAM and Akka.NET?

I might as well start contributing to this project.

Akka.NET suffers from problems with the Helios transport right now, I don't think the Helios transport do more than a few thousand messages per sec ATM. That being said, there is a new transport coming in Akka.NET 1.5 where we do 100 000 messages per sec in our experiments, so that is a huge improvement.

But that is still more than 8 times slower than GAM.

The reason for Akka.NET (and JVM Akka) having trouble in this area is that every message comes with a sender ActorRef that needs to be resolved. even if the target doesn't touch that ActorRef. The serialization mechanism there is also a lot more complicated.

I've been wondering where you've been lately Roger :p

Releasing Helios 2.0 today, which is a big improvement over the previous version.

Stress test results across 350 connections (ramped up over a 3-5 minutes, each connection doing 250 msg / s): https://gist.github.com/Aaronontheweb/ab3ae953239de81752c357...

Also includes 1 million message throughput tests for duplex and inbound-only receive. On the inbound side we peak out at about 250k / s on a single connection. Write side is slower at the moment due to lack of batching on flush, but that'll be fixed.

So I have little real experience with Actor-based programming (although I'm looking into Pony so that might change soon). Are there situations where it would be elegant to combine the two models? I'm aware of, for example, GALS[0] but that isn't quite what differentiates the two approached to concurrency, is it?

https://en.wikipedia.org/wiki/Globally_asynchronous_locally_...

This is very exciting, thank you for building this.

Quick question on your sample codes, if actor is capable of receiving async messages, then channel is basically redundant, right?

What is the use case on using both, it looks like I can consume messages directly from the actor. I am not clear on that.

I'll just leave this here

http://asfarley.github.io/bashactors/

hehe that one shouldnt be checked in, it's just for me to see that proto contracts hold between edits.