2015-01-29 1 views
7

나는 클라이언트가 카산드라에 삽입 할 수 있도록 웹 서비스 API를 가지고있다. 나는 datastax (http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Session.html) 페이지에서 응용 프로그램의 끝까지 세션과 클러스터 객체를 유지해야한다는 내용의 문서를 읽었습니다. 각 웹 API 호출 후에 session.close() 및 cluster.close()를 호출해야하는지 궁금 해서요. 아니면 웹 서버를 종료 할 때까지 세션을 유지해야합니까?session.close() 및 cluster를 호출해야합니까? close() 각 웹 API 호출 후

+1

포럼 사이트와 달리 "감사"또는 "모든 도움을 주셨습니다"또는 [그래서]의 서명을 사용하지 않습니다. "[안녕하세요, '고마워,'태그 라인 및 인사말을 게시물에서 삭제해야합니까?] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be 참조) - 게시물에서 제외되었습니다.) BTW, "고마워요"가 아닌 "미리 감사드립니다." –

답변

9

요청을받을 때마다 Session을 만들지 말 것을 권합니다. Cluster.connect을 통해 Session을 작성할 때마다 java 드라이버는 귀하의 Cassandra 클러스터에 대한 다수의 호스트에 대한 연결 풀을 작성합니다.

예를 들어 기본 설정을 사용하면 단일 데이터 센터에 8 개의 cassandra 노드가있는 경우 2.0.9 버전의 드라이버로 각 호스트에 8 개의 풀링 된 연결이 생성됩니다 (다음 버전에서는 2로 변경됨)). 이 경우 Session을 만들 때마다 64 개의 연결이 만들어집니다.

웹 서버에서 사용할 수있는 Session을 공유하는 것이 더 바람직합니다. 드라이버는 연결 당 여러 개의 요청 (2.0.x에서 기본적으로 연결 당 기본값 128)을 관리 할 수 ​​있으므로 단일 Session 개체를 공유 할 때 경합을 걱정할 필요가 없습니다.

+4

Andy가 설명하는 것 외에이 게시물은 http://www.datastax.com/dev/blog/4- 간단합니다. 캐스 산드라는 API를 최대한 활용할 수 있도록 기본적인 규칙을 제공합니다. –

+1

조언을 해 주시면 세션과 클러스터를 만들고 유지하십시오. 웹 서버 수명이 끝날 때까지 생존하고 있습니까? 즉, 세션이 영원히 살아 있다는 것을 의미합니까? 세션의 수명 시간을 서버 측으로 밀어 넣습니다. 좋은 생각입니까? 너무 많은 클라이언트가 카산드라는 동시에? –

+0

맞습니다. 카산드라에 연결할 클라이언트를 몇 명이나 계획하고 있습니까? 각각의 노드에 얼마나 많은 연결을 생성하는지에 신경 써야합니다. 많은 수의 고객이 카산드라에 연결하는 것에 대해 우려하는 경우 카산드라와 인터페이스하는 중간 서비스를 제공하는 것이 좋습니다. 이것에 대한 좋은 예는 모바일 앱입니다. 각 모바일 앱이 카산드라에 제대로 연결되는 것을 원하지 않습니까? 모바일 앱이 통신하는 백엔드 서버가있어 앱을 대신하여 cassandra에게 요청합니다. –

관련 문제