为什么riak集群最好至少要五个节点以上

本文链接:http://blog.csdn.net/ddjohn/article/details/43523983

首先确保你正确地安装了riak,当你使用Riak Fast Track在开发或者测试环境快速创建3个节点,我们建议所有的生产环境至少部署5个节点,以此来确保你从riak的高可用性原则中受益.

部署五个或者更多的节点将提供最佳的性能并且随着集群扩展而增加.因为riak是通过增加节点来实现横向扩展,所以你会发现随着集群越来越庞大,性能,可靠性和吞吐量会越来越好. 较小规模的部署会危及系统的容错性和可用性:“健全”的复制要求(我们默认为三份),在较小的集群中,单点故障意味着复制的需求很可能得不到满足。这将导致性能下降并且增加数据丢失的风险.另外,小于5个节点的集群将使得75%至100%的节点需要响应每个请求,这将导致不必要的负载从而降低性能.

我们进一步看下三个节点和四个节点的情况.

 

容错性和性能在3个节点的集群下:

为了确保集群总是响应读写请求,riak建议一个理性的复制策略:在三个不同节点上保留三分副本.Riak的默认配置是至少需要四个节点,以确保没有一个单点保存任何特定的数据片段的多个副本。但这完全可能通过更改设置来确保在一个三个节点的集群中,三个副本存在于独立的节点中.另外你还有可能碰到单点故障或网络故障引起的副本放置问题.

当一个三节点的集群碰到节点实效或者网路分区时,默认的复制要求仍然是至少有三个节点来完成但此时只有两个或一个节点在工作.这会导致性能下降,并且有数据丢失的风险.

容错性和性能在4个节点的集群下:

由于复制需要用到3个节点,在一个拥有4个节点的集群中,针对特定数据的每一个请求都需要从75%至100%的节点中得到响应,这可能会降低集群的性能.如果碰到单点故障或者网络分区,你会碰到我们上面提到的问题.

如果改变默认的复制配置?

如果想在你的项目中使用正确的副本数量,只需要确保在集群中使用N+2个节点(N是上述原因的副本数量).

如果有5个节点:

当你的riak集群节点增加到5个时,集群中每个节点响应请求的百分比下降.riak做横向扩展就是基于这点的.遇到单点故障时,其他节点的数量足够大,可以确保你的数据不会丢失.

所以当你在测试或者开发环境中使用集群时,可以用较小规模的节点数量,但是当在生产环境中,节点的数量务必要大于等于5.

英文链接:http://basho.com/why-your-riak-cluster-should-have-at-least-five-nodes/

时间: 2024-10-20 05:27:52

为什么riak集群最好至少要五个节点以上的相关文章

自学总结redis第四部分(集群搭建以及增加和删除节点)

十六.redis集群 参考网站"https://redis.io/topics/cluster-tutorial" 16.1集群搭建 #下述是在一台机器模拟六个节点,3主3从 [[email protected] ~]# cd /application/ [[email protected] application]# cd redis [[email protected] redis]# mkdir redis-cluster [[email protected] redis-clu

使用kubeadm部署k8s集群07-扩容kube-scheduler到3节点

使用kubeadm部署k8s集群07-扩容kube-scheduler到3节点 2018/1/4 扩容 kube-scheduler 到 3 节点 连接到本节点的 apiserver [[email protected] kube-controller-manager]# cat /etc/kubernetes/manifests/kube-scheduler.yaml |grep '/etc/kubernetes' --kubeconfig=/etc/kubernetes/scheduler.

使用kubeadm部署k8s集群03-扩容kube-apiserver到3节点

使用kubeadm部署k8s集群03-扩容kube-apiserver到3节点 2018/1/3 扩容 kube-apiserver 到 3 节点 配置 kube-apiserver.yaml 分析 kube-apiserver 依赖的证书 为新节点生成专属证书 下发证书到对应的节点 确认每个节点的 apiserver 是否处于 Running 状态 配置 kube-apiserver.yaml ### 拷贝原 master 上的配置: [[email protected] ~]# mkdir

Ignite集群管理——基于静态IP的节点发现

Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. TcpDiscoverySpi 用于设置集群维持与节点发现的tcp通信ip,port. 2. TcpCommunicationSpi 用于设置业务数据(缓存数据)tcp通信的ip,port. 3. 两者的区别与联系 TcpDiscoverySpi用于维持管理集群,交换的是用户不感知的ignite内

cassandra集群缩容与剔除问题节点

今天在操作cassandra集群数据迁移时发生了一些意料之外的事情,服务器迁移前与迁移后同样为5台,但是不知道是什么原因导致的,迁移过后的节点居然多出了一台cassandra节点,个人瞬间感觉莫名其妙,但是问题节点的ip地址是原平台的cassandra数据库ip,所以感觉很不好,知道可能是因为那个环节出现了问题,因为是迁移演练所以没有决定删除所有数据,重新迁移只是将错误节点剔除了cassandra集群,操作如下: 官方文档建议 查看cassandra集群状态的命令 nodetool status

Redis集群中,是选择奇数节点还是偶数节点?(理论)

我们来通过一组组示例进行分析: 3节点环境:1个master.2个slave 存储空间:最大等于1个节点的容量.(如果是2个master的话,那么数据会丢失一部分) 冗余性:允许1个节点故障. 4节点环境:2个master.2个slave 存储空间:2个节点的容量. 冗余性:允许1个节点故障.(集群中,半数以上节点认为故障,才会选举.) 5节点环境:2个master.3个slave 存储空间:2个节点的容量. 冗余性:允许2个节点故障. 6节点环境:3个master.3个slave 存储空间:3

redis集群操作:增加和减少节点

一  增加节点: STEP1:  我们新建俩个服务,按照之前搭建的集群方式新增俩个节点:(一主一从master.slave) Master:7007   Slave: 7008 (1)创建7007/7008文件夹.拷贝redis.conf文件到对于的7007,7008目录下要进行修改配置文件. <root@localhost redis-cluster># mkdir 7007 7008 <root@localhost redis-cluster># cp 7001/redis.c

RocketMQ集群平滑下线或重启某个节点

1.现状描述 集群其中一台物理机未知原因导致单用户无法登陆机器,该物理机需要重启修改密码或者重装系统.该台为master节点,运行正常.配置策略为: 异步刷盘 主从异步复制 如果直接下线该master,由于主从异步复制,可能导致部分消息来不及复制到slave造成消息丢失.所以该方案不可行.另一种方案选择:关闭该broker的写入权限,待该broker不再有写入和消费时,再下线该节点. 2.关闭broker写权限  2表示只写权限,4表示只读权限,6表示读写权限 bin/mqadmin updat

向CDH5集群中添加新的主机节点

步骤一:首先得在新的主机环境中安装JDK,关闭防火墙.修改selinux.NTP时钟与主机同步.修改hosts.与主机配置ssh免密码登录.保证安装好了perl和python. 步骤二:上传cloudera-manager文件到/opt目录,修改agent配置文件:       vi /opt/cm-5.0.0/etc/cloudera-scm-agent/config.ini  server_host = Master 步骤三:在该代理节点创建cloudera-scm用户  useradd -