Akka.Net Work Queues

I have an existing distributed computing environment built on top of MassTransit and RabbitMQ. There is essentially a manager who responds to work based on requests. Each worker will take a certain amount of items based on specifications for a physical machine. Then the employee sends completion messages. It works pretty well and seems to be highly scalable since the only link is the service bus.

I recently rated Akka.Net to make sure it would be a simpler system to implement the same template. Looking at it, I was somewhat confused by what it was used for. It seems that if I wanted to do something like this, the manager would have to know in advance about each employee and send him directly to work.

I believe something is missing because this model does not seem to scale very well.

+7
distributed-computing masstransit
source share
2 answers

Service buses, such as MassTransit, are built as reliable messaging services. Ensuring message delivery is a major concern.

The actors' frames also use messages, but this is the only similarity. Messaging is only average to achieve the goal, and it is not as reliable as in the case of company buses. They are more focused on creating high-performance, easily distributed system topologies centered around actors as the main unit of work. Conceptually, the actor is close to the Active Record template (however, this is a big simplification). They are also very light. You can have millions of them living in the memory of the executing machine.

When it comes to performance, Akka.NET can send more than 30 million messages per second on a single virtual machine (tested on 8 cores) - much more than any service bus, but the characteristics also vary significantly.

Now on the JVM, akka clusters can now grow up to 2400 machines . Unfortunately, we cannot verify what the limits of the .NET implementation are.

You need to decide what you really need: a messaging library, actor structure, or a combination of both.

+13
source share

I agree with @Horusiath's answer. In addition, I would say that in most cases you can replace the servicebus for an actor model messaging system such as akka, but they are not in the same class.

Messages is just one thing Akka offers, and although this is a great feature, I would not say its main feature. When analyzing this as an alternative, you should first examine the benefits of the model itself, and then see how the messaging capabilities are good enough for your use case. You can still use a dedicated external service bus to distribute messages in different clusters and, for example, support akka.net messaging within clusters.

But the fact is that if you decide to use Akka.net, you will not use it only for messaging.

+4
source share

All Articles