Cassandra 的简单的介绍

Cassandra是一个开源分布式NoSQL数据库系统。

特点

  • 本身不是一个数据库,而是有一堆数据库节点共同构成的一个分布式网络服务,对一个 Cassandra 的写操作,会被复制到其他节点上去,对 Cassandra 的读操作,也会被路由到某个节点上面去读取。
  • 易于水平扩展。只要添加节点就行
  • 是一个面向列的数据库,不向传统结构式数据库是用表来模拟关系。其实就是 Map 的嵌套
    这里我们使用 Docker 部署一个 Cassandra 的集群环境。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
version: '3'
services:
cassandra-1:
image: cassandra:3.11.7
container_name: cassandra-1
volumes:
- /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
- /data/cassandra-cluster/cassandra-1/cassandra:/var/lib/cassandra
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-1
ports:
- "7000:7000"
- "9042:9042"
restart: always
cassandra-2:
image: cassandra:3.11.7
container_name: cassandra-2
volumes:
- /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
- /data/cassandra-cluster/cassandra-2/cassandra:/var/lib/cassandra
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-2
- CASSANDRA_SEEDS=cassandra-1
ports:
- "7001:7000"
- "9043:9042"
depends_on:
- cassandra-1
restart: always
cassandra-3:
image: cassandra:3.11.7
container_name: cassandra-3
volumes:
- /opt/module/docker-compose/cassandra.yaml:/opt/cassandra/conf/cassandra.yaml
- /data/cassandra-cluster/cassandra-3/cassandra:/var/lib/cassandra
environment:
- CASSANDRA_BROADCAST_ADDRESS=cassandra-3
- CASSANDRA_SEEDS=cassandra-1
ports:
- "7002:7000"
- "9044:9042"
depends_on:
- cassandra-2
restart: always

说明

  • CASSANDRA_BROADCAST_ADDRESS: 控制向其他节点播发哪个IP地址
  • CASSANDRA_SEEDS:这个变量是用逗号分隔的IP地址列表,gossip 用来引导加入集群的新节点。

常用端口

  • 7199 - JMX(8080 pre Cassandra 0.8.xx)
  • 7000 - 节点间通信(如果启用了TLS,则不使用)
  • 7001 - TLS节点间通信(使用TLS时使用)
  • 9160 - Thrift客户端API
  • 9042 - CQL本地传输端口