On Tue, May 7, 2013 at 12:45 PM, John Nielsen <[email protected]> wrote: > On Jan 22, 2013, at 9:41 AM, Wido den Hollander <[email protected]> wrote: > >> To improve performance I still think using a proxy like Varnish or Nginx can >> help a lot. >> >> Now, when running just one Varnish instance which does loadbalancing over >> multiple RGW instances is not a real problem. When it sees a PUT operation >> it can "purge" (called banning in Varnish) the object from it's cache. >> >> When looking at the scenario where you have multiple caches you run into the >> cache-consistency problem. If an object is modified the caches are not >> notified and will continue to serve an outdated object. >> >> Looking at the Last-Modified header is not an option since the cache will >> not contact RGW when serving out of it's cache. >> >> To handle this there has to be some kind of "hook" inside RGW that can >> notify Varnish (or some other cache) when an object changes. >> >> Is this something that's on the roadmap? Thoughts? > > Responding to an old thread, but I've been thinking about this again lately. > > I agree it would be nice for an upstream cache to know when its content is > invalid. I realized today that RGW already does this for itself--multiple > gateways on the same RADOS cluster share cache state with each other by > updating and rados_watch()ing the notify_oid's in the .rgw.control pool.
Not quite. The gateway only caches metadata, not data. I don't think doing it for data would make much sense, performance wise. > > I would like to see a small "RGW cache notifier" utility that just does the > "watch" half. It could be a standalone read-only librados client with > configurable output. You would tell it what pool to watch (i.e. > ".rgw.control") and it would spit out event details as they happen. A small > amount of scripting or other glue could turn this utility in to a real-time > cache invalidator for Varnish or anything else. > > Any comments or volunteers? If I'm not mistaken (which is by no means > certain), someone familiar with the code could add such a utility by creating > a new .cc file with a simple main() function and a modified > RGWCache::watch_cb() function, then linking it to the build with a stanza in > Makefile.am similar to that for radosgw-admin. I might even take a crack at > it myself but my C++ is more than a bit rusty. > > In any case, comments welcome. > > JN > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to [email protected] > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
