In 0.8, both the broker and the consumer still need zkclient. So, a zk cluster is still needed.
Thanks, Jun On Tue, Nov 20, 2012 at 8:04 AM, Jason Rosenberg <j...@squareup.com> wrote: > Agreed, I'm not sure I understand the move away from zk. Is it still > required for consumers, and for the brokers themselves? If so, we still > need to deploy a zk cluster anyway. > > Will kafka now support coordinating 1000's of producer clients? > > Jason > > On Tue, Nov 20, 2012 at 7:54 AM, David Arthur <mum...@gmail.com> wrote: > > > > > On Nov 20, 2012, at 12:23 AM, Jun Rao wrote: > > > > > Jason, > > > > > > In 0.8, producer doesn't use zkclient at all. You just need to set > > > broker.list. > > > > This seems like a regression in functionality. For me, one of the > benefits > > of Kafka is only needing to know about ZooKeeper > > > > > A number of things have changed In 0.8. First, number of > > > partitions of a topic is global in a cluster and they don't really > change > > > as new brokers are added. Second, a partition is assigned to multiple > > > brokers for replication and one of the replicas is the leader which > > serves > > > writes. When a producer starts up, it first uses the getMetadata api to > > > figure out the replica assignment for the relevant topic/partition. It > > then > > > issues producer request directly the broker where the leader resides. > If > > > the leader broker goes down, the producer gets an exception and it will > > > re-issue the getMetadata api to obtain the information about the new > > leader. > > > > > > Thanks, > > > > > > Jun > > > > > > On Mon, Nov 19, 2012 at 1:29 PM, Jason Rosenberg <j...@squareup.com> > > wrote: > > > > > >> Well, they do use zk though, to get the initial list of kafka nodes, > and > > >> while zk is available, presumably they do use it to keep up with the > > >> dynamically changing set of kafka brokers, no? You are just saying > > that if > > >> zk goes away, 0.8 producers can keep on producing, as long as the > kafka > > >> cluster remains stable? > > >> > > >> Jason > > >> > > >> On Mon, Nov 19, 2012 at 12:20 PM, Neha Narkhede < > > neha.narkh...@gmail.com > > >>> wrote: > > >> > > >>> In 0.8, producers don't use zk. When producers encounter an error > > >>> while sending data, they use a special getMetadata request to refresh > > >>> the kafka cluster info from a randomly selected Kafka broker, and > > >>> retry sending the data. > > >>> > > >>> Thanks, > > >>> Neha > > >>> > > >>> On Mon, Nov 19, 2012 at 12:10 PM, Jason Rosenberg <j...@squareup.com> > > >>> wrote: > > >>>> Are you saying that in 0.8, producers don't use zkclient? Or don't > > >> need > > >>>> it? How can a producer dynamically respond to a change in the kafka > > >>>> cluster without zk? > > >>>> > > >>>> On Mon, Nov 19, 2012 at 8:07 AM, Jun Rao <jun...@gmail.com> wrote: > > >>>> > > >>>>> Jae, > > >>>>> > > >>>>> In 0.8, producers don't need ZK client anymore. Instead, it uses a > > new > > >>>>> getMetadata api to get topic/partition/leader information from the > > >>> broker. > > >>>>> Consumers still need ZK client. We plan to redesign the consumer > post > > >>> 0.8 > > >>>>> and can keep this in mind. > > >>>>> > > >>>>> Thanks, > > >>>>> > > >>>>> Jun > > >>>>> > > >>>>> On Sun, Nov 18, 2012 at 10:35 PM, Bae, Jae Hyeon < > metac...@gmail.com > > > > > >>>>> wrote: > > >>>>> > > >>>>>> I want to suggest kafka should create only one instance of > ZkClient > > >>>>>> globally because ZkClient is thread safe and it will make many > users > > >>>>>> easily customize kafka source code for Zookeeper. > > >>>>>> > > >>>>>> In our company's cloud environment, it is not recommended to > create > > >>>>>> ZkClient from zkConnect string directly because zookeeper cluster > > >> can > > >>>>>> be dynamically changing. So, I have to create ZkClient using our > > >>>>>> company's own platform library. Because of this requirement, I > can't > > >>>>>> use kafka jar file directly. I can modify and build kafka source > > >> code > > >>>>>> but I have to repeat this work whenever I update kafka version, > > >> pretty > > >>>>>> annoying. > > >>>>>> > > >>>>>> So, my suggestion is, let me pass ZkClient outs of Producer, > > >> Consumer, > > >>>>>> and Broker, as the following example. > > >>>>>> > > >>>>>> Producer<String, String> producer = > > >>>>>> > > >>>>>> > > >>>>> > > >>> > > >> > > > ProducerBuilder.withZkClient(zkClient).build<String,String>(producerConfig); > > >>>>>> > > >>>>>> ConsumerConnector connector = > > >>>>>> Consumer.withZkClient(zkClient).createJavaConsumerConnector(new > > >>>>>> ConsumerConfig(consumerProps)); > > >>>>>> > > >>>>>> KafkaServer is a little more complicated but I believe without > much > > >>>>>> effort we can refactor KafkaServer to be customized with ZkClient. > > >>>>>> > > >>>>>> I really appreciate if this suggestion is accepted and merged to > > >> 0.8. > > >>>>>> If you want me to contribute with this suggestion, please let me > > >> know > > >>>>>> your opinion. If you are positive with this idea, I will > contribute > > >>>>>> very happily. > > >>>>>> > > >>>>>> Thank you > > >>>>>> Best, Jae > > >>>>>> > > >>>>> > > >>> > > >> > > > > >