Ashish wrote:
> On Tue, Aug 4, 2009 at 1:13 PM, Bernd
> Fondermann<bernd.fonderm...@googlemail.com> wrote:
>> On Tue, Aug 4, 2009 at 06:24, Ashish<paliwalash...@gmail.com> wrote:
>>> While implementing Presence Cache for Vysper, was wondering, is this
>>> the only cache needed by Server?
>>>
>>> So, if other modules need caching, they may have to re-implement the
>>> cache like Presence Cache.
>>>
>>> How about having Cache implemntation as part of Server and required
>>> modules can either extend it or
>>> use the global implementation.
>>>
>>> wdyt?
>> There are a few things the server needs to have quick access to:
>> rosters, active sessions, resource ids etc.
>> Some XMPP extension mights needs this, too. They will have very
>> specific requirements, though.
>>
>> "Caching" is an optimization strategy to improve throughput and scalability.
>> Currently, we have no idea where we need to optimize, haven't we?
> 
> Yup it is. However, we have to start thinking about this. Well we know
> how XMPP Server works and
> we can atleast start putting our thoughts in place.
> 
>> What do you think would be the benefit of introducing such a "global
>> implementation"? What would be its features and benefits?
> 
> Let me simplify it a bit. We have a cache implementation. How about
> using the same implementation
> by all. The user like presence, roster etc can just customize the way
> they see cache.
> 
> Here is what I feel should be the requirements
> 1. CacheProvider - SPI like implementation to plugin custom caching
> implementation. Our Server Users can choose what works best for them
> 2. Modules don't rewrite specific cache implementations, unless a
> situation demands so. They rely on the global implementation. Please
> note that global implementation doesn't means single cache. There can
> be multiple cache's with or without replication. Even as of today we
> use two cache instances for Presence, one based on Entity and other is
> based on JID
> 
> The benefit is code reuse and ease of maintenance :-)

You mean you want to share code and build something like a "cache
abstraction layer"? I found the current implementations to be quite
lightweight and don't yet see the benefit.

Do you have some code or can outline what would be shared between cache
implementations?

  Bernd

Reply via email to