[ https://issues.apache.org/jira/browse/KAFKA-1895?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15879561#comment-15879561 ]
Onur Karaman commented on KAFKA-1895: ------------------------------------- I think it's worth defining the relation between the two problems mentioned earlier: # no means of access to raw FetchResponse data # lack of a separate IO thread I think Problem 1 is more of a performance problem while Problem 2 is a performance and usability problem (KAFKA-4753 shows that this is can lead to starvation). Addressing Problem 1 doesn't solve Problem 2. Addressing Problem 2 partially solves Problem 1. With a solution to Problem 2, we have the potential to also do the decompression/deserialization in the separate IO thread, removing decompression-in-user-thread performance concerns. But this wouldn't address the decompression-then-recompression performance concerns in MirrorMaker or perhaps some stream processing use-cases. I think we need to solve both problems. > Investigate moving deserialization and decompression out of KafkaConsumer > ------------------------------------------------------------------------- > > Key: KAFKA-1895 > URL: https://issues.apache.org/jira/browse/KAFKA-1895 > Project: Kafka > Issue Type: Sub-task > Components: consumer > Reporter: Jay Kreps > > The consumer implementation in KAFKA-1760 decompresses fetch responses and > deserializes them into ConsumerRecords which are then handed back as the > result of poll(). > There are several downsides to this: > 1. It is impossible to scale serialization and decompression work beyond the > single thread running the KafkaConsumer. > 2. The results can come back during the processing of other calls such as > commit() etc which can result in caching these records a little longer. > An alternative would be to have ConsumerRecords wrap the actual compressed > serialized MemoryRecords chunks and do the deserialization during iteration. > This way you could scale this over a thread pool if needed. -- This message was sent by Atlassian JIRA (v6.3.15#6346)