Talking about next steps, have you ever considered a second level of (off heap) cache? My question is of course not so casual, being the PMC of DirectMemory :) I think there are a lot of potential synergies, here. I include DM's dev list to gather opinions and solicitate feedback from the team members.
Ciao, R 2014-05-06 22:39 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>: > That's my experience too. So let's go for the concurrenthashmap impl > (patch on jira) and then see how we do the invalidation stuff in a > 2.1? > > > Romain Manni-Bucau > Twitter: @rmannibucau > Blog: http://rmannibucau.wordpress.com/ > LinkedIn: http://fr.linkedin.com/in/rmannibucau > Github: https://github.com/rmannibucau > > > 2014-05-06 19:54 GMT+02:00 Mark Struberg <strub...@yahoo.de>: > > Well my personal experience only: > > > > > > 1.) I barely use distributed caches. I use ehcache in most of my > projects as of today, but do not use the distribution feature much. Way too > complicated > > > > 2.) What actually IS useful is distributed cache invalidation. The > caching side is fine to just select any values from my DB if they are not > yet cached. But if I change those values, then I really need some ways to > get rid of the values in all the caches on all my cluster nodes. > > > > So from a purely personal point I would favour a mode which is really > fast as a local cache but would have some ways to distribute the > invalidation of a cache to all other nodes. > > > > Not sure how this fits into jcs - don't know the codebase well enough to > judge about it. > > > > LieGrue, > > strub > > > > > > On Tuesday, 6 May 2014, 13:29, Romain Manni-Bucau <rmannibu...@gmail.com> > wrote: > > > > Here some pseudo-core details about my first mail: > >> > >>New internals: > >>* NetworkTopology > >>* EntryRepartitor: compute the index of the > >>* Node (LocalNode which is current impl and RemoteNode which is just a > >>remote facade relying Network) > >> > >>NetworkTopology { // impl using udp/tcp/or whatever > >> Node[] findAll() // used by a background thread to check if there > >>is a new node and if so rebalance the cluster > >>} > >> > >>Node { // remote and local API > >> get(k), put(k, v) .... (Cache<K, V> primitive methods) > >> Statistics getStatistics() // used by a background thread to > >>aggregate stats on each node > >>} > >> > >> > >>EntryRepartitor { > >> Node[] nodeAndBackups(key) > >>} > >> > >> > >>get(key) { // symmetrical for put of course > >> Node[] nodes = entryRepartitor.nodeAndBackups(key); > >> for (final Node node : nodes) { > >> try { > >> return node.get(key); > >> } catch(final RemoteCacheException rce) { // API exception > >> throw rce.getJCacheException(); > >> } catch(final Exception e) { // network exception try next node > >> // continue > >> } > >> } > >>} > >> > >>Of course we'll get LocalNode implementing Node with the current impl > >>(ConcurrentHashMap) and RemoteNode will be a client view of the > >>LocalNode over the network. > >> > >>To keep it testable we need to be able to test a RemoteNode -> > >>LocalNode connection in the same JVM creating manually two > >>CachingProviders. > >> > >>wdyt? > >> > >> > >>Romain Manni-Bucau > >>Twitter: @rmannibucau > >>Blog: http://rmannibucau.wordpress.com/ > >>LinkedIn: http://fr.linkedin.com/in/rmannibucau > >>Github: https://github.com/rmannibucau > >> > >> > >> > >>2014-05-06 12:50 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>: > >>> FYI I attached a patch using a ConcurrentHashMap here > >>> https://issues.apache.org/jira/browse/JCS-127 > >>> > >>> It is pretty fast compared to previous impl. > >>> > >>> > >>> Romain Manni-Bucau > >>> Twitter: @rmannibucau > >>> Blog: http://rmannibucau.wordpress.com/ > >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau > >>> Github: https://github.com/rmannibucau > >>> > >>> > >>> 2014-05-06 8:31 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>: > >>>> Hi guys, > >>>> > >>>> few questions about jcs: > >>>> > >>>> 1) I played a bit with remote cache server etc and didn't find a lot > >>>> of use cases, do we keep it this way (linked to 4) )? > >>>> 2) API: do we use JCache as main API or do we keep core? > >>>> 3) Reviewing JCache module I really wonder if we shouldn't use a > >>>> ConcurrentHashMap instead of a the currently backing CompositeCache > >>>> and add on top of this "locally optimized" implementation two things: > >>>> a) eviction (a thread regularly iterating over local items to check > >>>> expiry would be enough), b) distribution (see 4) ) > >>>> 4) distributed mode: I wonder if we shouldn't rethink it and > >>>> potentially add Cache<K, V> listeners usable in JCache to know if > >>>> another node did something (useful to get consistent stats at least - > >>>> basically we need a way to aggregate on each note stats) + use a key > >>>> for each node to keep data on a single node + potentially add backup > >>>> on another node. > >>>> > >>>> wdyt? > >>>> > >>>> I don't know how much JCS is used ATM and if we can break that much > >>>> the API but since that would be a 2.0 I think it is the moment > >>>> > >>>> > >>>> Romain Manni-Bucau > >>>> Twitter: @rmannibucau > >>>> Blog: http://rmannibucau.wordpress.com/ > >>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau > >>>> Github: https://github.com/rmannibucau > >> > >>--------------------------------------------------------------------- > >>To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >>For additional commands, e-mail: dev-h...@commons.apache.org > >> > >> > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >