Inspirel banner

Programming Distributed Systems with YAMI4

1.2.3 Lightweight Scalability

Many communication solutions are designed around the concept of one-thread-per-connection. This concept makes it relatively easy to implement the communication broker, but at the same time can prove to be prohibitive when the scale of deployment passes some threshold. Another, but similarly non-scalable approach is one-thread-per-data-point, where the number of threads depends on the number of logical data slots that are used for information exchange. Neither of these two is a proper solution for systems where the load is significant - or even when the load is modest on average, but has high variations over time.

YAMI4 is scalable.

The communication in YAMI4 is based on non-blocking I/O, which allows very high connection-level scalability without putting pressure on threading. In fact, there is exactly one thread that drives the I/O events. The number of worker threads in the YAMI4 agent is also fixed at its creation time, which means that the multithreading conditions in the YAMI4 agent do not change over time even when the load is varying.