Sorry, my math was sloppy.  It's not twice as many requests taking longer.
If the probability of replication latency longer than X is Px for both
replicas then,

acks=all will have probability of Px(2-Px) of replication lag longer than X
while
acks=minIsr will be Px


On Wed, Aug 30, 2017 at 5:18 PM, Roger Hoover <roger.hoo...@gmail.com>
wrote:

> Sorry if this is a bit out of left field but can't help wondering...
>
> One way to improve producer performance while still having good guarantees
> would be to allow a setting between acks=1 and acks=all.  We could
> introduce "acks=minIsr".  This is already the guarantee you get when the
> ISR set shrinks below your replication factor.  Why not allow producers to
> get notified when minIsr replication has been acheived even when the ISR
> set is full?
>
> For rep factor == 3 and min.in.sync.replicas == 2 and sizeOf(ISR) == 3:
> * with acks=all, the remote time of each request will be max(lag of 2
> followers) whereas
> * with acks=minIsr, the remote time of each request will be min(lag of 2
> followers)
>
> Whatever your latency distribution is for replication, for any given
> remote time (say 100 ms), twice as many requests take longer than that time
> with acks=all vs acks=minIsr.
>
> Thoughts?
>
> Roger
>
> On Wed, Aug 30, 2017 at 4:52 PM, Apurva Mehta <apu...@confluent.io> wrote:
>
>> Hi Ted, int16 is sufficient. I forgot to specify initially. I have updated
>> the KIP.
>>
>> Thanks for pointing it out!
>> Apurva
>>
>> On Wed, Aug 30, 2017 at 4:43 PM, Ted Yu <yuzhih...@gmail.com> wrote:
>>
>> > For ProduceRequest v4, would int32 or int16 be enough for
>> idempotenceLevel
>> > ?
>> >
>> > Cheers
>> >
>> > On Wed, Aug 30, 2017 at 3:47 PM, Apurva Mehta <apu...@confluent.io>
>> wrote:
>> >
>> > > Thanks Ismael and Jason, I filed a separate KIP to solve the problems
>> > > identified through this discussion. I also incorporated Jason's
>> comments
>> > in
>> > > that document:
>> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> > > 192+%3A+Provide+cleaner+semantics+when+idempotence+is+enabled
>> > >
>> > > Please have a look,
>> > > Apurva
>> > >
>> > > On Tue, Aug 29, 2017 at 3:28 AM, Ismael Juma <ism...@juma.me.uk>
>> wrote:
>> > >
>> > > > Thanks for the proposals. I think they make sense and I also agree
>> with
>> > > > Jason's suggestions. Also, it would be good to include the updated
>> > > > ProduceRequest/Response schema in the KIP.
>> > > >
>> > > > Ismael
>> > > >
>> > > > On Tue, Aug 22, 2017 at 11:42 PM, Jason Gustafson <
>> ja...@confluent.io>
>> > > > wrote:
>> > > >
>> > > > > Thanks Apurva,
>> > > > >
>> > > > > On compatibility: I think the proposal makes sense. It's a pity
>> that
>> > we
>> > > > > can't support idempotence for 0.11.0.0 brokers in the "safe" mode
>> > even
>> > > if
>> > > > > it is supported by the broker. I can already imagine users
>> > complaining
>> > > > > about this, but I guess it's the consequence of missing the
>> impact of
>> > > > that
>> > > > > validation check and not thinking through the ultimate goal of
>> > enabling
>> > > > > idempotence by default. A couple minor comments:
>> > > > >
>> > > > > 1. Instead of "safe," Ismael suggested "requested" as an
>> alternative.
>> > > > That
>> > > > > seems to suggest more clearly that idempotence will only be used
>> when
>> > > the
>> > > > > broker supports it.
>> > > > > 2. Should we deprecate the "true" and "false" options? It's a
>> little
>> > > > weird
>> > > > > long term to support them in addition to the descriptive names.
>> > > > >
>> > > > > On the OutOfOrderSequence proposal: high-level, the design makes
>> > > sense. A
>> > > > > couple questions:
>> > > > >
>> > > > > 1. With this proposal, OutOfOrderSequence means that we must have
>> a
>> > > last
>> > > > > produced offset. Is the idea to expose that in the
>> > > > > OutOfOrderSequenceException so that users know which data was
>> lost?
>> > > > > 2. Previously we discussed duplicate handling. Currently we raise
>> > > > > OutOfOrderSequence if we happen to get a sequence number which is
>> > > earlier
>> > > > > than the sequence numbers we have cached. Alternatively, you
>> > suggested
>> > > we
>> > > > > can return a separate DuplicateError for this case, which clients
>> can
>> > > > > ignore if they do not care about the offset. I think it might make
>> > > sense
>> > > > to
>> > > > > include that here so that the OutOfOrderSequence error is
>> > unambiguous.
>> > > > >
>> > > > > Finally, do you plan to roll these proposals into the current KIP
>> or
>> > do
>> > > > > them separately? Probably makes sense to combine them since they
>> both
>> > > > > require a bump to the ProduceRequest.
>> > > > >
>> > > > > Thanks,
>> > > > > Jason
>> > > > >
>> > > > >
>> > > > >
>> > > > > On Fri, Aug 18, 2017 at 5:18 PM, Apurva Mehta <
>> apu...@confluent.io>
>> > > > wrote:
>> > > > >
>> > > > > > Thanks Jason and Ismael.
>> > > > > >
>> > > > > > The message format problem is an acute one: if we enable
>> > idempotence
>> > > by
>> > > > > > default, the UnsupportedVersionException when writing to topics
>> > with
>> > > > the
>> > > > > > older message format would mean that our prescribed upgrade
>> steps
>> > > would
>> > > > > not
>> > > > > > work. I have detailed the problems and the solutions on this
>> page
>> > > > (linked
>> > > > > > to from the wiki):
>> > > > > >
>> > > > > > https://cwiki.apache.org/confluence/display/KAFKA/
>> > > > > > Kafka+Exactly+Once+-+Dealing+with+older+message+formats+
>> > > > > > when+idempotence+is+enabled
>> > > > > >
>> > > > > > It is worth discussing the solution to the problem proposed
>> there.
>> > If
>> > > > it
>> > > > > is
>> > > > > > conceptually sound, it doesnt' seem too hard to implement.
>> > > > > >
>> > > > > > As far as the other problem of the spurious OutOfOrderSequence
>> > > > problem, I
>> > > > > > have documented a proposed solution here:
>> > > > > >
>> > > > > > https://cwiki.apache.org/confluence/display/KAFKA/
>> > > > > > Kafka+Exactly+Once+-+Solving+the+problem+of+spurious+
>> > > > > > OutOfOrderSequence+errors
>> > > > > >
>> > > > > > This solution is a bit more involved in terms of effort.
>> > > > > >
>> > > > > > I think we cannot make the idempotent producer the default
>> unless
>> > we
>> > > > > solve
>> > > > > > the message format compatibility problem. I would also prefer to
>> > > solve
>> > > > > the
>> > > > > > second problem before making idempotence the default.
>> > > > > >
>> > > > > > I would be interested to hear everyone's thoughts on the two
>> > > solutions
>> > > > > > proposed above.
>> > > > > >
>> > > > > > Thanks,
>> > > > > > Apurva
>> > > > > >
>> > > > > > On Fri, Aug 18, 2017 at 9:24 AM, Jason Gustafson <
>> > ja...@confluent.io
>> > > >
>> > > > > > wrote:
>> > > > > >
>> > > > > > > >
>> > > > > > > >  so this change will break client backward compatibility
>> while
>> > > > > > connecting
>> > > > > > > > to 0.10.X brokers.
>> > > > > > > >  users need to change producer default settings while
>> > connecting
>> > > > > older
>> > > > > > > > brokers.
>> > > > > > >
>> > > > > > >
>> > > > > > > At the moment, I think the answer is yes. The old broker will
>> not
>> > > > > support
>> > > > > > > the InitProducerId request, so the producer will immediately
>> > fail.
>> > > > > > Similar
>> > > > > > > to the handling of old message formats mentioned above, we
>> > probably
>> > > > > need
>> > > > > > to
>> > > > > > > change this so that we just revert to old producer semantics
>> if
>> > the
>> > > > > > broker
>> > > > > > > can't support idempotence.
>> > > > > > >
>> > > > > > > -Jason
>> > > > > > >
>> > > > > > >
>> > > > > > > On Fri, Aug 18, 2017 at 8:48 AM, Manikumar <
>> > > > manikumar.re...@gmail.com>
>> > > > > > > wrote:
>> > > > > > >
>> > > > > > > > >
>> > > > > > > > > 3. The message format requirement is a good point. This
>> > should
>> > > be
>> > > > > > > > mentioned
>> > > > > > > > > in the compatibility section. Users who are still using
>> the
>> > old
>> > > > > > message
>> > > > > > > > > format will get an error after the upgrade, right?
>> > > > > > > > >
>> > > > > > > >
>> > > > > > > >  so this change will break client backward compatibility
>> while
>> > > > > > connecting
>> > > > > > > > to 0.10.X brokers.
>> > > > > > > >  users need to change producer default settings while
>> > connecting
>> > > > > older
>> > > > > > > > brokers.
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Reply via email to