Currently I am working on migrating TIBCO RV to NATS IO for a project. I am curious to know what internal architecture makes NATS IO to be superior interms of performance as they claim in their website http://nats.io/about/. I couldn't find any resources online explaining internals of nats. Could anyone please help me on this?.
-
Might be helpful to link to the relevant docs for TIBCO RV and NATS IO – Jamie Starke Sep 27 '17 at 03:36
3 Answers
There's a good overview referenced in the protocol documentation to a presentation given by Derek Collison, the creator of NATS. He covers some of the highly performant areas of NATS including the zero allocation byte parser, subject management algorithms, and golang optimizations.
NATS is open source - implementation details can be found in the gnatsd repository. The protocol parser and the subject handling would be a few areas to look at.

- 76
- 2
I was heavily involved in both RV and in NATS of course. I am not claiming that NATS is faster than RV. Although I designed and built both, I have not tested RV in many years for any type of performance. NATS should compare well, is OSS of course and has a simple TEXT based protocol vs a binary protocol for RV. Also NATS is an overlay design using TCP/IP, similar to TIBCO's EMS which I also designed, however RV can use multicast (PGM) or reliable broadcast. So RV will be more efficient at large fanout in most cases.

- 161
- 4
In general messaging system's performance is tied to 3 simple things IMO.
How many messages can be processed per IO call or jump from user to kernel space.
How fast can you route messages for distributions, e.g. subject distributors.
How efficient is the system at copying data to achieve #1 coalescing messages.

- 161
- 4