cassandra진영인 datasax에서 재미난 시도들을 cassandra 2.0에 넣었다. 

https://issues.apache.org/jira/browse/CASSANDRA-5932


아래 내용은 반드시 읽어볼 만하다. 

http://www.datastax.com/dev/blog/rapid-read-protection-in-cassandra-2-0-2



보통은 아래와 같이 데이터를 읽어오는 가정속이다. 

 





그러나, replica가 죽으면, timeout을 낸다. 
 

하지만, replica가 죽으면 알아서 최적의 다른 노드를 읽어서 전달해주면 되면 된다.  이 것을 rapid read protection이라 불린다. 

아래 정보만 넣으면 된다고 한다. 
ALTER TABLE users WITH speculative_retry = '10ms';
ALTER TABLE users WITH speculative_retry = '99percentile';



2.0.2부터는 디폴트로 이 룰이 적용된다고 한다.



일반적으로 cassandra의 하나의 노드가 죽으면 출렁거리고, timeout이 빈번하게 일어난다. (사실 일반 nosql, db든지 대체적으로 이런 현상이 일어난다.) 그러나 rapid read protection을 적용하면 출렁임을 최소화 할 수 있다. 





그러나. 이슈는 있다. ConsistencyLevel.ALL는 완벽히 보장할 수 없다. 

부하가 많은 상황에서는 더 출렁거릴 수 있을 수 있다. 여유있게 운영할 수 있도록 서버를 늘릴 필요가 있다. 역시 운영의 묘가 필요한 법이다. 





Posted by '김용환'
,