在SignalR 性能页面中,我们可以阅读:
此上下文中的 Stream 是横向扩展提供程序使用的缩放单位;如果使用 SQL Server,则这是一个表,如果使用 Service Bus,则为 Topic,如果使用 Redis,则为 Subscription。每个流确保有序的读写操作;单个流是潜在的规模瓶颈,因此可以增加流的数量以帮助减少该瓶颈。如果使用多个流,SignalR 将自动在这些流中分发(分片)消息,以确保从任何给定连接发送的消息是有序的。
流计数(即 SQL 中的表)可以这样设置:
var connectionString = "(your connection string)";
var config = new SqlScaleoutConfiguration(connectionString) {
TableCount = 3,
MaxQueueLength = 50 };
GlobalHost.DependencyResolver.UseSqlServer(config);
但TableCount
在 SQL 横向扩展中默认为 1。如果这是一个规模瓶颈,为什么默认为 1 ?如果我将其设置为 50 怎么办?
该文档没有提供任何线索来决定给出哪个值。我应该将其设置为 1、3、10、1000 吗?大价值的优缺点是什么?它只会增加延迟吗?