2017-10-06 3 views
2

RF = 2로 설정하고 모든 읽기/쓰기는 CL = 1로 수행합니다. 세션을 열고, 엔트리를 작성하고, processin을 백엔드로하고, 다시 읽는 곳이 거의 없습니다. 이것은 대부분 작동하지만 때때로 Nil을 반환합니다. 우리는 조정자 노드의 읽기가 쓰기가 수행 된 노드와 다른 노드로 간다고 의심하고 있습니다. 필자는 조정자 노드가 양쪽 복제 노드에 읽기 요청을 보내고 올바르게 결과를 반환한다는 것을 알고 있습니다.RF = 2 및 CL = 1의 카산드라 즉각적인 일관성

새로 생성 된 행에 대해서만 일관성을 유지해야하는 경우가 대부분이므로 행에 대한 업데이트가 걱정되지 않습니다. 우리는 정말로 Quoram이 필요 없으며 RF = 2는 대부분 HA를 위해 하나의 노드가 손실되는 것을 허용합니다. RF = 2 및 CL = 1로 즉각적인 일관성을 유지하는 방법에 대한 지침은 크게 감사하겠습니다.

+0

다중 노드 클러스터에서 CL = 1과 거의 일관성을 유지할 수 없습니다. –

답변

1

에 QUORUM이있는 RF가 3 일 경우 단일 노드가 손실 될 수있는 기능과 즉각적인 일관성을 얻을 수 있습니다. 그 다음에는 그보다 적은 것이고 그것을 보장하는 것은 불가능합니다. 왜냐하면 한 노드가 다른 노드보다 먼저 변이를 보는 창문이 항상있을 것이기 때문입니다. CL 1 읽기/쓰기와 RF = 2

R + W > N to have a consistent read/write. 
R (number of nodes needed for read) + W (number of nodes needed for write) > N (number of nodes with data, RF) 

당신은 당신은 모든 읽거나 작성하고 당신이 당신의 일관성을 얻을 것 중 하나에 두 개 정족수 (만 사용할 수 있습니다 2. 없습니다> 인 1 + 1이 TWO와 QUORUM에 대해서는 rf = 2이기 때문에). 그러나 어떤 노드 실패라도 읽기 또는 쓰기 능력을 떨어 뜨릴 것이다.

+0

Chris 님의 답변에 감사드립니다. 우리는 대부분 Rf = 3과 Quoram을 사용합니다. 누군가 경험이 read_repair_chance = 1을 사용하고 있는지 알고 싶었습니다. 이를 통해 CL = 1로 작성할 수 있지만 읽기는 CL = ALL과 동일하며 하나의 노드 실패를 여전히 용납합니다. https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsRepairNodesReadRepair.html – Chetan

+0

노드 실패를 처리 할 수는 있지만 쿼리 일관성을 유지하지는 못합니다. read repair = 1.0 인 CL.ONE 쿼리는 여전히 일관성없는 데이터를 반환하지만 불일치가 발생하면 쿼리가 반환 된 이후에 비동기식으로 수정됩니다. 이는보다 높은 일관성 수준에서 읽기 읽기를 차단하는 것과 다릅니다. –