HNHacker News
TopNewBestAskShowJobs

michelrotaru

7 karma · joined March 20, 2016

Project lead and developer of MigratoryData, a highly scalable messaging server for building real-time web and mobile apps.
submissionscomments
michelrotaru··on Kafkorama benchmark: 1M msg/s to 1M clients with <5 ms mean latency (on 1 node)
Kafkorama itself doesn't talk directly to databases — it integrates natively with Kafka. If your DB streams into Kafka (via Debezium or connectors), Kafkorama can expose that data to users, and vice-versa. With the Kafkorama SDKs you can also connect directly to any database (or other system) and either push data into Kafkorama or get data from it, even without Kafka.
michelrotaru··on Kafkorama benchmark: 1M msg/s to 1M clients with <5 ms mean latency (on 1 node)
Kafkorama exposes real-time data from Apache Kafka as Streaming APIs for web, mobile, and IoT apps.

We just benchmarked it:

- 1M messages/second delivered to 1M concurrent WebSocket clients

- Mean end-to-end latency <5 ms (30-minute runs, >1B messages each)

- 609 MB/s outgoing throughput using 512-byte messages

- Achieved both on a single node (vertical) and across a cluster (horizontal) with linear scalability

Blog post: https://kafkorama.com/blog/benchmarking-kafkorama.html

michelrotaru··on 10M Concurrent Websockets
MigratoryData uses the kernel networking stack and it can be configured to run as a non-root user.

Zing JVM is not a requirement for the MigratoryData server. MigratoryData includes by default Oracle JVM, which is currently used in production. With Oracle JVM we currently obtain quite decent Garbage Collection (GC) pauses for Internet applications, so the latency is not too much impacted by the GC pauses which occur from time to time.

Zing JVM could be used in certain projects to reduce near to zero those GC pauses, so the latency is not impacted even in the worst case, when a GC occurs. So, if Zing JVM is necessary for such a ultra low latency application, Zing JVM should be licensed separately.

michelrotaru··on 10M Concurrent Websockets
Thanks for the mention, Tim.

In that benchmark, pings are actually 512-byte messages. So, MigratoryData published 200,000 messages/sec to 12 million clients at a total bandwidth of over 1 Gbps.

BTW that benchmark result has been improved recently in terms of latency. The JVM Garbage Collection pauses were almost eliminated using Zing JVM from Azul Systems and the MigratoryData server was able to publish almost 1 Gbps to 10 million concurrent clients with an average end-to-end latency of 15 milliseconds, the 99th percentile of 24 milliseconds, and the maximum latency of 126 milliseconds (computed on almost 2 billion messages):

https://t.co/MVjLDLWS3U

Mihai