연락처 노드가 죽었을 때 카산드라가 어떻게 작동합니까? Cassandra는 "n"노드의 링 구조를 가지고 있습니다. 클라이언트가 첫 번째 노드에 액세스하려고하지만 그것이 죽었 으면 말입니다. 첫 번째 노드는 Java 클라이언트에 지정됩니다. 오류 처리를 이해할 수 없습니다. 어느 누구도 나를 도울 수 있습니까?카산드라 클러스터링 실패 처리
답변
그것은 따라 달라집니다 클라이언트에서는 다른 클라이언트가이 문제를 처리하기 위해 여러 가지 작업을 수행하지만 대부분의 드라이버에서는 여러 개의 접점을 제공 할 수 있습니다.
Astyanax은 토큰 검색을 사용하여 클러스터의 다양한 노드를 추적합니다. Full docs here.
호스트 공급자는 연결 풀을 동적 호스트 레지스트리에 연결합니다. 연결 풀은이 공급 업체를 현재 호스트 목록에 대해 자주 폴링하고 새 호스트 나 제거 된 호스트를 고려하여 내부 호스트 연결 풀을 업데이트합니다.
이것은 당신이 당신의 컨텍스트를 설정할 때 중 구성됩니다
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
...
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
.setConnectionPoolType(ConnectionPoolType.TOKEN_AWARE)
)
...
context.start();
DataStax 자바 드라이버가 아니라 당신이 여러 접점을 제공 한으로 실패를 처리합니다. 3 개의 노드 중 하나가 살아있는 한 질의 할 수있는 것보다 복제 및 복제 계수가 3 인 노드가 3 개 (모든 데이터가 모든 노드에 있습니다.)합니다.
Cluster cluster = Cluster.builder()
.addContactPoint("127.0.0.1")
.addContactPoint("127.0.0.2")
.addContactPoint("127.0.0.3")
.build();
Session session = cluster.connect();
노드가 하나만 있거나 하나의 노드 만 지정하고 해당 노드가 작동 중지 된 경우 클라이언트는 연결할 수 없습니다 (분명히). 하지만 일반적으로 Hector와 같은 클라이언트 라이브러리는 노드 그룹을 지정하고 연결 풀을 유지 관리 할 수있게 해줍니다.
헥터 documentation 좀 더 세부 사항에 간다, 그러나 여러 노드를 지정하는 가장 간단한 방법은 클러스터 생성 할 때 CassandraHostConfigurator
에있는 호스트의 쉼표로 구분 된 목록을 통과하는 것입니다 :
String hosts = "node1.example.com:9160, node2.example.com:9160, node3.example.com:9160";
Cluster cluster = HFactory.getOrCreateCluster(CLUSTER_NAME, new CassandraHostConfigurator(hosts));
Hector Client를 사용하여 연결 풀을 만들 수 있습니까? Hector를 사용하는 연결 풀에 대한 정보를 제공하는 자습서가 있습니까? – Veera
- 1. 카산드라 클러스터링 단일 노드
- 2. 카산드라 데이터 모델링 및 클러스터링 설계
- 3. 스파크 + 카산드라. 클러스터링 순서 문제가있는 복합 키
- 4. 카산드라 :이 테이블을 만든 클러스터링 열
- 5. 카산드라 CQL3 클러스터링 순서 및 페이지 매기기
- 6. 카산드라 2.0.3 cqlsh 시작 실패
- 7. 데이터 클러스터링 - 데이터 사전 처리
- 8. 클러스터링 키가
- 9. 카산드라 화합물 클러스터링 키 및 순서 지정 쿼리
- 10. EJB, RMI, 클러스터링 처리 처리를 배포해야합니다.
- 11. 웹 API 실패 처리
- 12. GWT 호출 실패 처리
- 13. astyanax mutationbatch 실패 처리
- 14. TransactionScope 처리 실패
- 15. Robotium의 실패 사례 처리
- 16. PHPMailer : "수신자 처리 실패"
- 17. ASP.NET MVC에서 직접 처리 확인 실패 처리
- 18. 카산드라
- 19. 카산드라
- 20. 카산드라
- 21. 카산드라
- 22. 카산드라
- 23. 카프카 - 제작자 - 처리 "보내기 실패"
- 24. SSIS 유효성 검사 실패 처리
- 25. 처리 봄/톰캣 초기화 실패
- 26. Omniauth 인증 실패 콜백 처리
- 27. Gerrit/Jenkins의 테스트 실패 처리
- 28. 카산드라 - valid_from/valid_to 쿼리
- 29. 카산드라 2.0.11 - 열 수는
- 30. StreamInsight 서버 클러스터링
감사합니다. 따라서 클러스터링을 사용하는 경우 분명히 연결 풀을 사용하여 오류를 관리해야합니다. 나 라이트 야? – Veera
@ user2560319 나는 아직도 당신이 사용하고있는 클라이언트를 모른다. 그리고 Astyanax와 DataStax 드라이버는 연결 풀링을 처리한다. 헥터는 오래된 운전자이기 때문에 나는 그것을 피할 것이다. DataStax의 드라이버는 실패를 처리하는 데 가장 좋을 것이므로 Thrift 프로토콜을 사용해야하는 경우가 아니라면 권장 할 것입니다. –
죄송합니다. Hector Client를 사용하고 있습니다. 예를 들어, 실패를 처리하는 데 가장 적합한 드라이버를 작성하고 지원 기능이있는 기반 시스템을 만들려고한다면? – Veera