Vertical scaling is today a major issue when writing server code. Threads and locks are the traditional approach to making full utilization of fat (multi-core) computers, but the result is code that is difficult to maintain and which to often does not run much faster than single-threaded code.
Actors make good use of fat computers but tend to be slow as messages are passed between threads. Attempts to optimize actor-based programs results in actors with multiple concerns (loss of modularity) and lots of spaghetti code.
The approach used by JActor is to minimize the messages passed between threads by executing the messages sent to idle actors on the same thread used by the actor which sent the message. Message buffering is used when messages must be sent between threads, and two-way messaging is used for implicit flow control. The result is an approach that is easy to maintain and which, with a bit of care to the architecture, provides extremely high rates of throughput.
On an Intel i7, between 80 and 200 million messages, depending on the mode of transport, can be passed between actors in the same JVM per second–several orders of magnitude faster than comparable actor frameworks.
A fully durable in-memory database was also developed as a proof of concept, which processes transactions at a rate of 1 million per second when using an SSD for the backing store. Again, this is orders of magnitude greater than comparable approaches.*
Our products are Open Source (LGPL). We offer both consulting and seminars to help you best leverage our products.
Test Environment: i7-3770 @ 3.40 GHz ASUS P8Z77-M Motherboard 16 GB Corsair DDR3 1600 MHz RAMVertex 3 SATA III SSD