I can elaborate further on the wiki tomorrow. The term in-flight in my
edit is a bit incomplete. It refers to what's "in-flight" on the
broker-side for actual handling - that is what provides the ordering
guarantee. The client can continue to write requests to the socket
even while the broker is handling a preceding request since those
requests will sit in the socket buffer. So there is still significant
benefit in using non-blocking IO/request pipelining on the client-side
to achieve high throughput.

Thanks,

Joel


On Thu, Nov 21, 2013 at 11:33 PM, Magnus Edenhill <mag...@edenhill.se> wrote:
> Hi,
>
> I noticed Joel Koshy's update to the protocol guide wiki at
> https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
>
> This sentence was added:
> "The broker allows only a single in-flight request per connection in order
> to guarantee this ordering"
>
> Adding such a constraint for the number of in-flight requests is a
> performance killer, and it seems odd to do so at this point in time given
> the number of third-party clients implemented - at least some of them
> hopefully relying on multiple requests in flight being properly supported.
>
> It is also in contrast with the previous sentence:
> "The server guarantees that on a single TCP connection, requests will be
> processed in the order they are sent and responses will return in that
> order as well."
>
>
> So, can you elaborate on this new constraint?
> In which cases with multiple in-flight requests may reordering reoccur?
>
> Regards,
> Magnus

Reply via email to