Apache Kafka is a common choice for inter-service communication. Kafka facilitates the parallel processing of messages and is a good choice for log aggregation. Kafka claims to be low latency, high throughput . However, is Kafka fast enough for many microservices applications in the cloud? When I wrote Chronicle Queue Open Source my aim was to develop a messaging framework with microsecond latencies, and banks around the world have adopted it for use in their latency-sensitive trading systems. In this article, I will describe how Kafka does not scale in terms of throughput as easily as Chronicle Queue for microservices applications. As a teaser, I will show you this chart showing that Chronicle Queue is around 750 times faster even for lower throughput. Visualising delay as a distance In order to illustrate the difference, let me start with an analogy. Light travels through optic fibre and copper at about two thirds the speed of light in a vacuum, so to appreciate very short de
Thank you for the puzzle!
ReplyDeleteUnfortunately, I couldn't clearly understand the source of such behaviour. I suppose the the reason is in a way how String Constant Pool selects constants on a base of hashCode() execution. But I'm not sure.
So will wait for your solution :)
P.S. could you, please, allow comments and RSS subscription on your GitHub blog?
I read that internally String Constant Pool uses Hashtable for storing strings. So looks like equal hashCode() values isn't enough for getting puzzle effect. Also, at the first sight, external synchs on "bb" and "cC" really work on String instance wrappers not on internally char[] arrays...
DeleteSo the puzzle is really puzzle :)