Advise on enterprize application + clustering
psahores at easynet.fr
Wed Aug 4 12:42:38 EDT 2004
Le 3 août 04, à 08:01, MisterX a écrit :
> This is getting interesting... A bit of everything to solve
> your problem (x's famous howitzer approach). The last part
> may be even more interesting than the first. Remember that
> enterprise means also redundancy and zero-downtime ;)
!!! --> Always have this in mind (aka : only ACID compliant RDBMS
back-ends are eligibles there). In respecting this basis, the
applications server will always be cleanly designed (with, sorry for
the possibles Java's addicts reading us, to the end, Tomcat, JBoss no
more suitables at all than Metacard or Revolution...).
> Unfortunately there is some risks of lock ups if not done
> carefully... But here are 3 things you could try:
> In a three tiered cluster strategy, mentioned in a clustering
> class I had recently, there were three actors
> client -> server1 -> server2
> client -> server2 is not possible because of the firewall.
> but server1 -> server2 is fine and client -> server1 is ok2
An usefull ports translation strategy, always very suitable, even in
about proxying / firewalling applications servers...
> if client cannot use sql but can use client1's ports,
> and assuming client1 and client2 can do the sql bit...
> then you need a port configurable client server networking
> in brief:
> RRclient -> RR on Server -> SQLserver
> between RRclient and RRserver you use whatever protocol (80!)
> Best is to have your client ask their network administrator
> to see what is allowed and for what purpose.
> If you saw the forms we have to fill in for these requests
> at my office you would scream!
For sure very cool and secure from the cluster administrator's point of
> For the clustering part now... For a redundant server...
> but you can have more than one server also...
> Run two instances of RR. Named RRServer1 and RRS2.
> Now only one application must work with the port communication
> at the time but you can imagine either that one is locked up,
> not responding, or working hard. It would be nice to have RR2
> take over the next client's server call...
> What you do, is create a temporary file called rr1alive where
> you write a frequent log - the frequency is the timeout for RR2
> to kick and start working.
> There's the case where the RR1alive file is locked by the RR1,
> which should be working but which should be closing the file.
> (is there a FileLocked(filepath) function in rr?)
> You can use the file's date from the extended files function to
> see the date anyway.
> So if there is a timeout trying to read that file, RR1 must be
> locked. Terminate the process RR1. Relaunch RR1 and give it the
> hand when you finished the current client processing.
> Note: usage of a different log for operations than the alivelog
> is worth the trouble. You could keep a log opened in the case of
> a processing but the alivelog should be kept closed to see when
> the last alive was logged to prevent a double server taking parts
> each of the same client's transactions (this can be prevented ez).
> Since transactions with SQL could take a while and queue up clients
> you could imagine that another RRx takes over while the other
> apps finish their transactions.
Hum ! I like your proposal design, Xavier but why would we have to
reinvent the wheel of the "transactions manager concept" when we can
let Apache (on the in/out to public/VPN internet side) and the ACID-DB
transactions managers handle tthat all for our Rev's applications
> The cherry on the cake
> Now, if RunRev implemented threading into RR for 3.0, we would have
> this process written into just one server application. It's one
> thing that differentiates Java from RR...
That's mainly marketing... Even if unofficial, the JAVA 1.4 best
practices recommandation is to never exced 3 simultaneous bytecode
threads per web-services (aka : best to let dedicaded parts of the
system handle such kind of tasks, including the Posix kernel's
multi-theading features (very well suited under Linux), the Apache and
ACID-DB servers ones).
> BUT wait a millisecond,
> requesting web urls is threaded and could be used also as a
> transaction protocol for any client over port 80 couldn't it?
True. Apache is build to handle that all for us (in synchronious mode)
in opening a new thread for each incoming request. By experience, the
MC/Rev applications servers are just best coached in this way than by
any internal transcript dedicated code and, because, the WAS works, in
practice,; always faster than the DB backend, there is no wait at all,
each transaction thread after an other.
> If well formed, im sure you can send xml or any data embeded into
> an client-side html-form request on good old port 80!
100 times true ! Simplicity is there the best entry to build secure
> Using mysqlmgr in html, you can send loads of sql data via a form
> to the server.
Cool and very "pedagogique" (as we say so much, there, in France) post
! Thanks, Xavier :D
>> -----Original Message-----
>> From: use-revolution-bounces at lists.runrev.com
>> [mailto:use-revolution-bounces at lists.runrev.com]On Behalf Of Andre
>> Sent: Tuesday, August 03, 2004 00:08
>> To: How to use Revolution
>> Subject: Re: Advise on enterprize application.
>> On Aug 2, 2004, at 6:51 PM, Mark Wieder wrote:
>>> I'd have to agree with Trevor here that a multi-tiered approach is
>>> way to go. I think you'll have an easier time of it than trying to
>>> stuff everything into a giant rev app (not to mention an easier time
>>> doing maintenance in the long run).
>> Thanks! Already on that path! I just need to know how to make that
>> database library work in the mc engine... it's not there...
>>> -Mark Wieder
>>> mwieder at ahsoftware.net
>> Andre Alves Garzia ð 2004
>> Soap Dog Studios - BRAZIL
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
> use-revolution mailing list
> use-revolution at lists.runrev.com
Bien cordialement, Pierre Sahores
100, rue de Paris
F - 77140 Nemours
psahores+ at +easynet.fr
GSM: +33 6 03 95 77 70
Pro: +33 1 64 45 05 33
Fax: +33 1 64 45 05 33
WEB/EAI services & ACID DB over IP
"Mutualiser les deltas de productivité"
More information about the Use-livecode