2017-01-25 3 views
0

Apache Curator의 설명서를 읽고 있는데 세션이 만료 될 때 적용 할 정책이 무엇인지 정확히 이해할 수 없습니다.세션이 만료 될 때 Apache Curator가 다시 연결을 시도하는 방법은 무엇입니까?

즉시 연결을 LOST로 설정하겠습니까? 아니면 모든 관찰자를 다시 연결하고 다시 설정하려고 시도하겠습니까? 실패한 N 번의 시도 후에 만 ​​연결이 손실로 설정됩니까?

다시 설정하려고하면 임시 노드와 시계가 올바르게 재설정됩니까?

답변

0

첫째, 건강한 앙상블에 대한 연결을 재설정 할 때까지 ZooKeeper 세션 만료 (클라이언트 관점에서)가 발생하지 않습니다. 즉, 다시 연결할 때까지 세션이 종료되었음을 알 수 없습니다.

아파치 큐레이터 (참고 : 저는 주 저자입니다)는 "연결 상태"개념을 소개합니다.이 개념은 주키퍼의 내부 개념 개념 위에 추상화 된 개념입니다. 중요하게, 큐레이터의 연결 상태 처리가 3.x 및 버전 3.x 이상 이전 버전에서 변경되었습니다.

3.x 이전에는 큐레이터의 연결 상태가 ZooKeeper 세션과 관련이 없었습니다. 연결 상태 LOST는 구성된 RetryPolicy가 포기했음을 의미합니다. 큐레이터 3.x 이상에서 앙상블에 대한 연결이 끊어지면 큐레이터는 내부 타이머를 설정하고 해당 타이머가 협상 된 세션 시간 초과를 통과하여 ZooKeeper 앙상블에 재 연결하기 전에 큐레이터가 LOST로 변경되고 세션 시간 제한을 "fake"로 설정합니다 내부적으로 관리되는 ZooKeeper 핸들.

이 여기에 설명되어 있습니다 : http://curator.apache.org/errors.html

+0

감사 @Randgalt, 나는 문서를 읽을 수 있지만 난 여전히 혼란스러워했다. 버전 3.x 이상에서는 세션이 만료 된 후 (watch/ephemeral nodes) 연결을 복구하는 데 아무 것도하지 않고 수동으로 처리해야합니다. – rodi

+0

원시 API를 쓰고 있다면 예 (그렇다고 할 방법이 없습니다)를 복구해야합니다. 그러나 사전 제작 된 큐레이터 레서피를 사용하면이 모든 것이 사용자를 위해 처리됩니다. 그래서 나는 항상 다음과 같이 말합니다 : https://cwiki.apache.org/confluence/display/CURATOR/TN6 – Randgalt