Olympia Server is an out-of-process state and event storage server. It can be used to create load-balanced server farms where multiple instances of the server application run on different machines across the company LAN (or, indeed, the Internet), and yet share client session data, allowing client applications to seamlessly connect to any randomly available server.
One cornerstone of scalability is the ability of server applications to grow beyond a single server instance in order to accommodate for increased client traffic that exceeds what a single server machine can physically handle.
Designing applications with statelessness in mind and storing as little client-specific data in service instances as possible is a good starting point for building services that can scale up (i.e. accommodate increasing client load within a single server instance) and scale out (i.e. spread further increasing load out across multiple servers). But at the same time, many applications rely on at least a minimum of client state to be known, be it in the simplest case to merely authenticate users, or to provide more complex client-server interaction, such as Push Events.
RemObjects SDK's session management infrastructure has always made it easy to maintain client information while allowing service implementations to remain scalable, but most provided session managers were confined to a single server instance, or required manual setup of a shared database to store client state.
Olympia Server solves this problem by providing a dedicated and ready-made server application that can store shared session data and push events for a variety of separate RemObjects SDK server applications. Simply installing an instance of Olympia on your server farm (be it on the same system as one of your servers or on a dedicated machine) will allow all servers on the network to share client state and maintain a central repository for client events. Clients can communicate with any of the servers - be it through round-robin load balancing or more sophisticated load distribution mechanisms - and their session data will seamlessly be available.
Shipping as pre-compiled server executable with all editions of RemObjects SDK, Olympia can be deployed along with .NET and Delphi servers alike, and runs on Windows (requiring .NET 3.5 or Mono 2.0), as well as Linux and Mac OS X (requiring Mono 2.0).
A single Olympia instance can maintain shared state for many RemObjects SDK servers, whether they are separate instances of the same server applications or different and unrelated servers.
Olympia can be run as standard WinForms application, as a Windows service or as daemon on Linux or Mac OS X hosts.
Used data storage
Because Olympia is internally built upon Data Abstract for .NET, it can use the full power and flexibility of Data Abstract and its schemas to talk to any database you choose; however, it comes pre-configured to use internal SQLite based storage in order to run out-of-the-box with zero setup and configuration necessary.
Database creation scripts for MS SQL, MS SQL CE, SQLite.NET and Firebird are shipped with the Olympia sources. Please refer to the FAQ article How can I change the database engine in Olympia? to find out how to configure Olympia to use one of these database servers.
Olympia can also be configured to run in in-memory mode, where a virtual in-memory SQLite database is created. This mode is usually faster, since when it is active, no disk operations are required to store data, but its major disadvantage is that all session and event data will be lost if Olympia is restarted.
RemObjects SDK provides session and event components that make it easy to use Olympia Server. See OlympiaServerSessionManager and OlympiaMessageQueue (in .NET) or TROOlympiaSessionManager and TROOlympiaEventRepository (in Delphi).
Olympia server can be accessed via SuperTCP channel. By default, Olympia listens to port 8011, but the port number is configurable via the Olympia configuration file. To get your application to work with the Olympia server, add a SuperTCP client channel to it, set its port to one that Olympia listens to and bind the Channel property of the OlympiaServerSessionManager (TROOlympiaSessionManager) to this channel. If you are using the OlympiaMessageQueueManager (TROOlympiaEventRepository), make sure that its Channel property is also bound to the SuperTCP channel.
- Namespace Lists for .NET — Java
- Interface Lists for .NET — Delphi — Java
- Protocol Lists for Xcode
- Class Lists for .NET — Xcode — Delphi — Java
- Enum Lists for .NET — Xcode — Java
- Alias Lists for Xcode — Delphi
- Implements Lists for .NET — Xcode — Delphi — Java
- Data Types
- File Types