Server
  • Communication is through TCP/IP sockets and makes use of secure sockets and compression.
  • The servers employ a sophisticated API for housing servlets and managing the requests to the installed servlets, using load-balancing as needed.
  • Servlets can be installed on any number of servers in any location.
  • Rather than require that a hole be poked through the firewall of the back end for each server, the system was designed with two types of servers: the Master-Server and the Sub-Server.
  • Although any number of Master-Servers can be configured, the Master-Server primarily routes requests to the appropriate Sub-Server containing the necessary servlet that has been called.
  • Servers and Master Servers have no GUI and can be configured to run as a Windows service or Unix-type daemon. All configuration is handled remotely through use of the Server Manager application.
  • Note that all configuration of the server and servlets is done while the server is running "hot", allowing for little or no down-time.
Storage Servlet
  • The Storage servlet allows access to "virtual" volumes of shared storage devices. To a client application a "virtual" volume appears as a single volume with up to Terabytes (or more) of disk space.
  • However, the underlying storage can be spread across any number of servers and shared devices (in a platform independent manner).
  • Writes can be duplicated for data safety, and volumes can be copied or migrated to different devices while the servers are running "hot".
  • The actually configuration information for the shared devices are stored in the database so is available to any Storage servlet on the system.
  • Writes to sub-storage devices can be configured to write to the devices sequentially (i.e., fill up devices in order for contiguous storage) or in a round-robin fashion (for faster read/writes).
  • Writes and reads can also be configured to duplicate data to multiple locations. Sub-storage devices can be enabled or disabled, to prevent reads and/or writes from occurring on the sub-storage device.