Hi All:

Bumping this thread for more discussion. I’d really appreciate more
suggestions on this optional feature for tiered storage. Thanks a lot !

Regards

Jian

jian fu <[email protected]> 于2025年12月4日周四 21:54写道:

> Hi All:
>
> I updated the KIP content according to Kamal and Haiying's discussion:
> 1  Explicitly emphasized that this is a topic-level optional feature
> intended for users who prioritize cost.
> 1  Added  the cost-saving calculation example
> 2  Added  additional details about the operational drawback of this
> feature: need extra disk expansion for the case: long time remote
> storage's outage.
> 3  Added  the scenarios where it may not be very suitable/ beneficial to
> enable the feature such as the topic's ratio for remote:local retention is
> a very big value.
>
> Thanks again for joining the discussion.
>
> Regards
> Jian
>
> jian fu <[email protected]> 于2025年12月2日周二 20:27写道:
>
>> Hi Kamal:
>>
>> I think I understand what you mean now. I’ve updated the picture in the
>> link(https://github.com/apache/kafka/pull/20913#issuecomment-3601274230)
>> .
>> Could you help double-check whether we’ve reached the same understanding?
>> In short. the drawback of this KIP is that, during a long time remote
>> storage outage. it will occupied more disk. The max value is the redundant
>> part we saving.
>> Thus. After the outage recovered. It will come back to the beginning.
>> Pls help to correct me if my understanding is wrong!  Thanks again.
>>
>> Regards
>> Jian
>>
>> Kamal Chandraprakash <[email protected]> 于2025年12月2日周二
>> 19:29写道:
>>
>>> The already uploaded segments are eligible for deletion from the broker.
>>> So, when remote storage is down,
>>> then those segments can be deleted as per the local retention settings
>>> and
>>> new segments can occupy those spaces.
>>> This provides more time for the Admin to act when remote storage is down
>>> for a longer time.
>>>
>>> This is from a reliability perspective.
>>>
>>> On Tue, Dec 2, 2025 at 4:47 PM jian fu <[email protected]> wrote:
>>>
>>> > Hi Kamal and Haiying Cai:
>>> >
>>> > maybe you notice that my kafka clusters set 1day local + 3 days-7 days
>>> > remote. thus  Haiying Cai‘s configure is 3 hours local + 3 days remote.
>>> >
>>> > I can explain more about my configure.
>>> > I try to avoid the latency for some delay consumer to access the
>>> remote.
>>> > Maybe some applications may encounter some unexpected issue. but we
>>> need to
>>> > give enough time to handle it. In the period, we don't want the
>>> consumer to
>>> > access the remote to hurt the whole kafka clusters. So one day is our
>>> > expectation.
>>> >
>>> > I  saw one statement in  Haiying Cai  KIP1248:
>>> > " Currently, when a new consumer or a fallen-off consumer requires
>>> fetching
>>> > messages from a while ago, and those messages are no longer present in
>>> the
>>> > Kafka broker's local storage, the broker must download the message
>>> from the
>>> > remote tiered storage and subsequently transfer the data back to the
>>> > consumer.   "
>>> > Extend the local retention time is how we try to avoid the issue
>>> (Here, we
>>> > don't consider the case one new consumer use the earliest strategy to
>>> > consume. it is not often happen in our cases.)
>>> >
>>> > So. based my configure. I will see there is one day's duplicated
>>> segment
>>> > wasting in remote storage. Thus I don't use them for real time analyst
>>> or
>>> > care about the fast reboot or some thing else.  So propose this KIP to
>>> take
>>> > one topic level optional feature to help us to reduce waste and save
>>> money.
>>> >
>>> > Regards
>>> > Jian
>>> >
>>> > jian fu <[email protected]> 于2025年12月2日周二 18:42写道:
>>> >
>>> > > Hi  Kamal:
>>> > >
>>> > > Thanks for joining this discussion. Let me try to classify my
>>> understands
>>> > > for your good questions:
>>> > >
>>> > > 1  Kamal : Do you also have to update the RemoteCopy lag segments and
>>> > > bytes metric?
>>> > >     Jian:  The code just delay the upload time for local segment. So
>>> it
>>> > > seems there is no need to change any lag segments or metrics. right?
>>> > >
>>> > > 2   Kamal :  As Haiying mentioned, the segments get eventually
>>> uploaded
>>> > to
>>> > > remote so not sure about the
>>> > > benefit of this proposal. And, remote storage cost is considered as
>>> low
>>> > > when compared to broker local-disk.
>>> > >      Jian: The cost benefit is about the total size for occupied.
>>> Take
>>> > AWS
>>> > > S3 as example. Tiered price for: 1 GB is 0.02 USD (You can refer to
>>> > > https://calculator.aws/#/createCalculator/S3).
>>> > >   It is cheaper than local disk. So as I mentioned that the saving
>>> money
>>> > > depend on the ratio local vs remote retention time.  If your set the
>>> > remote
>>> > > storage time as a long time. The benefit is few, It is just avoiding
>>> the
>>> > > waste instead of cost saving.
>>> > >   So I take it as topic level optional configure instead of default
>>> > > feature.
>>> > >
>>> > > 3  Kamal:   It provides some cushion during third-party object
>>> storage
>>> > > downtime.
>>> > >      Jian:   I draw one picture to try to under the logic(
>>> > > https://github.com/apache/kafka/pull/20913#issuecomment-3601274230).
>>> You
>>> > > can help to check if my understanding is right. I seemed that no
>>> > difference
>>> > > for them. So for this question. maybe we need to discuss more about
>>> it.
>>> > The
>>> > > only difference maybe we may increase a little local disk for temp
>>> due to
>>> > > the delay for upload remote. So in the original proposal. I want to
>>> > upload
>>> > > N-1 segments. But it seems the value is not much.
>>> > >
>>> > > BTW. I want to classify one basic rule: this feature isn't to change
>>> the
>>> > > default behavior. and the saving amount is not very big value in all
>>> > cases.
>>> > > It is suitable for part of topic which set a low ratio for
>>> remote/local
>>> > > such as 7days/1days or 3days/1day
>>> > > At the last. Thanks again for your time and your comments. All the
>>> > > questions are valid and good for us to thing more about it.
>>> > >
>>> > > Regards
>>> > > Jian
>>> > >
>>> > >
>>> > > Kamal Chandraprakash <[email protected]> 于2025年12月2日周二
>>> > > 17:41写道:
>>> > >
>>> > >> 1. Do you also have to update the RemoteCopy lag segments and bytes
>>> > >> metric?
>>> > >> 2. As Haiying mentioned, the segments get eventually uploaded to
>>> remote
>>> > so
>>> > >> not sure about the
>>> > >> benefit of this proposal. And, remote storage cost is considered as
>>> low
>>> > >> when compared to broker local-disk.
>>> > >> It provides some cushion during third-party object storage downtime.
>>> > >>
>>> > >>
>>> > >> On Tue, Dec 2, 2025 at 2:45 PM Kamal Chandraprakash <
>>> > >> [email protected]> wrote:
>>> > >>
>>> > >> > Hi Jian,
>>> > >> >
>>> > >> > Thanks for the KIP!
>>> > >> >
>>> > >> > When remote storage is unavailable for a few hrs, then with lazy
>>> > upload
>>> > >> > there is a risk of the broker disk getting full soon.
>>> > >> > The Admin has to configure the local retention configs properly.
>>> With
>>> > >> > eager upload, the disk utilization won't grow
>>> > >> > until the local retention time (expectation is that all the
>>> > >> > passive segments are uploaded). And, provides some time
>>> > >> > for the Admin to take any action based on the situation.
>>> > >> >
>>> > >> > --
>>> > >> > Kamal
>>> > >> >
>>> > >> > On Tue, Dec 2, 2025 at 10:28 AM Haiying Cai via dev <
>>> > >> [email protected]>
>>> > >> > wrote:
>>> > >> >
>>> > >> >> Jian,
>>> > >> >>
>>> > >> >> Understands this is an optional feature and the cost saving
>>> depends
>>> > on
>>> > >> >> the ratio between local.retention.ms and total retention.ms.
>>> > >> >>
>>> > >> >> In our setup, we have local.retention set to 3 hours and total
>>> > >> retention
>>> > >> >> set to 3 days, so the saving is not going to be significant.
>>> > >> >>
>>> > >> >> On 2025/12/01 05:33:11 jian fu wrote:
>>> > >> >> > Hi Haiying Cai,
>>> > >> >> >
>>> > >> >> > Thanks for joining the discussion for this KIP. All of your
>>> > concerns
>>> > >> are
>>> > >> >> > valid, and that is exactly why I introduced a topic-level
>>> > >> configuration
>>> > >> >> to
>>> > >> >> > make this feature optional. This means that, by default, the
>>> > behavior
>>> > >> >> > remains unchanged. Only when users are not pursuing faster
>>> broker
>>> > >> boot
>>> > >> >> time
>>> > >> >> > or other optimizations — and care more about cost — would they
>>> > enable
>>> > >> >> this
>>> > >> >> > option to some topics to save resources.
>>> > >> >> >
>>> > >> >> > Regarding cost self: the actual savings depend on the ratio
>>> between
>>> > >> >> local
>>> > >> >> > retention and remote retention. In the KIP/PR, I provided a
>>> test
>>> > >> >> example:
>>> > >> >> > if we configure 1 day of local retention and 2 days of remote
>>> > >> >> retention, we
>>> > >> >> > can save about 50%. And realistically, I don't think anyone
>>> would
>>> > >> boldly
>>> > >> >> > set local retention to a very small value (such as minutes)
>>> due to
>>> > >> the
>>> > >> >> > latency concerns associated with remote storage. So in short,
>>> the
>>> > >> >> feature
>>> > >> >> > will help reduce cost, and the amount saved simply depends on
>>> the
>>> > >> ratio.
>>> > >> >> > Take my company's usage as real example, we configure most of
>>> the
>>> > >> >> topics: 1
>>> > >> >> > day of local retention and 3–7 days of remote storage (3 days
>>> for
>>> > >> topic
>>> > >> >> > with log/metric usage, 7 days for topic with normal business
>>> > usage).
>>> > >> >> and we
>>> > >> >> > don't care about the boot speed and some thing else, This KIP
>>> > allows
>>> > >> us
>>> > >> >> to
>>> > >> >> > save 1/7 to 1/3 of the total disk usage for remote storage.
>>> > >> >> >
>>> > >> >> > Anyway, this is just a topic-level optional feature which don't
>>> > >> reject
>>> > >> >> the
>>> > >> >> > benifit for current design. Thanks again for the discussion. I
>>> can
>>> > >> >> update
>>> > >> >> > the KIP to better classify scenarios where this optional
>>> feature is
>>> > >> not
>>> > >> >> > suitable. Currently, I only listed real-time analytics as the
>>> > >> negative
>>> > >> >> > example.
>>> > >> >> >
>>> > >> >> > Welcome further discussion to help make this KIP more complete.
>>> > >> Thanks!
>>> > >> >> >
>>> > >> >> > Regards,
>>> > >> >> > Jian
>>> > >> >> >
>>> > >> >> > Haiying Cai via dev <[email protected]> 于2025年12月1日周一
>>> > 12:40写道:
>>> > >> >> >
>>> > >> >> > > Jian,
>>> > >> >> > >
>>> > >> >> > > Thanks for the contribution.  But I feel the uploading the
>>> local
>>> > >> >> segment
>>> > >> >> > > file to remote storage ASAP is advantageous in several
>>> scenarios:
>>> > >> >> > >
>>> > >> >> > > 1. Enable the fast bootstrapping a new broker.  A new broker
>>> > >> doesn’t
>>> > >> >> have
>>> > >> >> > > to replicate all the data from the leader broker, it only
>>> needs
>>> > to
>>> > >> >> > > replicate the data from the tail of the remote log segment
>>> to the
>>> > >> >> tail of
>>> > >> >> > > the current end of the topic (LSO) since all the other data
>>> are
>>> > in
>>> > >> the
>>> > >> >> > > remote tiered storage and it can download them later lazily,
>>> this
>>> > >> is
>>> > >> >> what
>>> > >> >> > > KIP-1023 trying to solve;
>>> > >> >> > > 2. Although nobody has proposed a KIP to allow a consumer
>>> client
>>> > to
>>> > >> >> read
>>> > >> >> > > from the remote tiered storage directly, but this will helps
>>> the
>>> > >> >> > > fall-behind consumer to do catch-up reads or perform the
>>> > backfill.
>>> > >> >> This
>>> > >> >> > > path allows the consumer backfill to finish without
>>> polluting the
>>> > >> >> broker’s
>>> > >> >> > > page cache.  The earlier the data is on the remote tiered
>>> > storage,
>>> > >> >> the more
>>> > >> >> > > advantageous it is for the client.
>>> > >> >> > >
>>> > >> >> > > I think in your Proposal, you are delaying uploading the
>>> segment
>>> > >> but
>>> > >> >> the
>>> > >> >> > > file will still be uploaded at a later time, I guess this can
>>> > >> saves a
>>> > >> >> few
>>> > >> >> > > hours storage cost for that file in the remote storage, not
>>> sure
>>> > >> >> whether
>>> > >> >> > > that is a significant cost saved (if the file needs to stay
>>> in
>>> > >> remote
>>> > >> >> > > tiered storage for several days or weeks due to retention
>>> > policy).
>>> > >> >> > >
>>> > >> >> > > On 2025/11/19 13:29:11 jian fu wrote:
>>> > >> >> > > > Hi everyone, I'd like to start a discussion on KIP-1241,
>>> the
>>> > goal
>>> > >> >> is to
>>> > >> >> > > > reduce the remote storage. KIP:
>>> > >> >> > > >
>>> > >> >> > >
>>> > >> >>
>>> > >>
>>> >
>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1241%3A+Reduce+tiered+storage+redundancy+with+delayed+upload
>>> > >> >> > > >
>>> > >> >> > > > The Draft PR:   https://github.com/apache/kafka/pull/20913
>>> > >> >> Problem:
>>> > >> >> > > > Currently,
>>> > >> >> > > > Kafka's tiered storage implementation uploads all
>>> non-active
>>> > >> local
>>> > >> >> log
>>> > >> >> > > > segments to remote storage immediately, even when they are
>>> > still
>>> > >> >> within
>>> > >> >> > > the
>>> > >> >> > > > local retention period.
>>> > >> >> > > > This results in redundant storage of the same data in both
>>> > local
>>> > >> and
>>> > >> >> > > remote
>>> > >> >> > > > tiers.
>>> > >> >> > > >
>>> > >> >> > > > When there is no requirement for real-time analytics or
>>> > immediate
>>> > >> >> > > > consumption based on remote storage. It has the following
>>> > >> drawbacks:
>>> > >> >> > > >
>>> > >> >> > > > 1. Wastes storage capacity and costs: The same data is
>>> stored
>>> > >> twice
>>> > >> >> > > during
>>> > >> >> > > > the local retention window
>>> > >> >> > > > 2. Provides no immediate benefit: During the local
>>> retention
>>> > >> period,
>>> > >> >> > > reads
>>> > >> >> > > > prioritize local data, making the remote copy unnecessary
>>> > >> >> > > >
>>> > >> >> > > >
>>> > >> >> > > > So. this KIP is to reduce tiered storage redundancy with
>>> > delayed
>>> > >> >> upload.
>>> > >> >> > > > You can check the test result example here directly:
>>> > >> >> > > >
>>> > >> https://github.com/apache/kafka/pull/20913#issuecomment-3547156286
>>> > >> >> > > > Looking forward to your feedback! Best regards, Jian
>>> > >> >> > > >
>>> > >> >> >
>>> > >> >
>>> > >> >
>>> > >>
>>> > >
>>> > >
>>> > >
>>> > >
>>> >
>>>
>>
>>
>>
>>
>>
>
>
>

-- 
Regards

Fu.Jian

Reply via email to