Add support for configuring multiple SignalR service instances
See original GitHub issueThis solves a couple of problems:
- Ability to increase the scale by adding more Azure SignalR instances and distribute messages across those instances
- Ability to support multi-region fan out
There are 2 major pieces to this:
- Supporting multiple connection strings
- Selecting a single connection string on negotiate based on the incoming request (user extensible)
The negotiate payload will by default round robin and select a single end point that the client will connect to. Instead of opening N connections to a single service instance, we’ll be opening N connections to M service instances. Each outgoing message should be sent to a single connection on each service instance (see https://github.com/Azure/azure-signalr/blob/25bcc7bd4b3fcd7209578d8138ff053e88490276/src/Microsoft.Azure.SignalR/HubHost/ServiceConnectionManager.cs#L30)
A couple of services need to be tweaked to no longer assume a single connection string (like IServiceEndpointProvider
) and we need to change the IServiceConnectionManager implementation to fan out to all servers.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:1
- Comments:5 (3 by maintainers)
Top GitHub Comments
Is there an update on this feature?
Official instruction on this is here https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-howto-scale-multi-instances