scylladb / scylladb/alternator-client-java
PrivateLink support
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 0
- Forks
- 7
- Avg merge
- 21h 23m
- Merged PRs (30d)
- 9
Description
Jira task: https://scylladb.atlassian.net/browse/DRIVER-360
Jira epic: https://scylladb.atlassian.net/browse/DRIVER-54
Copied from Jira epic DRIVER-54:
Idea
Enable dynamodb clients to work properly via NLB PrivateLink
PrivateLink, for the drivers is a load balancer that is deployed for a rack or dc (common case), every node in given scope (rack or dc) is going to have distinct port on this load balancer.
This load balancer will also have one port that targets all the nodes, for initial connection.
Initial connection flow
Driver
Driver configuration
Code example:
/// Information about a PrivateLink deployment for a cluster/node.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PrivateLinkEndpoint {
/// Cloud-specific connection identifier
pub cloud_connection_id: String,
/// Either DNS name or IP address exposed for this PrivateLink connection, could be empty if private link is deployed with custom CNAME.
pub endpoint: String,
}
/// Top-level configuration holding all PrivateLink deployments.
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct PrivateLinkConfig {
pub endpoints: Vec<PrivateLinkEndpoint>,
pub discoveryPort: u16, // Default is 9042
}
Node operations
When node is added, another distinct port is opened on the load balancer for the node.
When node is removed, port is also decommissioned.
Since there is no way for a client to know to which node it is connected to, we will require from cloud to not to reuse same port when node is removed and added right away.
References
Core design doc: ref
Cloud design doc: ref
Network Diagram:
Migrated from GitHub issue: https://github.com/scylladb/alternator-load-balancing/issues/161
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked Jira epic DRIVER-54, task DRIVER-360, and the referenced core and cloud design documents; the issue names no repository files, entry points, or tests. Clarify the expected PrivateLink configuration and node add/remove behavior, then define completion around clients connecting through the discovery and node-specific ports with coverage for the documented flows.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, java
- Domain
- cloud, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100