ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Hart" <BHA...@MAIL.NYSED.GOV>
Subject RE: Flushing of oscache in a cluster ?
Date Fri, 22 Sep 2006 13:29:12 GMT
"My thoughts on it are that any JVM which caches through ibatis should be the only process
to update the data. But, this seems too strict for real-world applications."
Yes it is too strict.

Are you sure you need to cache?  What metrics do you have to warrant the additional complexity?
 I think too many j2ee books convince developers to avoid frequent communications with the
database without calculating the performance numbers in their own applications.  

When using  an Oracle database, I find very few cases where caching at the client level (your
java web application in this case) pays a dividend, if it is a long running query, make sure
the query is well written and the database is tuned correctly.  If that still fails, consider
a materialized view and the database level with query rewrites.  Each database vendor offers
many features.  That's why I like iBatis, it lets me work with my oracle database productively.


>>> "Daniel Pitts" <Daniel.Pitts@cnet.com> 09/21/06 1:48 PM >>>
We ran into a similar problem (same situation)
Although, we happened to have an RMI connection between the tool and front-end, so we used
that to send "flush" commands.
I wouldn't recommend that though, trying to keep the two synchronized was a pain.
 
Actually, I don't know much about iBATIS's caching models. Maybe someone can tell us.  Is
there an easy/efficient way to make iBATIS recognize updates made by a separate process, and
recache the new results?
 
My thoughts on it are that any JVM which caches through ibatis should be the only process
to update the data. But, this seems too strict for real-world applications.

________________________________

From: erlend.bjorge@aftenposten.no [mailto:erlend.bjorge@aftenposten.no] 
Sent: Thursday, September 21, 2006 8:08 AM
To: user-java@ibatis.apache.org 
Subject: Flushing of oscache in a cluster ?



Hi there!

 

Does anyone have experience with this ?

 

As far as I have understood it, if you have one application split into two wep apps (1. out
to web - 2. admin), 

using Ibatis DataMapper with caching using oscache, they both have their own cache and if
you have

 

    <cacheModel id="company-cache" type="OSCACHE">

        <flushInterval hours="1"/>

        <flushOnExecute statement="updateCompany"/>

    </cacheModel>

 

they don't flush each other cache when updateCompany is run (in this case flush the web cache
when a update in admin occur). 

 

So far so good (?) and here comes oscache clustering  mechanism into the picture ?

 

Have anyone been able to flush each other cache when you have two web apps like we have ?
What did you do ? :-)

 

--

 

Since the networks guys here don't like multicasting, I have been looking at JavaGroupsBroadcastingListener
with a 

GossipServer or GossipRouter. Anyone experience with that togheter with Ibatis ?

 

--

 

My oscache.properties:

cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener

cache.cluster.properties=UDP(ip_mcast=false;mcast_addr=224.0.0.35;mcast_port=45566;ip_ttl=32;mcast_send_buf_size=150000;mcast_recv_buf_size=80000)

:PING(gossip_host=10.4.0.245;gossip_port=5555;gossip_refresh=15000;timeout=2000;num_initial_members=3)

 

First of all when I run the GossipServer, at once it found the first client, it's shout down.
Is that normal, trick to make it run further ? :-)

 

Then I tried the GossipRouter and the consol tells me that it finds the two apps/machines
it supposed to do. I'm running the GossipRouter on port 5555 on machine 10.4.0.245 which

also is one of the test clients. The other test machine is 10.4.1.8. 

 

--

 

Consol on the GossipRouter:

 

GossipRouter is starting...

GossipRouter started at Thu Sep 21 15:57:14 CEST 2006

Listening on port 5555 bound on address 0.0.0.0/0.0.0.0                  (Does this sound
good ?)

..

DEBUG ...org.jgroups.stack.GossipRouter (Line: 313) - router accepted connection from Socket[addr=/10.4.1.8,port=4463,localport=5555]

DEBUG ...org.jgroups.stack.GossipRouter (Line: 524) - gossip is REGISTER_REQ group=OSCacheBus,
mbr=10.4.1.8:4296

 

DEBUG ...org.jgroups.stack.GossipRouter (Line: 313) - router accepted connection from Socket[addr=/10.4.0.245,port=1310,localport=5555]

DEBUG ...org.jgroups.stack.GossipRouter (Line: 524) - gossip is REGISTER_REQ group=OSCacheBus,
mbr=10.4.0.245:1309

 

DEBUG ...org.jgroups.stack.GossipRouter (Line: 618) - running sweep

DEBUG ...org.jgroups.stack.GossipRouter (Line: 618) - running sweep

...

 

 

So far it's look good in my eyes, then I try to test to flush the cache in one app, I was
expecting the cache in the other app also get flushed. NOT !!!! :-)

 

I don't get any info in the GossipRouter consol, saying, got a flush command or something,
should I ? The cache get flushed on the machine that send

the flush of course, but does anyone have any clues of what I can do to make the flush clustering
mechanism  to work ? should I use JMS ? 

 

Links to OSCACHE clusterings documentation:

http://www.opensymphony.com/oscache/wiki/Clustering.html 

 

How to not using multicasting:

http://www.jgroups.org/newuser/node66.html 

 

http://www.jdocs.com/jgroups/2.2.6/api/org/jgroups/stack/GossipRouter.html 

 

You have any useful links ?

 

--

 

So does anyone have any clues on what I should look at, do  ????? :-)

 

 

Thanks a lot !!!!

 

 

Best regards,

Erlend Bjørge


Mime
View raw message