日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

数据源管理 | 分布式NoSQL系统,Cassandra集群管理

發布時間:2025/3/17 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据源管理 | 分布式NoSQL系统,Cassandra集群管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、Cassandra簡介

1、基礎描述

Cassandra是一套開源分布式NoSQL數據庫系統。它最初由Facebook開發,用于儲存收件箱等簡單格式數據,此后,由于Cassandra良好的可擴展性,逐漸發展成為了一種流行的分布式結構化數據存儲方案。

2、特點分析

彈性可擴展性

Cassandra是高度可擴展的;它允許添加更多的硬件以適應更多的客戶和更多的數據根據要求,可以根據業務的數據流量輕松擴展集群規模。

架構特點

Cassandra可以基于分布式運行,并采用了許多容錯機制。由于去中心化無主的策略,所以沒有單點故障。可以做到不停服滾動升級。這是因為Cassandra可以支持多個節點的臨時失效(取決于群集大小),對群集的整體性能影響可以忽略不計。并且Cassandra提供多地域容災。Cassandra允許將數據復制到其他數據中心,并在多個地域保留多副本,十分適用于不能承擔故障的關鍵業務,必須持續提供服務的應用程序。

數據存儲機制

Cassandra適應所有可能的數據格式,包括:結構化,半結構化和非結構化。可以根據業務的需要動態地適應變化的數據結構,并且通過在多個數據中心之間復制數據,可以靈活地在需要時分發數據。有許多案例證明Cassandra可以在金融,醫療,物聯網等領域使用。

資源整合能力

Cassandra可以很容易的跟其他開源組件做集成,其中包括Hadoop,Spark,Kafka,Solr等系列組件,成為大數據業務處理里面重要的一個角色。

二、集群環境搭建

1、環境概覽

  • jdk1.8
  • apache-cassandra-3.11.7-bin.tar.gz
  • centos7
  • 三臺服務:hop01、hop02、hop03節點

2、安裝包處理

tar -zxvf apache-cassandra-3.11.7-bin.tar.gz mv apache-cassandra-3.11.7 cassandra3.11

3、環境變量

[root@hop01 opt]# vim /etc/profileexport CASSANDRA_HOME=/opt/cassandra3.11 export PATH=$PATH:$CASSANDRA_HOME/bin[root@hop01 opt]# source /etc/profile

4、創建目錄

# 數據目錄 mkdir -p /data/cassandra/data # 日志目錄 mkdir -p /data/cassandra/log

5、集群配置

vim /opt/cassandra3.11/conf/cassandra.yaml# 配置集群名稱 cluster_name: 'CasCluster' # 配置數據目錄 data_file_directories:- /data/cassandra/data # 配置日志目錄 commitlog_directory: /data/cassandra/log # 設置監聽地址,當前服務IP listen_address: 192.168.72.132 # 配置RPC服務 start_rpc: true rpc_address: 192.168.72.132 # 配置集群節點 seed_provider:- class_name: org.apache.cassandra.locator.SimpleSeedProviderparameters:- seeds: "192.168.72.132,192.168.72.138,192.168.72.139"

將該配置分發到集群的每個節點,注意listen_address和rpc_address是節點自己的IP地址即可。

6、啟動集群

# 集群下節點依次執行啟動命令 cassandra -R # 查看節點狀態 nodetool status

7、基礎操作

進入命令行

cqlsh hop01

創建keyspace,并選擇

CREATE KEYSPACE IF NOT EXISTS castest WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':3};use castest ;

創建表,寫入數據

CREATE TABLE user_info (id int, user_name varchar, PRIMARY KEY (id) ); INSERT INTO user_info (id,user_name) VALUES (1,'user01');

查詢數據

select * from user_info ;

基于其他服務查看數據,可以看到數據已經在集群間做了同步過程:

三、集成SpringBoot框架

1、核心依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring.boot.version}</version> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-cassandra</artifactId><version>${spring.boot.version}</version> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId><version>${spring.boot.version}</version> </dependency>

這里核心需要cassandra依賴和操作的API依賴。

2、核心配置

spring:data:cassandra:keyspace-name: castestcontact-points: 192.168.72.138,192.168.72.132,192.168.72.139port: 9042cluster-name: CasCluster

keyspace-name:類似關系型數據庫的名稱;

contact-points:集群下節點的IP地址;

port:默認端口;

cluster-name:上述配置的集群名稱;

3、基于Template命令

CassandraTemplate模板類,實現了一系列操作Cassandra數據庫的基本方法,直接注入即可使用。

@Repository public class UserInfoTemplate {@Resourceprivate CassandraTemplate cassandraTemplate ;// 查詢全部數據public List<UserInfo> getList (){return cassandraTemplate.select("SELECT * FROM user_info",UserInfo.class) ;}// 添加數據public UserInfo insert (UserInfo userInfo){return cassandraTemplate.insert(userInfo) ;}// 根據主鍵查詢public UserInfo selectOneById (Integer id){return cassandraTemplate.selectOneById(id,UserInfo.class) ;}// 修改數據public UserInfo update (UserInfo userInfo){return cassandraTemplate.update(userInfo) ;}// 刪除數據public Boolean deleteById (Integer id){return cassandraTemplate.deleteById(id,UserInfo.class) ;} }

4、基于Repository接口

SpringBoot框架中定義的數據庫訪問核心接口。

接口實現

import com.cassand.cluster.entity.UserInfo; import org.springframework.data.repository.CrudRepository;public interface UserInfoRepository extends CrudRepository<UserInfo,Integer> {}

接口用法

@Service public class RepositoryService {@Resourceprivate UserInfoRepository userInfoRepository ;// 保存public UserInfo save (UserInfo userInfo){return userInfoRepository.save(userInfo) ;}// 查詢public UserInfo getById (Integer id){return userInfoRepository.findById(id).get() ;}// 修改public UserInfo update (UserInfo userInfo){// 主鍵ID存在的情況即為修改return userInfoRepository.save(userInfo);}// 刪除public void deleteById (Integer id){userInfoRepository.deleteById(id);} }

5、實體表結構

注意這里的注解是基于cassandra特定的一套。

import org.springframework.data.cassandra.core.mapping.Column; import org.springframework.data.cassandra.core.mapping.PrimaryKey; import org.springframework.data.cassandra.core.mapping.Table;@Table("user_info") public class UserInfo {public UserInfo(Integer id, String userName) {this.id = id;this.userName = userName;}@PrimaryKeyprivate Integer id ;@Column(value = "user_name")private String userName ; }

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/data-manage-parent GitEE·地址 https://gitee.com/cicadasmile/data-manage-parent

推薦閱讀:數據源管理系列

序號標題
01數據源管理:主從庫動態路由,AOP模式讀寫分離
02數據源管理:基于JDBC模式,適配和管理動態數據源
03數據源管理:動態權限校驗,表結構和數據遷移流程
04數據源管理:關系型分庫分表,列式庫分布式計算
05數據源管理:PostGreSQL環境整合,JSON類型應用
06數據源管理:基于DataX組件,同步數據和源碼分析
07數據源管理:OLAP查詢引擎,ClickHouse集群化管理
08數據源管理:Kafka集群環境搭建,消息存儲機制詳解
09數據源管理:搜索引擎框架,ElasticSearch集群模式

總結

以上是生活随笔為你收集整理的数据源管理 | 分布式NoSQL系统,Cassandra集群管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。