這是我參與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/…
在線體驗網址: