2017-03-14 4 views
1

Datastax C/C++ 드라이버에는로드 균형 조정 컨트롤의 일부로 블랙리스트 필터링 기능이 있습니다.Datastax Cassandra C/C++ 드라이버 cass_cluster_set_blacklist_filtering 기능

https://docs.datastax.com/en/developer/cpp-driver/2.5/topics/configuration/

내가 모르는 뭔가가하지만 내 이해가 CQL 클라이언트가 블랙리스트에 호스트에 연결할 수없는 경우 나 수정합니다.

나는 C/C++ 드라이버 V2.5 및 아래의 코드 블록을 사용하여 다중 노드 클러스터에 연결하려고 해요 :이 코드 블록에서

CassCluster* cluster = cass_cluster_new(); 
CassSession* session = cass_session_new(); 
const char* hosts = "192.168.57.101"; 
cass_cluster_set_contact_points(cluster, hosts); 
cass_cluster_set_blacklist_filtering(cluster, hosts); 
CassFuture* connect_future = cass_session_connect(session, cluster); 

CQL 클라이언트가 연결을 시도되는이 호스트를 블랙리스트로 설정. 그러나 CQL 클라이언트는이 호스트에 연결하여 모든 쿼리를 실행합니다. 위의 코드 블럭에 문제가 있습니까? 그렇지 않은 경우 예상되는 동작입니까? 다중 노드 클러스터이고 다른 피어와의 연결을 설정하기 때문에 다르게 작동합니까?

도움이 될 것입니다. 당신은 하나의 접점을 공급하고 있기 때문에

는 IP 주소가 클러스터에 제어 연결을 설정하는 데 사용되는 것을 사전

답변

0

에 감사드립니다. 일단 제어 연결이 설정되고 피어 테이블을 읽어 클러스터에서 사용 가능한 다른 노드를 결정하면 다른 노드에 연결됩니다. 이 시점에서 모든 쿼리는 초기/블랙리스트에있는 연락처가 아닌 다른 노드로 라우팅됩니다. 그러나 초기 접촉 지점에 대한 연결은 클러스터에 대한 제어 연결이므로 유지됩니다.

드라이버 내부에서 일어나는 일을 자세히 살펴 보려면 드라이버에서 로깅을 활성화 할 수 있습니다. 여기에 콘솔을 통해 로깅을 사용하도록 설정하는 예입니다

는 노드와 동일하지 않습니다 클러스터에 다른 접점을 제공 할 수 있습니다 블랙리스트 될 노드의 추가 연결을 줄이기 위해
void on_log(const CassLogMessage* message, void* data) { 
    fprintf(stderr, "%u.%03u [%s] (%s:%d:%s): %s\n", 
    (unsigned int) (message->time_ms/1000), 
    (unsigned int) (message->time_ms % 1000), 
    cass_log_level_string(message->severity), 
    message->file, message->line, message->function, 
    message->message); 
} 

/* Log configuration *MUST* be done before any other driver call */ 
cass_log_set_level(CASS_LOG_TRACE); 
cass_log_set_callback(on_log, NULL); 

(또는 노드)가 블랙리스트에 올 것입니다.

+0

제안 해 주셔서 감사합니다. 블랙리스트 정책은 C/C++ 드라이버에서 지원됩니다. C/C++ 드라이버 및 기타 언어 드라이버에서 지원하는 화이트리스트 정책도 있습니다. C/C++ 드라이버의 화이트리스트 정책을 사용하면 클라이언트는 화이트리스트에 포함되어 있지 않더라도 화이트리스트 호스트에 데이터를 저장합니다 (블랙리스트와 동일한 방식으로 작동). 화이트리스트 정책에 따라 Python 드라이버는 클라이언트가 화이트리스트에 포함되지 않은 노드에 연결하지 않습니다. 그래서, 나는 다른 언어의 datastax 드라이버가 화이트리스트 정책의 다른 구현을 가지고 있다고 가정합니다. –

+0

@MariosBraho 당신이 맞습니다, 파이썬 드라이버는 화이트리스트 호스트를 존중하고 호스트에 연결을 설정하지 않습니다. 당신이 그것을 추적하고자한다면 DataStax C/C++ Jira 보드에 티켓을 만들었습니다. https://datastax-oss.atlassian.net/browse/CPP-447. – Fero