2012-07-31 3 views
2

카산드라가 어떻게 고 가용성을 보장하는지 이해하고 싶습니다. 내가 아는 것은 Cassandra 데이터베이스에 데이터를 쿼리 할 때 코디네이터라는 노드가 쿼리를 클러스터의 적절한 Cassandra 노드에 필요한 데이터와 함께 라우팅하는 경우입니다. 하지만 JDBC 연결 URL에서 지정하는 노드 (클러스터에서 코디네이터의 역할을한다고 생각합니다. 내가 틀렸다면 올바르게 수정하십시오) 자체가 다운 되었습니까? 이 경우 Cassandra가 어떻게 높은 가용성을 보장합니까?카산드라는 고 가용성을 어떻게 보장합니까?

개발자는 아마도 대체 메커니즘을 제공해야합니까?

답변

3

카산드라 클러스터에서는 모든 노드가 동일합니다. 클러스터 레벨에는 마스터 또는 코디네이터가 없습니다. 클러스터에 연결할 때 일반적으로 연결할 하나 이상의 노드를 지정하지만 일단 드라이버가 연결되면 다른 노드에 대해 알 수 있습니다. 즉, 연결된 첫 번째 노드가 중단되면 다른 노드를 인식하고 대신 다른 노드에 연결할 수 있습니다.

자체가 요청 된 데이터를 호스트하지 않는 (또는 하나 이상의 일관성 레벨이 지정되는) 노드로 조회가 보내지면 해당 노드는 조회의 조정자 역할을하지만 임시 역할이며, 모든 노드는 모든 쿼리에 대해 해당 역할을 수행 할 수 있습니다.

Astyanax와 같이 여러 노드에 연결하고 요청 된 데이터가 포함 된 노드를 파악하고 해당 노드에 대한 연결을 사용하여 쿼리 시간을 최소화하는 드라이버가 있습니다.

+0

도움 주셔서 감사합니다. 그러나 Astyanax는 더 높은 수준의 래퍼 arround cassandra 인 것처럼 보입니다. 순수한 JDBC 연결을 사용하여 cassandra와 상호 작용하고 싶습니다. 그 사건은 어떻게됩니까? –

+0

Cassandra JDBC 클라이언트 (http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/)는 Astyanax 또는 Hector 또는 Pelops와 같은 다른 중간 수준 드라이버만큼 발전 적이 지 않습니다. 그래서 당신은 자동 재접속에 관해서 운이 없다고 생각합니다. 그러나 응용 프로그램에서 클러스터의 노드 중 몇 개를 알고 있으면 최대 노드가 발견 될 때까지 노드에 차례로 연결을 시도 할 수 있습니다. 특수한 노드가 없기 때문에 결국 어떤 노드가 연결되는지는 중요하지 않습니다. – Theo