Services

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Created page with "==Introduction== OpenSimulator can be conceptually divided into the simulator itself (the part that handles objects and avatars in the scene, physics, terrain, etc.) and a set o...")
 
m (Grid Services: linked orphaned authorization service page)
 
(26 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{Languages|Services}}
 
==Introduction==
 
==Introduction==
  
OpenSimulator can be conceptually divided into the simulator itself (the part that handles objects and avatars in the scene, physics, terrain, etc.) and a set of backend services (assets, inventory, etc.) that handle data for every simulator in the grid. In standalone configuration both simulator and services run in the same process (OpenSim.exe).  In grid mode, each simulator runs in a separate process (OpenSim.exe) and they connect to one or more ROBUST shells (Robust.exe) or an alternative service implementation that host the services.  See [[Configuration#Standalone_vs._Grid]] for a diagrammatic view.
+
OpenSimulator can be conceptually divided into the simulator itself (the part that handles objects and avatars in the scene, physics, terrain, etc.) and a set of services (assets, inventory, etc.) that handle grid-wide data storage and retrieval.  Data specific to an individual simulator (e.g. object positions, prim inventory contents) is stored at the simulator itself.
 +
 
 +
In standalone configuration both simulator and services run in the same process (OpenSim.exe).  In grid mode, each simulator runs in a separate process (OpenSim.exe) and they connect to one or more ROBUST shells (Robust.exe) or an alternative service implementation that host the services.  See [[Configuration#Standalone_vs._Grid]] for a diagrammatic view.
  
 
Every service is stateless - in other words, individual requests have no relationship to each other so can be load-balanced to multiple copies of a particular service (e.g. inventory).
 
Every service is stateless - in other words, individual requests have no relationship to each other so can be load-balanced to multiple copies of a particular service (e.g. inventory).
  
==Services==
+
Most services are grid services (i.e. every simulator connects to them in a hub-spoke pattern).  However, some services (simulator services) are implemented by each simulator where one simulator needs to request data from another (e.g. land data).
  
Here is a table of each service in OpenSimulator and its function.
+
==Grid Services==
 +
 
 +
Here is a table of each grid service in OpenSimulator and its function.  All service interfaces are in the package OpenSim.Services.Interfaces.  See [[Database:Documentation]] for more information on the database tables that back these services.
  
 
{| border="1"
 
{| border="1"
 
! Service        !! ROBUST database tables !! Description
 
! Service        !! ROBUST database tables !! Description
 
|-
 
|-
| Asset          || assets                || Stores asset data (textures, serialized objects, scripts, etc.) and provides this on request
+
| [[AssetService|Asset]]         || assets                || Stores asset data (textures, serialized objects, scripts, etc.) and provides this on request
 
|-
 
|-
 
| Authentication || auth, tokens          || Handles login authentication.  Core implementations are password and webkey.
 
| Authentication || auth, tokens          || Handles login authentication.  Core implementations are password and webkey.
 
|-
 
|-
| Authorization  || none                  || Checks if the user is authorized to enter a given region
+
| [[AuthorizationService|Authorization]] || none                  || Checks if the user is authorized to enter a given region
 
|-
 
|-
| Avatar        || Avatars                || Holds avatar appearance, height and attachment data.
+
| [[AvatarService|Avatar]]         || Avatars                || Holds avatar appearance, height and which items are attached.
 +
|-
 +
| BasicProfile  || n/a                    || Stub basic profile service.  Currently unused (?).
 
|-
 
|-
 
| Freeswitch    || n/a                    || Freeswitch voice service.  Very low quality voice as the viewer falls back to a debug codec - not freeswitch's fault.
 
| Freeswitch    || n/a                    || Freeswitch voice service.  Very low quality voice as the viewer falls back to a debug codec - not freeswitch's fault.
Line 24: Line 31:
 
| Friends        || Friends                || User friends data storage  
 
| Friends        || Friends                || User friends data storage  
 
|-  
 
|-  
| Grid           || regions                || Holds region information for a grid.  Simulators register here on startup.
+
| [[GridService|Grid]] || regions                || Holds region information for a grid.  Simulators register here on startup.
 
|-
 
|-
| GridUser       || GridUser              || Records status information for a user on a grid, including home position and whether they are online or not.  On a non-Hypergrid setup, each grid user will have a user account.
+
| [[GridUserService|GridUser]] || GridUser              || Records status information for a user on a grid, including home position, last position (set on logout) and whether they are online or not.  On a non-Hypergrid setup, each grid user will have a user account.  The online information is likely to be less accurate than the presence service, which is updated more frequently.  Information is added (when a user first becomes a root agent on any simulator in the grid) but never removed, so the record of the last login to the grid remains when they have logged out.
 
|-
 
|-
| HG*           || n/a                   || Hypergrid services. These usually override 'normal' services (e.g. asset, inventory) with some Hypergrid specific functionality
+
| [[GroupsService|Groups]] || os_groups_* (core groups) || Groups service.  OpenSimulator both has a [[V2 Groups|core groups service]] which is not yet enabled by default and an external [[Groups|XmlRpc/Flotsam groups service]].
 
|-
 
|-
| Inventory      || inventoryitems, inventoryfolders || User inventory storage
+
| HG*            || n/a                    || Hypergrid services.  These usually override 'normal' services (e.g. asset, inventory) with some Hypergrid specific functionality
 
|-
 
|-
 +
| [[InventoryService|Inventory]]          || inventoryitems, inventoryfolders || User inventory storage
 +
|-
 
| Login          || n/a                    || Handles user login.  OpenSimulator implements an LL login service.
 
| Login          || n/a                    || Handles user login.  OpenSimulator implements an LL login service.
 
|-
 
|-
 
| MapImage      || stored on filesystem  || Stores and provides main map image tiles.
 
| MapImage      || stored on filesystem  || Stores and provides main map image tiles.
 
|-
 
|-
| Presence       || Presence              || Records user sessions and the region location of a particular session.  Used for instant message routing, amongst other things.
+
| [[PresenceService|Presence]]            || Presence              || Records user sessions and the region location of a particular session.  Entries normally exist only for users that are online, though if a client has crashed the presence may remain until the simulator they occupied times out the connection.  However, this is more accurate than the online information recorded in GridUser.  Used for instant message routing, amongst other things.
 +
|-
 +
| [[UserAccountService|UserAccount]]      || UserAccounts          || User account storage (avatar name, service URLs, user level, flags, etc.)
 +
|}
 +
 
 +
==Simulator Services==
 +
 
 +
Here is a table of each simulator service in OpenSimulator and its function.  All service interfaces are in the package OpenSim.Services.Interfaces.
 +
 
 +
{| border="1"
 +
! Service        !! Description
 +
|-
 +
| Land          || Provides land data for a particular simulator.  Read only.
 +
|-
 +
| Library        || Library items and folders.  This is currently implemented per region but should really be a grid service.  Data comes from the filesystem.
 
|-
 
|-
| UserAccount    || UserAccounts          || User account storage.
+
| Simulation    || General simulation functions (create agent, update agent, create object, etc.).  User in both login service -> simulator comms (e.g. login service creating an agent at a target region) and simulator -> simulator comms (e.g. teleport, updating child agents, moving objects between regions, etc.).
 
|}
 
|}

Latest revision as of 06:14, 18 September 2020

[edit] Introduction

OpenSimulator can be conceptually divided into the simulator itself (the part that handles objects and avatars in the scene, physics, terrain, etc.) and a set of services (assets, inventory, etc.) that handle grid-wide data storage and retrieval. Data specific to an individual simulator (e.g. object positions, prim inventory contents) is stored at the simulator itself.

In standalone configuration both simulator and services run in the same process (OpenSim.exe). In grid mode, each simulator runs in a separate process (OpenSim.exe) and they connect to one or more ROBUST shells (Robust.exe) or an alternative service implementation that host the services. See Configuration#Standalone_vs._Grid for a diagrammatic view.

Every service is stateless - in other words, individual requests have no relationship to each other so can be load-balanced to multiple copies of a particular service (e.g. inventory).

Most services are grid services (i.e. every simulator connects to them in a hub-spoke pattern). However, some services (simulator services) are implemented by each simulator where one simulator needs to request data from another (e.g. land data).

[edit] Grid Services

Here is a table of each grid service in OpenSimulator and its function. All service interfaces are in the package OpenSim.Services.Interfaces. See Database:Documentation for more information on the database tables that back these services.

Service ROBUST database tables Description
Asset assets Stores asset data (textures, serialized objects, scripts, etc.) and provides this on request
Authentication auth, tokens Handles login authentication. Core implementations are password and webkey.
Authorization none Checks if the user is authorized to enter a given region
Avatar Avatars Holds avatar appearance, height and which items are attached.
BasicProfile n/a Stub basic profile service. Currently unused (?).
Freeswitch n/a Freeswitch voice service. Very low quality voice as the viewer falls back to a debug codec - not freeswitch's fault.
Friends Friends User friends data storage
Grid regions Holds region information for a grid. Simulators register here on startup.
GridUser GridUser Records status information for a user on a grid, including home position, last position (set on logout) and whether they are online or not. On a non-Hypergrid setup, each grid user will have a user account. The online information is likely to be less accurate than the presence service, which is updated more frequently. Information is added (when a user first becomes a root agent on any simulator in the grid) but never removed, so the record of the last login to the grid remains when they have logged out.
Groups os_groups_* (core groups) Groups service. OpenSimulator both has a core groups service which is not yet enabled by default and an external XmlRpc/Flotsam groups service.
HG* n/a Hypergrid services. These usually override 'normal' services (e.g. asset, inventory) with some Hypergrid specific functionality
Inventory inventoryitems, inventoryfolders User inventory storage
Login n/a Handles user login. OpenSimulator implements an LL login service.
MapImage stored on filesystem Stores and provides main map image tiles.
Presence Presence Records user sessions and the region location of a particular session. Entries normally exist only for users that are online, though if a client has crashed the presence may remain until the simulator they occupied times out the connection. However, this is more accurate than the online information recorded in GridUser. Used for instant message routing, amongst other things.
UserAccount UserAccounts User account storage (avatar name, service URLs, user level, flags, etc.)

[edit] Simulator Services

Here is a table of each simulator service in OpenSimulator and its function. All service interfaces are in the package OpenSim.Services.Interfaces.

Service Description
Land Provides land data for a particular simulator. Read only.
Library Library items and folders. This is currently implemented per region but should really be a grid service. Data comes from the filesystem.
Simulation General simulation functions (create agent, update agent, create object, etc.). User in both login service -> simulator comms (e.g. login service creating an agent at a target region) and simulator -> simulator comms (e.g. teleport, updating child agents, moving objects between regions, etc.).
Personal tools
General
About This Wiki