Files
opencloud/services/gateway
kobergj 1a2a201ce0 Merge pull request #7977 from kobergj/UpdateGatewayReadme
[docs-only] Update Gateway Readme
2023-12-14 16:15:27 +01:00
..
2022-06-27 14:05:36 +02:00
2023-12-14 15:46:10 +01:00

Gateway

The gateway service is responsible for passing requests to the storage providers. Other services never talk to the storage providers directly but will always send their requests via the gateway service.

Caching

The gateway service is using caching as it is highly frequented with the same requests. As of now it uses two different caches:

  • the provider cache is caching requests to list or get storage providers.
  • the create home cache is caching requests to create personal spaces (as they only need to be executed once).

Both caches can be configured via the OCIS_CACHE_* envvars (or GATEWAY_PROVIDER_CACHE_* and GATEWAY_CREATE_HOME_CACHE_* respectively). See the envvar section for details.

Use OCIS_CACHE_STORE (GATEWAY_PROVIDER_CACHE_STORE, GATEWAY_CREATE_HOME_CACHE_STORE) to define the type of cache to use:

  • memory: Basic in-memory store and the default.
  • redis-sentinel: Stores data in a configured Redis Sentinel cluster.
  • nats-js-kv: Stores data using key-value-store feature of nats jetstream
  • noop: Stores nothing. Useful for testing. Not recommended in production environments.

Other store types may work but are not supported currently.

Note: The gateway service can only be scaled if not using memory store and the stores are configured identically over all instances!

Store specific notes:

  • When using redis-sentinel, the Redis master to use is configured via e.g. OCIS_CACHE_STORE_NODES in the form of <sentinel-host>:<sentinel-port>/<redis-master> like 10.10.0.200:26379/mymaster.
  • When using nats-js-kv it is recommended to set OCIS_CACHE_STORE_NODES to the same value as OCIS_EVENTS_ENDPOINT. That way the cache uses the same nats instance as the event bus.