Voltron

What’s Voltron? What services does it provide? Remoting? Provider of resources to Entity instances? Versioning? How is persistence addressed? Replication? HA?

Voltron Storage Spec

  1. Voltron provides StorageService service for as storage service for entities.

  2. The Storage service provided is sandboxed which will be used by the Entities to get StorageChunk s. The allocation done for a particular Entity is scoped in a way, so that no other Entity uses it or interferes with it.

  3. These chunks are fixed size resource(offheap, disk etc) allocations.

  4. To create a StorageChunk from storage service, one needs to provide the size of the chunk, an identifier and the server pool id.

  5. The `StorageChunk’s lifecycle is managed by the Entity'. It can create/destroy the chunks as per the need.

  6. An Entity can request for any number of StorageChunk s, limited only by the size of the server side pool.

  7. Voltron internally sandboxes each individual chunk. (entityId:poolId:chunkId → provided StorageChunk)

  8. The StorageChunk provides apis to create, destroy and get KeyValueStorage s. It can request for any number of KeyValueStorage s from the provided StorageChunk.

  9. The storage limit of KeyValueStorage is defined by the capacity of the StorageChunk it it belongs to.

Client Communication Service

  1. Client Communication service enables the entities to interact with the client.

  2. If an Entity needs to send messages to the client, the client communication service can be invoked to send messages.

  3. The Client Communication Service is a different channel than the regular Endpoint which clients use to send payload to the server.

  4. The point is that Client Communication service should not be misunderstood with the Endpoint as it is not related to send acknowledgements back to the client.

  5. All the client → server communications which happen through Endpoint channel are totally different from the server → client communications that happens through Client Communicator Service.

  6. Some of the use cases where this service can be used is sending invalidations about stale data, requesting information from client, etc.

Server-side entity

  1. Actual providers of functionality;

  2. Responsible for:

    1. Maintaining their state?

    2. Acquiring releasing of resources?

    3. …​ ?

Client-side entity

  1. (Stateful)? Proxies to the server-side entities

  2. Rejoin?

  3. Reconnect?

  4. …​ ?

Ehcache’s clustering model

Operations sequence diagrams

putIfAbsent

putIfAbsent sequence