6

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 吗?大价值的优缺点是什么?它只会增加延迟吗?

4

1 回答 1

-1

从文档中:

https://msdn.microsoft.com/en-us/library/microsoft.aspnet.signalr.sqlscaleoutconfiguration(v=vs.118).aspx

TableCount
获取或设置要在其中存储消息的表的数量。使用更多的表可以减少锁争用并可能增加吞吐量。这必须在网络场中的所有节点之间保持一致。默认为 1。

于 2016-10-17T12:40:23.757 回答