OpenSimulator Internals/ROBUST Services
Appearance
OpenSimulator Internals/ROBUST Services
[edit]All service interfaces are in OpenSim.Services.Interfaces.
ROBUST services fall into two categories: those that must run in the same process instance, and those that can be split across machines and load-balanced.
Must Stay in Same Instance
[edit]These services share state and have dependencies on each other. Running them in separate instances will cause data conflicts.
| Service | Notes |
|---|---|
| PresenceService | Who is online, which region, current session. Maintains a cache. Multiple instances would give conflicting answers. |
| UserAgentService | Manages the user agent when traveling via HyperGrid. Handles trust verification between grids. |
| AgentPreferencesService | Per-user preferences such as hover height and language setting. |
| GridUserService | Home region, last login location, online status. Must update atomically with PresenceService on login and logout. |
Can Be Split and Load-Balanced
[edit]These services are stateless and can run on separate machines behind a load balancer such as nginx.
| Service | Notes |
|---|---|
| AssetService | Stores and serves asset blobs (textures, meshes, scripts, notecards, etc.). Intentionally dumb -- no referential awareness. Two storage backends: database blob (default) or FSAssets (recommended above 50GB). |
| InventoryService | User inventory. Folder tree and item references. Permissions live here, not in the asset table. |
| GridService | Region map. Handles region registration on startup and deregistration on shutdown. Answers queries for region location and coordinates. |
| UserAccountService | User account storage. Name, email, user level, flags. |
| AuthenticationService | Login authentication. Core implementations are password and webkey. |
| GroupsService | Groups. Core groups service is not enabled by default. External XmlRpc/Flotsam groups service is the common alternative. |
Additional Services
[edit]| Service | Notes |
|---|---|
| AvatarService | Avatar appearance, height, attached items. |
| AuthorizationService | Always returns authorized. No database, no configuration, no logic. A stub. Actual access control (ban lists, parcel restrictions, estate settings) is handled in region code, not here. |
| FriendsService | Friends list, friendship requests, permissions granted to friends. |
| MapImageService | Stores and serves map tile images. Stored on filesystem, not in the database. |
| LoginService | Handles user login. Implements the LL login protocol. |
| HyperGrid services | Override normal services (asset, inventory, etc.) with HyperGrid-specific functionality. |
Simulator Services
[edit]These run per-simulator rather than on ROBUST. See Simulator Services for interface details.
| Service | Notes |
|---|---|
| Land | Parcel data for a specific simulator. Read only. |
| Library | Library items and folders. Currently per-region, should be a grid service. Data from filesystem. |
| Simulation | General simulation functions: create agent, update agent, create object. Used for login-to-simulator and simulator-to-simulator communication (teleport, region crossing, moving objects between regions). |