[Bioperl-l] Caching BioCorba server implemented with bioperl-db
Ewan Birney
birney@ebi.ac.uk
Sun, 6 May 2001 18:07:51 +0100 (BST)
Cach'ing Corba Server.
Plane flights can be very boring. What better to pass the time
than implement a cach'ing corba server?
The server is rather easily implemented with bioperl-db,
bioperl-corba-client and bioperl-corba-server. The server is
a CORBA server to clients but also a CORBA client to a central
"root" server. When the server reciecves the request for a sequence
in first checks in its local bioperl-db based cache. If it is there it
returns the sequence immeadaitely. Otherwise it fetches the sequence
from the "real" root server, writes the sequence into its local cache
and then returns it to the client.
The implementation is not ideal - when the server gets a request which
is hasn't delt with it blocks on the client until the entire sequence
has been transfered, which will be painful over long-latency/long
tranfer connections. Also some sort of "bulk transport" mechanism
would be preferred for this sort of mode between CORBA servers to
allow efficient data transfer - indeed CORBA might not be a great overall
architecture for this, but it does at least provide an extensive toolkit
for writing clients and servers.
However: this is both a proof-of-concept and also useful in mid-LAN
size with no easy file sharing (NFS) scenarios (like... say... the
EBI/Sanger network)- one of the beauties of a system like this is to
have only one server where updates/changes occur and cach'ing servers
around it: the caching servers will move the load away from the
central server and also provide resilence of the system to server
failure.
Implementation caused one more object in Bio::CorbaClient (SeqDB) to
be written and shook out a number of bugs in all three projects.
If you have bioperl-live, bioperl-corba-client, bioperl-corba-server
and bioperl-db checked out, check out the script
caching_corba_server.pl in the scripts directory.
Enjoy!
-----------------------------------------------------------------
Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
<birney@ebi.ac.uk>.
-----------------------------------------------------------------