Giter Club home page Giter Club logo

Comments (5)

bwplotka avatar bwplotka commented on May 13, 2024

The questions we want to answer:

  • Is it worth to dive in into this NOW
  • Is there any simpler generic solution that will work for all cases? Cannot see any.
  • How we will match stores to sources (just arbitrary ID? external labels?)

from thanos.

fabxc avatar fabxc commented on May 13, 2024

I think adding per-source information to the store node can blow up rather quickly. At least for the gossip state this might get too big. The query nodes could of course periodically fetch that state via a regular API.

At this stage I'm not sure yet though whether that's already valuable. A generous time buffer is probably fine.

What we also don't quite know yet is whether it's actually better to fetch as much data as possible form store or from source nodes.
Given we currently use the rather inefficient query API on the sidecar side, store nodes might be faster, especially once caching is implemented.

What we could do, and what would be rather cheap in terms of messages being sent around is this: after the source nodes shipped a block, they can periodically ask the store nodes for the highest block timestamp they have for the source.
Then the source nodes gossip a max-synced-time timestamp. Query nodes then can reliably know the minimum timestamp they need to hit that source node with.
That would be cater to the use case where we want to minimize data fetched from source nodes.

But seems like it's still a bit early for this optimizations since we don't know for sure yet what we want.

from thanos.

bwplotka avatar bwplotka commented on May 13, 2024

+1 but still: max-synced-time -> needs to be PER Store (:

from thanos.

vishnubraj avatar vishnubraj commented on May 13, 2024

+1

from thanos.

bwplotka avatar bwplotka commented on May 13, 2024

Thanks for bumping. This issue can be now resolved thanks to [--min-time (time slicing)] flags for both Store Gateway and sidecar.

By default both sidecar and store gateway expose all data they have:
However you can:

  • add --min-time to sidecar with e.g 4h value. This will ensure only 4h of of sidecar data is exposed. Useful when you want to use Store Gateway for older queries.
  • add --max-time for store gateway for something like retention minus safety buffer of Prometheus. No min-time for sidecar. This will allow Store GW to not expose anything "younger" than X time. Useful if you want to allow Prometheus to be used rather store Gateway. This however is not ideal as this is a requirement still: local compaction has to be disabled when uploading blocks

from thanos.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.