[
https://issues.apache.org/jira/browse/KAFKA-2066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15104883#comment-15104883
]
David Jacot commented on KAFKA-2066:
------------------------------------
In the current implementation, FetchResponse contains a map of
FetchResponsePartitionData where each FetchResponsePartitionData contains a
MessageSet. Then, FetchResponseSend is used to directly transfers bytes of each
MessageSet to the channel. This is where the "zero-copy" happens.
Whereas, in the new FetchResponse, messages are represented as a ByteBuffer
which brings all bytes in the user space and therefore breaks the "zero-copy".
In order to keep it, I propose to use Records instead of a ByteBuffer in
FetchResponse and extend the serialization mechanism to support channels. I
need to work out the details but, roughly, It would require to:
1) update FetchResponse (and ProduceRequest to stay consistent);
2) introduce a new Type for Records;
3) add a new method in Type which work a the channel level with a default
implementation which uses the current way; and
4) add some methods in Records interface for the serialization (basically what
is in MessageSet)
4) make MessageSet inherit from Records to make them interoperable
(serialization wise).
[~ijuma], [~granthenke] What do you think?
> Replace FetchRequest / FetchResponse with their
> org.apache.kafka.common.requests equivalents
> --------------------------------------------------------------------------------------------
>
> Key: KAFKA-2066
> URL: https://issues.apache.org/jira/browse/KAFKA-2066
> Project: Kafka
> Issue Type: Sub-task
> Reporter: Gwen Shapira
> Assignee: David Jacot
>
> Replace FetchRequest / FetchResponse with their
> org.apache.kafka.common.requests equivalents.
> Note that they can't be completely removed until we deprecate the
> SimpleConsumer API (and it will require very careful patchwork for the places
> where core modules actually use the SimpleConsumer API).
> This also requires a solution on how to stream from memory-mapped files
> (similar to what existing code does with FileMessageSet.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)