Cache Client

Cache Clients are lightweight modules through which cache applications can
connect to hosted cache servers.

TCP Based communication: Cache client connects to the cache server using TCP
sockets. Cache client opens a persistent connection with the cache server so
when it is disconnected due to network failure, it always reconnects with the
cache server.

No Change in API: For both local and remote connections, API for cache
operations does not change.

Data Serialization: Data to be added needs to be serializable. Serialization
is performed in cache client.

Data Encryption: Encryption is also configurable. If enabled, data is
encrypted after compression in cache client. NCache supports AES and 3DES
encryption.

Request Timeout: Timeout for synchronous cache operations like Add/Insert
can be configured, if no response is received within configured time, exception
will be thrown. Default operation timeout is 60 seconds. This request timeout
should always be higher than cluster operation timeout.

Cache Server Information: Cache clients require server information in order
to establish connection. This cache server information can be provided in two
ways, either through CacheInitParams or through client configurations
(client.ncconf).

Add/Remove Node: If any node is added or removed in cache cluster, cache
client will also add/ remove server information to its server list. In case of
fail over, client will automatically connect to the newly joined node.

Fail Over: In case a server goes down, cache client seamlessly establishes
connection with the next available server. if none of the server is available,
e.g., due to network failure, cache client keeps on trying to establish
connection with the server in background. When a server again becomes available,
it immediately connects to it and application can resume its activity with the
cache. In partition and partitioned-replica cache topology, cache client
maintains connection with every cache server. In case cache client is unable to
connect with some of the server(s), it executes cache requests through other
available cache servers. Meanwhile, it keeps trying to establish connection with
the server in background.

Connection Retry Interval and Retry Count: When an application executes any
cache operation through cache client and no connection is available, then cache
client tries to establish the connection. The connection establishment process
tries to establish connection for a configurable number of retries. The interval
between two consecutive retries can be configured. Meanwhile, application thread
waits for connection establishment. When retries are over and cache client is
unable to connect to any of the cache servers, then application request is
considered as failed and an exception is thrown to the client application.

Load Balancing: Cache client is topology aware and it behaves according to
topology. In replicated cache cluster, clients are load balanced among cache
servers, if any node joins/leaves the existing replicated cluster, load is
re-shuffled.

Awareness of Data Distribution: In partition and partitioned-replica cache,
client is aware of data distribution and establishes connection with all cache
servers. Data distribution approach has the following advantages:

Operation is one-hop, which results in a higher throughput.

Cache requests are truly balanced among cache servers and no single
server is overwhelmed.