GithubHelp home page GithubHelp logo

Comments (6)

mgravell avatar mgravell commented on June 16, 2024 1

@jodydonetti you might be interested in this; am I on entirely the wrong path here? would any of this be useful to you? is any of it "that's so close to being useful, but not quite" ?

from aspnetcore.

mgravell avatar mgravell commented on June 16, 2024 1

@sebastienros might also be of interest to you

from aspnetcore.

jodydonetti avatar jodydonetti commented on June 16, 2024

Hi @mgravell , I'll look into this later today, can't wait to see the details of this 😬
Will update asap.

from aspnetcore.

verdie-g avatar verdie-g commented on June 16, 2024

I understand this proposal is to receive invalidations from the distributed cache layer (aka L2) and would not support invalidations through Kafka or "SQL polling". That's an available feature on Redis but is that a common feature from other NoSQL database systems? With the HybridCache proposal (#53255), what exactly would be the blocker to implement a Redis channel-based invalidation mechanism?

from aspnetcore.

mgravell avatar mgravell commented on June 16, 2024

@verdie-g the entire point is to provide an abstraction upon which any L2 could provide invalidations, if it is so capable. The same thing would be possible in SQL polling by adding a couple of tables - one for the tag last-known expiration state, and one for some backlog of invalidations (the latter could be fed via a trigger or explicit code), and having a periodic timer that simply checks for new data (using an incrementing counter) - that could be every N seconds, configurable. There may also be some SQL mechanism involving SQL service-broker queues, but I don't think (from memory) that this has the correct multi-receiver semantics.

I'm not a Kafka expert (I've simply never had cause to dabble), but assuming that Kafka queues support a mode that allows multiple recipients to receive the same message, such a queue could absolutely be used as the backbone for invalidation for an L2 backend that wanted to do so. For comparison, the same intent could also probably be described by Redis "streams", which are, IIRC, broadly similar to Kafka queues.

With the HybridCache proposal (#53255), what exactly would be the blocker to implement a Redis channel-based invalidation mechanism?

Not fully sure I understand the question, but the biggest blocker is the lack of an abstraction API that allows the L2 backend (currently described by IDistributedCache) to communicate the intent of a channel-based invalidation mechanism that HybridCache can then consume. Which is exactly the gap that this proposal is trying to plug ;p

from aspnetcore.

dotnet-policy-service avatar dotnet-policy-service commented on June 16, 2024

Thank you for submitting this for API review. This will be reviewed by @dotnet/aspnet-api-review at the next meeting of the ASP.NET Core API Review group. Please ensure you take a look at the API review process documentation and ensure that:

  • The PR contains changes to the reference-assembly that describe the API change. Or, you have included a snippet of reference-assembly-style code that illustrates the API change.
  • The PR describes the impact to users, both positive (useful new APIs) and negative (breaking changes).
  • Someone is assigned to "champion" this change in the meeting, and they understand the impact and design of the change.

from aspnetcore.

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.