除了阅读github中的代码之外,是否有任何白皮书类型的文档来说明SignalR.Redis包的工作原理?具体地说,我想知道它向Redis添加了什么键,更新/删除策略等。当查看Redis内部时,我看到的只是下面调用中指定的一个键(即"SignalR.Redis.Sample"):
GlobalHost.DependencyResolver.UseRedis(server, Int32.Parse(port), password, "SignalR.Redis.Sample");这把钥匙看起来就像Redis里的一个计数器。我假设正在创建并快速删除其他密钥,以方便连接到Redis的每个应用程序服务器之间的消息。
发布于 2012-10-25 15:14:30
不,没有白皮书,它只有200行代码,所以没那么多东西要吞噬。
在SignalR中,每个消息都要经过一个称为消息总线的东西。当您想要跨节点(或流程或应用程序域)向外扩展时,此总线的实现需要能够与应用程序的每个实例对话。要做到这一点,您可以使用RedisMessageBus。Redis有一个pub sub机制以及它存储键值对的能力,我们只对Redis使用前者。
OffTopic:这非常重要!SignalR不是可靠的消息传递,它是一种连接抽象。我们可以为长轮询缓冲消息,但您**不能*依赖消息永远在那里。如果你有重要的消息需要持久化,那么就持久化它们。
每个web服务器连接到一个(在新实现中是多个) redis事件,以便在它们之间发送消息。当一条消息到达一个或多个客户端时,它被发送到底板(redis),然后到达所有的web服务器。每个the服务器从redis获取消息,并将其存储在本地缓存中。这个本地缓存是为SignalR客户端(浏览器等)提供服务的地方。
横向扩展设计的一个重要部分是游标。游标表示特定客户端在无限消息流中的位置。当客户端在断开连接后重新连接,或者长轮询连接在收到消息后返回时,它会要求总线获取从某个游标值开始的所有内容。游标是由消息总线实现定义的,我们已经在最新的源代码中对此进行了规范化(在撰写本文时尚未发布,但我不会在这里详细介绍)。在redis的当前实现中,游标只是一个递增的数字,并不是太复杂。
希望这能让我们对它的工作原理有所了解。
https://stackoverflow.com/questions/13054592
复制相似问题