这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战html
Cassandra特性:各节点数据不一样,各个数据中心数据相同java
官方安装文档spring
cassandra.apache.org/doc/latest/…docker
docker pull cassandraapache
#检查是否拥有java环境
java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
复制代码
2.cassandra.apache.org/download/下载对应版本并 使用tar -zxvf命令解压 获得文件夹apache-cassandra-3.11.6(目前最新版本为3.11.10)ubuntu
tar -zxvf apache-cassandra-3.11.10-bin.tar.gz
mv apache-cassandra-3.11.10 cassandra
复制代码
3.增长文件目录windows
#建立数据目录
mkdir -p /root/app/cassandra/data
#建立日志目录
mkdir -p /root/app/cassandra/commitlog
#建立缓存目录
mkdir -p /root/app/cassandra/saved_caches
复制代码
4.修改第一台服务器172.16.77.26 配置文件 cassandra/conf/cassandra.yaml缓存
#集群名称,同集群名称相同服务器
cluster_name: '集群名称'
#数据目录
data_file_directories:
- /root/app/cassandra/data
#日志目录
commitlog_directory: /root/app/cassandra/commitlog
#缓存目录
saved_caches_directory: /root/app/cassandra/saved_caches
#集群种子节点ip,新加入的节点从种子节点同步数据,可为多个,中间逗号分隔
- seeds: "172.16.77.26,172.16.77.27,172.16.77.28"
#监听地址(本机ip或主机名)
listen_address: 172.16.77.26
#rpc地址(本机ip或0.0.0.0)
rpc_address: 172.16.77.26
#若是rpc_address设置为0.0.0.0,则放开此行注释
broadcast_rpc_address: 1.2.3.4
复制代码
5.修改第二台 服务器 172.16.77.27 配置文件 cassandra/conf/cassandra.yamlmarkdown
cluster_name: '集群名称'
#数据目录
data_file_directories:
- /root/app/cassandra/data
#日志目录
commitlog_directory: /root/app/cassandra/commitlog
#缓存目录
saved_caches_directory: /root/app/cassandra/saved_caches
#集群种子节点ip,新加入的节点从种子节点同步数据,可为多个,中间逗号分隔
- seeds: "172.16.77.26,172.16.77.27,172.16.77.28"
#监听地址(本机ip或主机名)
listen_address: 172.16.77.27
#rpc地址(本机ip或0.0.0.0)
rpc_address: 172.16.77.27
#若是rpc_address设置为0.0.0.0,则放开此行注释
broadcast_rpc_address: 1.2.3.4
复制代码
endpoint_snitch 对于跨数据中心的集群,此参数的值必须为GossipingPropertyFileSnitch;若是为SimpleSnitch,全部节点都会加入一个数据中心。
复制代码
若是有其余节点则照此规则继续
6.配置成功后 启动节点命令以下:
[root@localhost cassandra]# bin/cassandra -R
复制代码
(若是在root用户的话要加-R 不然报错)
application.yml
spring:
data:
cassandra:
keyspace-name: ks_test #keyspace名称
contact-points: {ip1,ip2,ip3} #
session-name: MyCluster #集群名称
port: 9042 #默认的端口
local-datacenter: datacenter1 #默认的数据中心
复制代码
@Data
@Table("t_test")
public class Ttest {
@PrimaryKeyColumn(name = "patient_id", type = PrimaryKeyType.PARTITIONED)
private Integer patient_id;
@PrimaryKeyColumn(name = "id", type = PrimaryKeyType.PARTITIONED) //复合主键
private Integer id;
private String details;
private UUID date;//由于Cassandra的date是基于事件的UUID
}
复制代码
public interface TtestRecordRepository extends JpaRepository<Ttest, Integer> {
List<Ttest> findAllById(Integer id);
}
复制代码
@Test
public void test2() {
log.info("开始准备数据");
List<Ttest> list = new ArrayList<>();
Long l = 16l;
UUID date = new UUID(l,l);
for (int i = 10; i < 1000; i++) {
Ttest ttest = new Ttest();
ttest.setPatient_id(i);
ttest.setId(i);
ttest.setDetails("123312");
list.add(ttest);
}
log.info("准备数据完毕");
log.info("开始插入数据");
ttestRecordRepository.saveAll(list);
log.info("插入数据完毕");
log.info("插入"+ttestRecordRepository.count()+"数据成功");
}
复制代码
官方文档:
cassandra.apache.org/doc/latest/…
在线体验网址: