Cassandra is a non-relational dataase, also known as NoSQL database,
designed to operate in distributed environment or cloud infrastructure.
https://github.com/daehwan2yo/cassandra-playground/wiki
learning for cassandra
Cassandra is a non-relational dataase, also known as NoSQL database,
designed to operate in distributed environment or cloud infrastructure.
https://github.com/daehwan2yo/cassandra-playground/wiki
reference
https://cassandra.apache.org/doc/3.11/cassandra/troubleshooting/use_nodetool.html
Cassandra의
nodetool
은 cluster의 특정 node 가 down 되면 문제 해결을 직접 할 수 있게 도와주며,
Cassandra process의 상태와 관련된 정보들을 직접 얻을 수 있게된다.
reference
datastax : https://docs.datastax.com/en/developer/java-driver/2.1/manual/pooling/
datastax java driver 는 Cassandra Binary Protocol 을 통해 TCP 로 cassandra 와 connection 을 맺을 수 있으며, 비동기적으로 여러 TCP connection 을 여러 동시 요청에대해 처리가능하도록 한다.
cassandra cluster 인스턴스를 구성하면서 Pooling 에 대한 옵션값들을 세팅한 PoolingOptions 객체를 주입할 수 있다.
PoolingOptions poolingOptions = new PoolingOptions();
// customize options..
Cluster cluster = Cluster.builder()
.withContractPoints(...)
.withPoolingOptions(poolingOptions)
.build();
cluster.getConfigration().getPoolingOptions(). ..(customize options) ...
pool size 는 PoolingOptions 의 내부 옵션값들을 세팅하며 변경 가능하다.
Cassandra 는 가용성(reliability)과 결함허용성을 위해 복제본은 여러 node에서 저장한다.
노드 생성과 제거에 있어 자동으로 빠르게 리밸런싱을 하기 위한 메커니즘이다.
Vnodes, 가상노드는 기존에 계산된 토큰을 갖는 노드들보다 더 미세하게 가상으로 토큰을 쪼개어 범위를 가상으로 정해 노드를 설정해둔다.
using virtual nodes
DataStax 는 8 vnodes 를 활용하는것을 추천한다.
num_tokens
num_tokens
를 적절하게 설정한다.
num_tokens
를 설정하는 것이 좋다.initial_token
nodetool repair
의 Full Repair
를 실행한다.
한 Cluster 내 의 같은 기능을 하는 node 들끼리 어떻게 서로를 알까?
snitch 를 통해 서로를 파악한다.
요청을 효과적으로 처리하기 위해 Cassandra에게 네트워크 분류(위상)을 알려준다.
Cassandra는 Cluster 전체에 replica 를 분산해 연관되는 오류들을 방지한다.
Dynamic Snitching Options
Simple Snitch (default)
RackInferring Snitch
PropertyFile Snitch
GossipingPropertyFile Snitch
EC2 Snitch
EC2 MultiRegion Snitch
p2p protocol, node 들이 주기적으로 상태 정보를 변경하는것을 p2p 를 통해 공유한다.
매초마다 실행되며, 최대 3개의 다른 노드와 상태를 공유한다.
공유가될때 자신의 정보 뿐만 아니라, 다른 노드로부터 받은 정보들을 함께 공유한다.
따라서 모든 노드는 클러스터내의 다른 모든 노드들의 정보를 빠르게 알 수 있다.
A. Through the snitch
snitch 는 Cassandra 내부에서 Cluster 내의 topology 를 알려주는 역할을 수행한다.
A. Gossip 은 Cluster 내부의 node 간 상태를 공유하기 위한 p2p protocol 을 의미한다.
Gossip is just use for the nodes to talk to themselves (internal communication)
Client Application 과 같은 외부 통신 (external) 은 CQL 혹은 Thrift 를 기반으로 동작한다.
기존에 Spring Data Jpa 를 사용할때 Jpa 에서 값을 자동으로 주입해주는
Auditing
기능을 Spring Data Cassandra 에서도 지원해준다.
https://docs.spring.io/spring-data/cassandra/docs/current/reference/html/#auditing
test-cluster
256
true
~/files/hints
Murmur3
~/files/data
~/files/commitlog
stop
stop
~/files/cache
SimpleSeedProvider,
ip 2개
해당 노드 ip
9042
0.0.0.0
false
false
true
GossipingPropertyFileSnitch
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.