Technical Working Group: Scalability & Performance

  1. You mentioned that query throughput increases with the # of nodes in a subnet. However, in practice on mainnet are the boundary nodes aware of how the ingress load is distributed amongst nodes, and do they automatically then distribute the load evenly amongst nodes in the subnet? Or would the boundary nodes still route requests to the closest node regardless of load, meaning that in a scenario where requests are perfected geographically distributed throughput would increase with the number of nodes in a subnet, but realistically this wouldn’t make a difference if all the requests were coming from a single location, say New York City.

Hey @icme,

Rüdiger from the boundary node team here.

The boundary nodes constantly health check all replica nodes in a subnet. For each request, the boundary node picks one random node is picked to which the request is forwarded to. So, the load should be quite evenly distributed.

The natural follow-up is “why random node and not something smarter like closest node”. For the user experience this could be much better as latencies would be more stable and lower. However, since any node could be malicious, with the random routing it is ensured that you will eventually reach an honest node with retries.

There is another interesting point: If the request to the picked node fails (e.g., connection times out, some broken response), the request is retried up to 2 times to different nodes. This helps “hiding” some of the issues from the user (e.g., a node became unhealthy, but our health check hasn’t discovered it yet).

I hope this helps answer your question.

5 Likes