HTTP Module

HTTP module enables users to build HTTP servers and clients that take full advantage of asynchronous I/O.

  • HTTP Server - ideal for web services which require async I/O (like using RPC or calling other web services for serving requests)
  • HTTP Client - ideal for high-performance clients of web services with a large number of parallel HTTP requests
  • up to ~238K of requests per second per core
  • ~50K of concurrent HTTP connections
  • Low GC pressure
  • Built on top of Eventloop module


  1. HTTP Server
  2. HTTP Client

To run the examples, you should execute those three lines in the console in appropriate folder:

$ git clone
$ cd datakernel-examples/examples/http
$ mvn clean package exec:java -Dexec.mainClass=io.datakernel.examples.HttpServerExample
$ # OR
$ mvn clean package exec:java -Dexec.mainClass=io.datakernel.examples.HttpClientExample
$ # OR
$ mvn clean package exec:java -Dexec.mainClass=io.datakernel.examples.HttpMultithreadedServerExample


We have compared our single-threaded HTTP server performance with Nginx (default settings) using ApacheBench tool.

Results along with the parameters and some additional info are presented in the table below.

ApacheBench parameters Method Additional info Requests per second
Nginx DataKernel HTTP
default GET Response body size: 820 bytes 26,592 25,270
-k 41,183 84,163
-c 100 -k 116,917 238,393
-c 100 POST Request/response body size: 16 bytes 53,816 59,258