envoyproxy / java-control-plane

Java implementation of an Envoy gRPC control plane
Apache License 2.0
291 stars 136 forks source link

Support server side xds ratelimiting for client connections #300

Open nezdolik opened 9 months ago

nezdolik commented 9 months ago

we at Spotify run large pool of Envoys and a single control plane per cloud region. Due to specific reasons we run single instance of control plane per region, which may be changed in future. We have hit scalability issues (related to netty buffers), when control plane got overwhelmed by too many Envoys reconnecting (after control plane restart) and requesting XDS snapshot simultaneously. For that case we have implemented XDS ratelimiting feature in control plane, that allows only N new concurrent xds streams to be establishes per second based on xds node id. The feature has been battle proven in production, it sparked some community interest and we would like to contribute such feature to java control plane library

mikegajda commented 9 months ago

We'd be interested in this feature at HubSpot for similar scalability reasons