HTTP Module

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

You can add HTTP module to your project by inserting dependency in pom.xml:

<dependency>
    <groupId>io.datakernel</groupId>
    <artifactId>datakernel-http</artifactId>
    <version>3.0.0-SNAPSHOT</version>
</dependency>
  • 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


You can explore HTTP examples here

This module on GitHub repository

Benchmark

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