Interface CommunicationProtocol<K,V>
-
- Type Parameters:
K
- the type of keysV
- the type of values
- All Known Implementing Classes:
AbstractCommunicationProtocol
,TcpCommunicationProtocol
public interface CommunicationProtocol<K,V>
Simple interface for inter-node communication protocols in distributed cache.This interface provides a clean, focused API for distributed cache communication without unnecessary complexity. Currently supports TCP-based communication with plans for additional protocols as needed.
Supported Operations:
- PUT: Store key-value pair on remote node
- GET: Retrieve value for key from remote node
- REMOVE: Delete key from remote node
- HEALTH_CHECK: Check if remote node is healthy
- INVALIDATION: Broadcast invalidation to multiple nodes
- MIGRATION: Request key migration during rebalancing
- CLUSTER_INFO: Get cluster topology information
Usage Examples:
// Create TCP communication protocol CommunicationProtocol<String, User> protocol = TcpCommunicationProtocol.<String, User>builder() .port(8080) .timeout(5000) .maxConnections(100) .build(); // Cache operations protocol.sendPut("node-2:8080", "user123", user); User retrieved = protocol.sendGet("node-2:8080", "user123").get().getResult(); // Broadcasting protocol.broadcastInvalidation(Arrays.asList("node-1:8080", "node-2:8080"), "user123");
- Since:
- 1.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
CommunicationProtocol.CommunicationResult<T>
Result of a communication operation with type safety.static class
CommunicationProtocol.ProtocolConfig
Simple configuration for the communication protocol.static class
CommunicationProtocol.ProtocolType
Communication protocol types supported by the system.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>>
broadcastBatchInvalidation(Collection<String> nodeAddresses, Collection<K> keys)
Broadcast invalidation for multiple keys to multiple nodes.CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>>
broadcastClear(Collection<String> nodeAddresses)
Broadcast cache clear to multiple nodes.CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>>
broadcastInvalidation(Collection<String> nodeAddresses, K key)
Broadcast invalidation for a single key to multiple nodes.CommunicationProtocol.ProtocolConfig
getConfig()
Get the protocol configuration.Map<String,Object>
getMetrics()
Get protocol-specific metrics.CommunicationProtocol.ProtocolType
getProtocolType()
Get the protocol type.boolean
isRunning()
Check if the protocol is currently running.CompletableFuture<CommunicationProtocol.CommunicationResult<String>>
requestClusterInfo(String nodeAddress)
Request cluster information from a remote node.CompletableFuture<CommunicationProtocol.CommunicationResult<Map<K,V>>>
requestKeyMigration(String nodeAddress, Collection<K> keys)
Request key migration from a remote node during cluster rebalancing.CompletableFuture<CommunicationProtocol.CommunicationResult<V>>
sendGet(String nodeAddress, K key)
Send a GET request to retrieve a value from a remote node.CompletableFuture<CommunicationProtocol.CommunicationResult<String>>
sendHealthCheck(String nodeAddress)
Send a health check request to a remote node.CompletableFuture<CommunicationProtocol.CommunicationResult<Void>>
sendPut(String nodeAddress, K key, V value)
Send a PUT request to store a key-value pair on a remote node.CompletableFuture<CommunicationProtocol.CommunicationResult<V>>
sendRemove(String nodeAddress, K key)
Send a REMOVE request to delete a key from a remote node.void
setLocalCache(Cache<K,V> cache)
Set the local cache instance for handling incoming requests.CompletableFuture<Void>
startServer()
Start the communication protocol server to listen for incoming requests.CompletableFuture<Void>
stopServer()
Stop the communication protocol server.
-
-
-
Method Detail
-
startServer
CompletableFuture<Void> startServer()
Start the communication protocol server to listen for incoming requests.
-
stopServer
CompletableFuture<Void> stopServer()
Stop the communication protocol server.
-
sendPut
CompletableFuture<CommunicationProtocol.CommunicationResult<Void>> sendPut(String nodeAddress, K key, V value)
Send a PUT request to store a key-value pair on a remote node.
-
sendGet
CompletableFuture<CommunicationProtocol.CommunicationResult<V>> sendGet(String nodeAddress, K key)
Send a GET request to retrieve a value from a remote node.
-
sendRemove
CompletableFuture<CommunicationProtocol.CommunicationResult<V>> sendRemove(String nodeAddress, K key)
Send a REMOVE request to delete a key from a remote node.
-
sendHealthCheck
CompletableFuture<CommunicationProtocol.CommunicationResult<String>> sendHealthCheck(String nodeAddress)
Send a health check request to a remote node.
-
broadcastInvalidation
CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>> broadcastInvalidation(Collection<String> nodeAddresses, K key)
Broadcast invalidation for a single key to multiple nodes.
-
broadcastBatchInvalidation
CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>> broadcastBatchInvalidation(Collection<String> nodeAddresses, Collection<K> keys)
Broadcast invalidation for multiple keys to multiple nodes.
-
broadcastClear
CompletableFuture<Map<String,CommunicationProtocol.CommunicationResult<Void>>> broadcastClear(Collection<String> nodeAddresses)
Broadcast cache clear to multiple nodes.
-
requestKeyMigration
CompletableFuture<CommunicationProtocol.CommunicationResult<Map<K,V>>> requestKeyMigration(String nodeAddress, Collection<K> keys)
Request key migration from a remote node during cluster rebalancing.
-
requestClusterInfo
CompletableFuture<CommunicationProtocol.CommunicationResult<String>> requestClusterInfo(String nodeAddress)
Request cluster information from a remote node.
-
getProtocolType
CommunicationProtocol.ProtocolType getProtocolType()
Get the protocol type.
-
getConfig
CommunicationProtocol.ProtocolConfig getConfig()
Get the protocol configuration.
-
isRunning
boolean isRunning()
Check if the protocol is currently running.
-
setLocalCache
void setLocalCache(Cache<K,V> cache)
Set the local cache instance for handling incoming requests. This is called by the distributed cache implementation to provide the local cache instance that should be used when processing incoming requests from remote nodes.- Parameters:
cache
- the local cache instance
-
-