You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by gianny DAMOUR <gi...@hotmail.com> on 2004/02/18 15:04:53 UTC
Distributed filesystem
Hello,
Following your feedback on my first attempt to implement a WebDAV service, I
have started the implementation of a "distributed" filesystem.
The goal is to provide a remote access to a shared repository of components.
This feature could be used to distribute modules (JSR88) to targets and more
generally to read, update or delete files stored on the network.
Moreover, I also tried to set-up a networking infrastructure, which could be
leveraged to implement a RemoteCluster (by now, only a LocalCluster is
provided).
This prototype has reached a stage, where I would like to have your feedback
on the general idea as I plan to perform a first round of refactoring (by
now, there are 54 classes) prior to submit this proposal.
So, here is the general idea:
The "current" networking infrastructure is based on a standard client-server
design using TCP as the communication protocol. The "final" infrastructure
will be based on the same design with many servers. Clients and servers are
in charge of performing network related tasks (handshake, heart-beat,
routing et cetera) and delegate the processing of byte blocks to connected
components. These components can be whatever you want, for instance a
filesystem manager or a (cluster) Tier.
The overall idea is depicted hereafter:
Connector -- MTO -- ServantNode -- MTO -- ServerNode -- OTM -- Connector
where:
- ServantNode is a client (i.e. Socket side);
- ServerNode is a server (i.e. ServerSocket side);
- Connector is a component in charge of processing byte blocks (this is not
a RPC invocation) sent by remote Connectors.
For instance one could have this in the case of the prototype I am working
on:
GFileManagerClient -- MTO -- ServantNode -- MTO -- ServerNode -- OTM --
GFileManagerProxy -- LocalGFileManager
where GFileManagerClient is a Connector, which allows a remote access to
GFileManagerProxy, also a Connector, which delegates the actual file
management to LocalGFileManager. This latter is a local filesystem.
This is for the networking part.
For the filesystem part, I have designed the solution as a "Data Store" for
files. It is also possible to add properties to these files (required for
WebDAV). The storage is performed via a DAO (I have quickly implemented a
DAO for a local filesystem).
Clients interact with the filesystem via a standard "Data Store" API:
void start();
void persistNew(GFile);
void persistUpdate(GFile);
void persistDelete(GFile);
void end();
and GFile mirrors most of the File API.
This is for the filesystem part.
Any concerns?
Thanks for your inputs,
Gianny
_________________________________________________________________
MSN Messenger http://g.msn.fr/FR1001/866 : dialoguez en direct et
gratuitement avec vos amis !