Cassandra 最佳实践系列(2) - 选型篇

简介: Cassandra最佳实践之选型,选择什么样子的机器

本文会从cassandra的选型,机器基本配置,节点数,基本使用介绍方面进行基本的介绍;

机器基本配置选择

Cassandra的性能使用可以随着机器的硬件配置,以及集群的节点数的横向和纵向的升级而相应的有所提升。

CPU

Cassandra内部会有很多地方使用多线程进行处理,一般配置里面对于读写而言,写操作是CPU bound,所以如果系统的写操作会相对多一点,对cpu的要求也会相对配置要好一点,一般至少是2c起步,如果是生产环境对写要求更高,相对的cpu核数应该更好。

内存

Cassandra使用java 语言编写,会用到jvm-on heap内存以及offheap内存,其中jvm预先想操作系统申请的内存大小是系统大小的1/2, 其中off-heap会使用于压缩元数据,bloom filter等等。官方建议生产环境内存不低于8G,但是具体可以视自己的需求再说,对于gc算法来说:

  • 堆内存小于12G,推荐cms算法;
  • 大于12G堆内存的话,可以使用G1 算法;

磁盘

对于cassandra而言有几个地方需要使用到磁盘,commitlog、hint、cache-file、sstable-file。其中对我们来说,我们需要重点关注commitlog的文件以及sstable的文件,因为写操作会先写commitlog,然后把数据丢到memtable,然后memtable会异步的dump到磁盘成为sstable的文件,而且sstable后台会进行异步的compaction操作合并成新文件。那么这里commitlog的会影响我们的写性能,常见的建议是commitlog的配置

磁盘与放置sstable的data 目录分开配置,commitlog单独配置一块盘,因为写commitlog的速度直接影响写操作的速度,所以建议commitlog的配置磁盘需要稍微好一点,但是容量不需要很大,因为commitlog的数据在相关memtable数据dump到磁盘以后就会删除。只有存留在memtable的数据在commitlog里面以做节点crash以后做replay使用。

存放sstable的磁盘可以使用HDD/SSD磁盘,相关cassandra有优化配置,那么这里的话可以使用多块磁盘组合使用Raid0或者cassandra所谓的JBOD方式,使用其他的Raid1-Raid5不是最优的使用推荐,因为在节点层面有多数据副本冗余。具体磁盘容量视集群业务需求以及其他配置来定。

节点数

Cassandra可以是单节点(需要设置replicat factor 为1),2个节点(replicat factor最多是2),3个节点,…..个节点,理论上的扩容是线性的,无上限的扩容,可以从1 到很大。但是常见一般300个物理节点基本是可以了。

目录
相关文章
|
Web App开发 前端开发 JavaScript
看看人家 阿里的 低代码引擎,多优雅!
特性 引擎协议 使用示例 工程化配置: cdn 可选方式:
|
消息中间件 存储 安全
深入理解 Qt 信号槽:高效沟通的桥梁
深入理解 Qt 信号槽:高效沟通的桥梁
1709 1
|
JavaScript
性能工具之 FlameGraph 火焰图
其实很多类似 perf 的工具都能生成火焰图,像 systemtap/dtrace 之类的 并且这个思路,现在在 js 优化、代码优化等各方面都有具体的应用了 至于怎么理解? 简单点说,就是看谁又平又宽
541 7
性能工具之 FlameGraph 火焰图
|
存储 安全 文件存储
网盘 vs NAS:选择合适的数据存储方式
随着科技的不断进步,科技的快速发展为我们提供了多种便捷的存储解决方案,我们有着多种便捷的数据存储解决方案可供选择,而且市面上也有很多相关的成熟的存储产品。在这些方案中,网盘和NAS(网络附属存储)是两种广泛应用且各具优势的存储方式,其中网盘提供即开即用、云端存储和多设备同步等特性,NAS则提供本地私有化存储、高效数据传输和高度可定制化等优点,二者可谓是“难分伯仲”。在实际应用中,你更倾向于使用哪种存储方式呢?那么本文就来网盘和NAS的优劣势,帮助有需要的人选择适合自己的数据存储解决方案。
1726 4
网盘 vs NAS:选择合适的数据存储方式
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
关系型数据库 索引 Perl
理解 postgresql.conf 的work_mem 参数配置
主要是通过具体的实验来理解 work_mem
7618 0
|
分布式计算 Hadoop 关系型数据库
Hadoop学习笔记(HDP)-Part.13 安装Ranger
本文详细介绍了在HDP集群中安装与配置Ranger的全过程,涵盖服务安装、插件启用、用户同步、权限及联合授权测试、审计日志查看,并通过HAProxy实现Ranger高可用部署,保障数据安全与系统稳定。
1036 0
|
存储 大数据 Java
基于SpringBoot的中医诊疗平台的设计与实现
基于SpringBoot的中医诊疗平台的设计与实现
590 0
|
固态存储 Apache Docker
Apache Doris IP变更问题详解
Apache Doris IP变更问题详解
1820 0
|
JavaScript 前端开发 Linux
Python 包管理(pip、conda)基本使用指南
Python 包管理(pip、conda)基本使用指南
1916 1