[ 
https://issues.apache.org/jira/browse/KAFKA-336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13276873#comment-13276873
 ] 

Jay Kreps commented on KAFKA-336:
---------------------------------

Awesome. Couple of thoughts:

1. It would be good to seperate the tests into a serialization test that just 
serializes the request and deserializes it and a seperate test that actually 
sends to the server. We have found having the simple in-process test helpful 
since it is easier to debug.

2. Ideally we should also add a compatability test that saves out some binary 
data to ensure we don't break compatability in the future by accident. Neha has 
details on this. We could wait and do this later when we have everything 
working in case we need to make changes.

3. Broker is spelled as Borker

4. Can you change HashMap[Tuple2[String, Int] in the method signature to 
Map[(String,Int)], means the same but is a little better style.

I recommend we not create another SimpleConsumer wrapper, but instead make a 
base KafkaConnection that takes any API object, and use that to implement all 
the clients. These internal things then won't need a special wrapper they can 
just directly use the KafkaConnection. This also means that in the future if 
the consumer needs to send a produce request (either for offset storage or 
audit trail) it doesn't need a separate tcp connection.

One meta comment: these precisely versioned, compact, typed request objects are 
okay for public service apis because we should make them so rarely and the 
really important thing is compatability and efficiency. For these internal 
broker-to-broker apis should we instead just create a generic 
BrokerCommandRequest/Response which just holds a JSON string? This might be 
easier to evolve. I think scala has some (fairly junky) json parser included. 
This might be easier to evolve. Or maybe having this inconsistency is not worth 
it. It really depends on how many of these we think we will have.
                
> add an admin RPC to communicate state changes between the controller and the 
> broker
> -----------------------------------------------------------------------------------
>
>                 Key: KAFKA-336
>                 URL: https://issues.apache.org/jira/browse/KAFKA-336
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: core
>    Affects Versions: 0.8
>            Reporter: Jun Rao
>            Assignee: Yang Ye
>             Fix For: 0.8
>
>         Attachments: controller_broker_RPC.patch
>
>   Original Estimate: 252h
>  Remaining Estimate: 252h
>
> Based on the discussion in 
> https://cwiki.apache.org/confluence/display/KAFKA/kafka+Detailed+Replication+Design+V3
>  , it's more efficient to communicate state change commands between the 
> controller and the broker using a direct RPC than via ZK. This ticket will be 
> implementing an admin RPC client for the controller to send state change 
> commands.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to