We—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.9-RC1. This version is focused on Akka HTTP performance improvements as well as introducing the entity streaming feature which we’ll discuss below.
Highlights of the performance improvements include:
- Overall Akka HTTP throughput and transfer rate has been improved by 30-40%
- Performance is on-par or better than Spray.
- Matching it both in raw throughput as well as latency distribution across a spectrum of request rates.
- We measured an overall improvement of ~14% over Spray
- Short lived connections throughput, has been doubled. This case remains the worst-case scenario for Akka HTTP, although is relatively rare in the real world (due to connection pooling),
- Given our EC2 infrastructure (m4.2xlarge instances) the server currently reaches a maximum of ~160.000 “ping / pong” requests per second (measured using 100 concurrent connections).
While we did not have the chance to benchmark using dedicated physical hardware this time, based on experience from previous Spray benchmark rounds we expect the top throughput to be much higher on actual hardware than it is on EC2. One might want to remind oneself the good old post about Spray’s benchmarking results back in 2013 when it won a benchmarking round, achieving 30k reqs/sec on EC2 (m1.large) and 197k reqs/sec on dedicated i7 machines.
This release also features a new feature that we think Streaming API authors will be delighted to see: EntityStreamingSupport.
It makes marshalling of Akka Streams into/from HTTP requests and responses as simple as adding enabling streaming and calling
given tweets was a
Source[Tweet, _]. Learn more about it in the Entity Streaming section of the documentation (for Scala DSL) as well as the same feature for Java DSL.
We would like to encourage Akka HTTP users to try out this Release Candidate and provide feedback or report regressions if you find any. API has remained largely unchanged, though the usual experimental module incompatibility caveat still remains so upgrading should be simple. You may want to refer to the migration guide, as some classes moved to more appropriate places. A stable 2.4.9 should follow shortly after we’ve gathered some community feedback.
Next steps for Akka HTTP
Having that said, we’ll want to officially announce the end-of-life of Spray and confidently request users to upgrade to Akka HTTP. Yes, this means we’ll soon be lifting the experimental flag from Akka HTTP. The exact timeline for this is yet to be decided, as we want to discuss with the community about the best way to go about this.
The other question that is on everyone’s minds is one about HTTP/2. We’d like to announce that we’ll spend some time working on an HTTP/2 Proof-of-Content within a few months. You can follow our sprint plans on akka-meta to be up to date about our sprint plans and progress.
commits added removed 39 5753 1748 Konrad `ktoso` Malawski 11 693 239 Johan Andrén 7 828 295 Endre Sándor Varga 6 776 410 Hawstein 5 171 81 Nafer Sanabria 2 4 4 Kenji Yoshida 2 55 22 Alexander Golubev 2 111 3 Stefano Bonetti 2 41 12 Richard Imaoka 1 25 0 Lev Khomich 1 41 15 Łukasz Dubiel 1 54 22 Ian Clegg 1 37 22 priyanka 1 53 18 Nikolay Donets 1 202 1 Richard S. Imaoka 1 2 3 Jacek Kunicki 1 2 2 abesanderson 1 7 2 Alexei 1 6 6 Thomas Szymanski 1 1 0 Vadim Semenov 1 246 7 Peter Barron 1 16 7 Tim Harper 1 40 0 Ivan Lorenz 1 1 1 Morton Fox 1 1 1 Yaroslav Klymko 1 2 2 Alexandre Tamborrino 1 20 0 Harit Himanshu
In this patch release we closed 43 tickets, and got the help from 24 community contributors, thanks a lot!
The complete list of closed tickets can be found in the 2.4.9-RC1 milestone on GitHub.
– The Akka Team