복붙노트

[REDIS] 어떻게 후드 SignalR.Redis 작동합니까?

REDIS

어떻게 후드 SignalR.Redis 작동합니까?

GitHub의에서 코드를 읽는 것보다 다른 방법 SignalR.Redis 패키지 작품에 대한 문서의 흰색 용지 종류가있다? 특히 나는 레디 스 내부보고 내가 볼 모두 다음 호출 (즉, "SignalR.Redis.Sample")에 지정된 키입니다 때 등 레디 스 업데이트 / 삭제 전략에 추가 어떤 키 궁금 :

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

이 키는 레디 스에서 카운터 것 같다. 본인은 키가 생성되는 것으로 가정하고 신속 레디 스에 연결된 각 응용 프로그램 서버 간의 메시지를 촉진하기 위해 삭제합니다.

해결법

  1. ==============================

    1.아니 그것은 200 줄의 코드 그렇게하지 그 제비 훨씬처럼 백서에는 없습니다.

    아니 그것은 200 줄의 코드 그렇게하지 그 제비 훨씬처럼 백서에는 없습니다.

    SignalR에서 각 메시지는 메시지 버스라는 것을 통해 간다. 당신이 노드 (또는 프로세스 또는 응용 프로그램 도메인)에 걸쳐 확장 할 때,이 버스의 구현은 응용 프로그램의 각 인스턴스 이야기 할 수 있어야합니다. 이렇게하려면 당신은 RedisMessageBus를 사용할 수 있습니다. 레디 스 술집 하위 메커니즘뿐만 아니라 키 값 쌍을 저장하는 그것의 기능을 가지고 있으며, 우리는 SignalR의 이전을 사용합니다.

    논외이 매우 중요하다! SignalR 그것은 연결 추상화의, 신뢰할 수있는 메시징 아닙니다. 우리는 longpolling에 대한 메시지를 버퍼링 할 수 있지만 ** * 영원히 거기 메시지에 의존 할 수 없다. 당신은 당신이 계속해야 할 중요한 메시지가있는 경우, 다음을 지속.

    (새로운 구현 또는 그 이상)의 하나에 각각의 웹 서버 커넥트는 그들 사이에 메시지를 보내는 이벤트를 레디 스. 메시지는 하나 이상의 클라이언트에 올 때, 그것은 백플레인 (레디 스)로 전송하며 모든 웹 서버에 도착합니다. 각 웹 서버는 로컬 캐시에 레디 스 저장을에서 메시지를 가져옵니다. SignalR 클라이언트 (브라우저 등), 제공되는 곳이 로컬 캐시입니다.

    디자인 밖으로 규모의 한 가지 중요한 부분은 커서입니다. 특정 클라이언트가 메시지의 무한 스트림입니다 커서가 나타냅니다. 클라이언트가 연결을 삭제 한 후 다시 연결하거나 longpolling 연결이되면 다시 메시지를 받고 이후는 좀 커서 값 이후 모든 것을 얻을 수있는 버스를 묻습니다. 커서가 메시지 버스 구현에 의해 정의되며 우리는 최신 버전의 소스에서이 정상화했습니다 (아직 작성 당시에 해제되지 있지만 여기에서는 이에 대해 자세히 설명하지 않습니다). 레디 스의 현재 구현에 커서가 너무 복잡 아무것도 증가하지 그냥 숫자입니다.

    희망이 어떻게 작동하는지 무엇을 몇 가지 아이디어를 제공합니다.

  2. from https://stackoverflow.com/questions/13054592/how-does-signalr-redis-work-under-the-hood by cc-by-sa and MIT license