No description, website, or topics provided.
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
akka
kontraktor
rest
vertx
.gitignore
README.md
remoting-benchmarks.iml

README.md

remoting-benchmarks

test RPC/messaging point to point performance of various products. currently only

  • kontraktor

  • akka

  • RestExpress (because of latency-dependence of http 1.1 throughput, practically any rest implementation will have similar performance except for extremely crappy ones which manage significantly outstrip http 1.1 keep alive design fail)

  • finagle - wants me to fork and compile their version of thrift just to get something started. No thanks.

  • JBoss Remoting 3 - no documentation. Samples on the internet manage to send byte arrays with >100 lines of code.

  • JBoss Remoting 2 - will be added later, seems more comparable

  • Paralell Universe - current version had build failures and galaxy did not work. Also no buildable examples. Will revisit later.

Pull requests are welcome.

Testcase:

a) fire and forget throughput server.tellSum( a, b ); // server computes sum but does not send a reply

b) send a sumrequest and receive result async.
server.askSum( a, b ).then( result -> ... )

results see http://java-is-the-new-c.blogspot.de/2015/06/dont-rest-revisiting-rpc-performance.html

Note: test has been updated to kontraktor 3.33 (from 3.01) this leads to a performance loss of 30-70% in results (still beating the other frameworks by a huge margin)

Reasons are practical (all of those changes can be reverted by overloading/configuring kontraktor to obtain raw throughput of 3.01-3.14):

  • remotecalls now embed their call arguments serialized (downside: slower encoding, upside: can use "routing remote actors" which route remotecalls without having knowledge of the classes passed through [no downtime when updating a distributed system])
  • switched from fixed-sized/block-if-full queues to dynamically growing unbounded queues. Bounded queues offer a performance advantage however with larger distributed systems a queue overflow easily messes up the whole system by blocking a random actor thread, so the unbounded queues are more foolproof and require less tuning and testing.