복붙노트

[REDIS] 신뢰성과 레디 스 팝 / 하위

REDIS

신뢰성과 레디 스 팝 / 하위

나는 RabbitMQ에 대체 레디 스 팝 / 하위를 사용하여보고 있었어요.

나의 이해 레디 스의 술집에서 / 서브 가입자의 각각에 영구 연결을 유지하고, 연결이 종료되면, 이후의 모든 메시지는 잃고 바닥에 삭제됩니다.

한 가지 가능한 솔루션은 알림 메커니즘으로 메시지와 술집 / 서브 모두를 저장하는 목록 (및 차단 대기)를 사용하는 것입니다. 나는이 대부분이 방식의 저를 얻을 수 있다고 생각하지만, 난 여전히 실패 사례에 대한 몇 가지 문제가 있습니다.

해결법

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

    1.때 가입자 (소비자) 다이, 목록은 클라이언트 반환 될 때까지 계속 증가 할 것입니다. 그것은 특정 한계에 도달 한 번 프로듀서 (양쪽)에서 목록을 손질 수 있지만, 그건 당신이 응용 프로그램 수준에서 처리해야 할 일이다. 각 메시지에 타임 스탬프를 포함하는 경우, 당신의 고객은 당신이 메시지 보존 기간을 적용 할 응용 프로그램 논리를 가지고 가정, 메시지의 나이에 역할을 할 수 있습니다.

    때 가입자 (소비자) 다이, 목록은 클라이언트 반환 될 때까지 계속 증가 할 것입니다. 그것은 특정 한계에 도달 한 번 프로듀서 (양쪽)에서 목록을 손질 수 있지만, 그건 당신이 응용 프로그램 수준에서 처리해야 할 일이다. 각 메시지에 타임 스탬프를 포함하는 경우, 당신의 고객은 당신이 메시지 보존 기간을 적용 할 응용 프로그램 논리를 가지고 가정, 메시지의 나이에 역할을 할 수 있습니다.

    나는 레디 스에 연결이 무결성 보장과 보통 TCP와 같이 잘못된 메시지가 시스템을 입력하는 방법을 모르겠어요. 이것은 아마도 인해 생산자 계층에서 인코딩 메시지에서 버그로 발생하는 경우에, 당신은 소비자의 예외 메시지를받은 큐 당 생산을 유지하여 오류를 처리하기위한 일반적인 메커니즘을 제공 할 수있다.

    재시도 정책은 응용 프로그램 요구 사항에 크게 좌우 될 것이다. 당신이 메시지가 수신되고 처리 된 것을 100 % 보증이 필요한 경우 클라이언트가 메시지하지 않는 한 제거되지 않습니다 보장 할 수 있도록, 당신은, 소비자에 의해 수행 된 작업을 래핑하는 레디 스 거래 (MULTI / EXEC)를 사용하는 것이 좋습니다 이 작업을 완료했습니다. 당신이 명시 적 acknowlegement이 필요하면, 당신은 생산 공정 (들) 전용 큐에 명시 적으로 ACK 메시지를 사용할 수 있습니다.

    응용 프로그램 요구 사항에 대한 자세한 모른 채, 그것을 현명하게 선택하는 방법을 알고 어렵다. 귀하의 메시지가 가득 ACID 보호가 필요한 경우 일반적으로, 당신은 아마도 사용이 트랜잭션을 레디 스해야합니다. 그들은 적절한 때 메시지는 의미가있는 경우, 트랜잭션은 필요하지 않을 수 있습니다. 목록을 사용하는 접근 방식이 좋은 있도록 메시지를 떨어 용인 할 수 없다 것처럼 소리가 난다. 당신이 당신의 메시지의 우선 순위 큐를 구현해야하는 경우 폴링 소비자와 함께, 점수 값으로 우선 순위를 사용하여 메시지를 저장하기 위해 소트 세트합니다 (Z-명령)를 사용할 수 있습니다.

  2. ==============================

    2.I는이 점수로 타임 스탬프와 멤버 값으로 데이터에 키를 사용하여 정렬 된 집합을 사용 했는가. 나는 다음 몇 사람을 검색 한 다음 키를 얻을 수있는 마지막 항목에서 점수를 사용합니다. 작업이 완료되면 나는 zrem와 델 멀티 / EXEC 트랜잭션 모두를 포장.

    I는이 점수로 타임 스탬프와 멤버 값으로 데이터에 키를 사용하여 정렬 된 집합을 사용 했는가. 나는 다음 몇 사람을 검색 한 다음 키를 얻을 수있는 마지막 항목에서 점수를 사용합니다. 작업이 완료되면 나는 zrem와 델 멀티 / EXEC 트랜잭션 모두를 포장.

    에드워드는, 그러나 나의 메시지는 꽤 큰 수 있듯이, 소트 세트에 키를 저장하는 트위스트 말했다 본질적으로 무엇을.

    도움이 되었기를 바랍니다!

  3. ==============================

    3.당신은 그들이 죽을 때 가입자가 손실되지 메시지, 레디 스 팝 / 서브 대신 레디 스 스트림을 사용하는 것을 고려하는 술집 / 서브 시스템을합니다.

    당신은 그들이 죽을 때 가입자가 손실되지 메시지, 레디 스 팝 / 서브 대신 레디 스 스트림을 사용하는 것을 고려하는 술집 / 서브 시스템을합니다.

    레디 스 스트림은 레디 스 팝 / 하위에 자신의 건축과 장점 / 단점이있다. 레디 스 스트림으로, 가입자는 명령을 실행할 수 있습니다 :

    위에 링크 된 Antirez의 글 레디 스에 좋은 소개 더 많은 정보와 스트림입니다.

    경고 :이 기능은 이제 레디 스의 불안정 (베타) 버전에 존재합니다.

  4. from https://stackoverflow.com/questions/6192177/redis-pub-sub-with-reliability by cc-by-sa and MIT license