跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Apache Cassandra
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{NoteTA |G1=IT }} '''Apache Cassandra''' 是一个开源的分布式[[NoSQL]]数据库管理系统,设计用于处理大量数据跨多台服务器的分布式存储,具有高可用性和无单点故障的特性。它最初由[[Facebook]]开发,用于解决其收件箱搜索问题,后于2008年开源并成为[[Apache软件基金会]]的顶级项目。 == 概述 == Apache Cassandra 采用[[分布式系统]]架构,具有以下核心特性: * '''线性可扩展性''':通过添加节点实现容量和吞吐量的线性增长 * '''高可用性''':无单点故障,支持多数据中心部署 * '''最终一致性''':基于[[CAP定理]]优先保证分区容错性(P)和可用性(A) * '''灵活的数据模型''':支持[[宽列存储]]模型 * '''高性能写入''':优化写入操作,适合时间序列数据等高频写入场景 == 架构设计 == Cassandra 采用[[P2P网络|对等网络]]架构,所有节点地位相同,数据通过[[一致性哈希]]算法分布在整个集群中。 <mermaid> graph TD A[Client] -->|读写请求| B[任意节点] B --> C[协调节点] C --> D[数据节点1] C --> E[数据节点2] C --> F[数据节点3] </mermaid> === 核心组件 === * '''节点(Node)''':存储数据的基本单元 * '''数据中心(Data Center)''':物理或逻辑分组的一组节点 * '''集群(Cluster)''':包含一个或多个数据中心 * '''分区器(Partitioner)''':决定数据在集群中的分布方式 * '''副本(Replica)''':数据复制的份数,由复制因子(Replication Factor)控制 == 数据模型 == Cassandra 使用类似[[键值存储]]的宽列模型,主要概念包括: * '''Keyspace''':类似关系数据库中的数据库 * '''Table''':包含多行数据的容器 * '''Partition Key''':决定数据物理分布的分区键 * '''Clustering Key''':决定分区内数据排序的聚簇键 示例数据定义语言(DDL): <syntaxhighlight lang="sql"> CREATE KEYSPACE IF NOT EXISTS alloy_tracing WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3}; CREATE TABLE traces ( trace_id uuid, span_id uuid, service_name text, start_time timestamp, duration int, tags map<text, text>, PRIMARY KEY (trace_id, span_id) ); </syntaxhighlight> == 查询语言 == Cassandra 提供类SQL的查询语言[[CQL]](Cassandra Query Language),但与标准SQL有重要区别: * 不支持JOIN操作 * 查询必须包含分区键 * 排序只能在分区内进行 示例查询: <syntaxhighlight lang="sql"> -- 查询特定追踪ID的所有span SELECT * FROM traces WHERE trace_id = 123e4567-e89b-12d3-a456-426614174000; -- 查询耗时超过100ms的span SELECT * FROM traces WHERE duration > 100000000 ALLOW FILTERING; </syntaxhighlight> == 实际应用 == Cassandra 被广泛应用于以下场景: * '''分布式追踪系统''':如[[Alloy]]、[[Jaeger]]的存储后端 * '''时间序列数据''':监控指标、IoT设备数据 * '''消息系统''':高吞吐量消息存储 * '''推荐系统''':用户行为数据存储 === 在Alloy中的应用 === 作为Alloy推荐的存储后端,Cassandra提供了: 1. 高写入吞吐量,适合频繁的span数据写入 2. 灵活的schema设计,适应不同格式的追踪数据 3. 内置TTL支持,自动清理过期追踪数据 == 安装与配置 == === 单节点开发环境 === 使用Docker快速启动Cassandra: <syntaxhighlight lang="bash"> docker run --name cassandra -d -p 9042:9042 cassandra:latest </syntaxhighlight> === 集群配置 === 配置cassandra.yaml关键参数: <syntaxhighlight lang="yaml"> cluster_name: 'AlloyCluster' num_tokens: 256 seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "192.168.1.1,192.168.1.2" listen_address: 192.168.1.1 rpc_address: 192.168.1.1 endpoint_snitch: GossipingPropertyFileSnitch </syntaxhighlight> == 性能调优 == * '''压缩策略''':根据读写比例选择LZ4或Snappy * '''缓存配置''':合理设置键缓存和行缓存 * '''一致性级别''':根据业务需求选择ONE、QUORUM或ALL * '''批量操作''':避免超大batch,通常不超过5KB == 与其他技术比较 == {| class="wikitable" |- ! 特性 !! Cassandra !! [[MongoDB]] !! [[PostgreSQL]] |- | 数据模型 || 宽列存储 || 文档存储 || 关系型 |- | 扩展方式 || 水平扩展 || 水平扩展 || 垂直扩展 |- | 一致性模型 || 最终一致 || 强一致/最终一致 || 强一致 |- | 适用场景 || 高频写入 || 灵活文档 || 复杂查询 |} == 参见 == * [[Alloy]] - 使用Cassandra作为存储后端的分布式追踪系统 * [[NoSQL]] - 非关系型数据库概览 * [[分布式系统]] - 分布式计算基础概念 == 参考资料 == {{Reflist}} [[Category:数据库管理系统]] [[Category:Apache软件基金会项目]] [[Category:NoSQL]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Main other
(
编辑
)
模板:NoteTA
(
编辑
)
模板:Reflist
(
编辑
)
模板:Reflist/styles.css
(
编辑
)
模块:Check for unknown parameters
(
编辑
)
模块:Crc32lua
(
编辑
)
模块:NoteTA
(
编辑
)
模块:WikitextLC
(
编辑
)