-
Notifications
You must be signed in to change notification settings - Fork 991
!feat: Allow Multiple Core gRPC Connections with Load Balancing #4137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Smuu <[email protected]>
Signed-off-by: Smuu <[email protected]>
Signed-off-by: Smuu <[email protected]>
core/fetcher.go
Outdated
next := (current + 1) % int32(len(f.clients)) | ||
|
||
// Update the current client atomically to avoid race conditions | ||
atomic.StoreInt32(&f.currentClient, next) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally this should be a CAS loop
AI cooked in here :) Is there a plan to add load balancing for transaction submission? While having it for block fetching is useful, its not the weakest link our users struggling with. |
Signed-off-by: Smuu <[email protected]>
Signed-off-by: Smuu <[email protected]>
Signed-off-by: Smuu <[email protected]>
Signed-off-by: Smuu <[email protected]>
Added a proposal how the tx submission load balancing could look like. |
Multiple Core gRPC Connections with Client-Side Load Balancing
Motivation
Celestia nodes currently support only a single core gRPC connection, creating a potential single point of failure. This PR enhances reliability and performance by supporting multiple core endpoints with client-side load balancing.
Key Benefits
Implementation
Usage
Single endpoint (backward compatible):
Multiple endpoints:
This enhancement allows Celestia nodes to continue operating even if some core endpoints fail while balancing load for better performance and throughput.