Skip to content

Struggling to understand load balancing with thread-per-core shards #56

@numinnex

Description

@numinnex

Hey,

Really neat project, reading through it felt like a breeze, it's some of the most beautiful Rust I've ever seen.

From my understanding of the thread per core architecture, one is supposed to partition load in a way, where requests can be routed to specific cores(shards) to perform the operation (for example by using the partition id as the identifier of shard that's supposed to serve the request) and only communicate via channels (no shared state). This guarantees some benefits such as lack of need for locks.

Reading through your code, I can't seem to find such router, instead there is a send_request_to_local_shards that on request received for example CreateCollection, sends message to all of the shards except the currently used one, which appears like it performs the same operation N times locally ? I wonder if is there something that I am missing, maybe some detail about glommio, I am using monoio for my project and currently looking around for some inspiration. As of right now my main source of knowledge is project Sphinx by Pekka Enberg.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions