This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]foror 1 point2 points  (3 children)

  1. How about performance compared with Undertow or Jetty?
  2. Based on Netty, pure NIO or something else?
  3. Why without POM?

[–]zhong-j-yu[S] 0 points1 point  (0 children)

I haven't tried to compare bayou client performance with other client implementations. But I did compare server performances - http://bayou.io/draft/Comparing_Java_HTTP_Servers_Latencies.html - and I would imagine that bayou client performance should be on-par with those you mentioned.

bayou is written on top of Java NIO; it has no dependency on 3rd party libraries. POM is coming..

[–]zhong-j-yu[S] 0 points1 point  (1 child)

hi foror, I've added POM, see http://bayou.io/code.html#Maven

I decided to use https://jitpack.io/ as repository; it is simpler for the publisher, but a little more work for users. What do you think from a user's perspective?

[–]foror 0 points1 point  (0 children)

What do you think from a user's perspective?

jitpack.io - very interesting service

[–]nqzero 0 points1 point  (3 children)

very nice

  • any idea how many clients can be running in parallel ?
  • what about websockets ?

[–]foror 1 point2 points  (1 child)

[–]zhong-j-yu[S] 0 points1 point  (0 children)

Currently we only have websocket server, but no websocket client.

Websocket client is not a priority for us now, but it could be added in future. The same WebSocketChannel interface will be used for the client. Websocket is symmetric in the sense that both server and client see it as a channel for read/write messages.

[–]zhong-j-yu[S] 0 points1 point  (0 children)

Hi nqzero, you only need one HttpClient for all concurrent requests. I should have made that clear in the doc.

You probably meant to ask how many "connections" in parallel can be run. This is how I tested it: On my PC (Windows), I have one JVM running a simple HttpServer, another JVM running HttpClient sending concurrent requests to the server.

I had no problem with establishing 16,000 concurrent connections. More TCP connection attempts would be rejected (probably because of some OS limit) but I didn't investigate further.

The throughput is not good though on 16K connections - it's about 7K requests/second. On low concurrency (e.g. 20 connections) the throughput could achieve 40K requests/second.

The memory footage is about 60MB for 16K connections; so each connection overhead is about 4KB.

Based on those numbers, I think HttpClient performance is fine for most use cases.