如何SignalR.Redis引擎盖下工作吗?(How does SignalR.Redis wor

2019-07-02 13:02发布

除了阅读代码在github上,有没有对SignalR.Redis包是如何工作的文档的任何白色的纸张类型? 具体来说,我想知道哪些键将它添加到Redis的,更新/删除策略,等等。当看着里面的Redis我曾经看到的是在下面的调用指定(即“SignalR.Redis.Sample”)的一个关键:

GlobalHost.DependencyResolver.UseRedis(server, Int32.Parse(port), password, "SignalR.Redis.Sample");

这关键只是似乎是在Redis的计数器。 我会假设正在创建其它键并迅速删除,以方便连接到Redis的每个应用服务器之间的消息。

Answer 1:

没有没有白皮书,它就像200行代码,所以没有那么多下咽。

在SignalR每个消息通过称为消息总线的事情会发生。 当你想跨节点(或进程或应用程序域)向外扩展,该总线的实现需要能谈谈您的应用程序的每个实例。 要做到这一点,你可以使用RedisMessageBus。 Redis的有一个酒吧子机制,以及它的存储键值对的能力,我们只用前者为SignalR。

OffTopic:这是很重要的! SignalR是不可靠的消息,这是一个连接的抽象。 我们可以缓冲消息longpolling但你**不能*依靠的是有永远的消息。 如果您有需要坚持的重要信息,然后坚持他们。

每个Web服务器(在新的实施或更多)连接到一个Redis的事件,它们之间发送消息。 发来的邮件中的一个或多个客户端,它发送到背板(Redis的),并到达所有Web服务器上。 每个网络服务器在本地缓存中会从Redis的,并将其存储的消息。 这本地缓存就是SignalR客户端(浏览器等),供应。

规模出设计的一个重要组成部分,是游标。 光标表示其中一个特定的客户端是在消息中的一个无限流。 当拖放连接后,客户机重新连接或longpolling连接来得到一个消息后回到它要求公交车让我因为一些光标有价值的东西。 游标由消息总线实现定义,我们已经在最新的源归本(尚未发布在写作的时间,但我不赘述)。 在当前实现的Redis的光标就是这样真实递增的一个数字,没有什么太复杂了。

希望这给出了什么它是如何工作的一些想法。



文章来源: How does SignalR.Redis work under the hood?
标签: redis signalr