CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

我们先来区分一下“主备”和“主从”的分别:

主备:客户端只能访问主机,不会访问备机,备机存在的意义就是等主机挂掉以后接替主机;

主从:客户端既可以访问主机,也可以访问从机。

其实在Redis中,既可以使用主备模式,也可以使用主从模式,一般企业中使用主从的比较多。

无论是主备还是主从,一般主机都是包含全量的增删改查, 那么这个主自己又是一个单点,所以一般都会对主做HA,也就是高可用。

再强调一遍,高可用不是为了让主机不出现问题,而是当主机出现问题的时候,集群中会有另外一个去替换主,对外来就好像主是永远不出问题一样。那么这个过程其实可以让人工手动去切换,将备机切换成主机。但人工是这个世界上最不靠谱的,所以需要使用一些程序来解决这个自动的故障转移。

但是这个程序自己本身也会存在单点故障的问题,所以这个监控的程序也应该是个一变多的集群,假设现在有3个监控去监控一个Redis主机的时候,每个监控给出自己的判断,就会产生一个很经典的网络分区问题,也就是我们经常说的脑裂。A监控说挂了,B监控说没挂,那到底是挂了还是没挂?

所以,必然不能以每一台的结果作为判定标准,但也不能以所有监控的结果作为判定,因为统计所有的那么必然就是强一致性,强一致性会破坏可用性,只要有一个连接有问题,就会导致整个监控的结果不可用。所以需要设定一个数,到底判定几台的结果比较合理?假设一共有n台监控:

n % 2 == 0 ? n /2 +1 : (n + 1) / 2(一般在企业中将n取奇数台)

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。而由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。

【闲聊杂谈】Redis中的CAP理论相关推荐

  1. Eureka工作原理(Eureka简介Eureka ServerEureka Client自我保护机制分布式系统中的CAP理论Eureka 工作流程)

    一.Eureka简介 Eureka Server(注册中心,相当于zookeeper) Eureka Client: Provider Consumer 多个Eureka就叫集群.集群之间会定时通过r ...

  2. 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测.而且看了很多书和视频还是一脸懵逼.这篇文章主要使用大白话的方式,带你理解一下分布式系统中的CAP理论.保证你能听懂. 为 ...

  3. 浅论服务端应用程序开发中的CAP思想(非分布式系统中的CAP理论)

    本文从属于笔者的<服务端应用程序结构风格变迁之路> CAP理论是分布式系统构建中的基础理论之一,其中的C(Consistency),一致性即指所有的节点都能访问同一份最新的数据副本.A(A ...

  4. 分布式事务中的CAP理论

    CAP的含义: C:Consistency 一致性 同一数据的多个副本是否实时相同. A:Availability 可用性 可用性:一定时间内 & 系统返回一个明确的结果 则称为该系统可用. ...

  5. 分布式系统中的CAP理论和BASE理论详解

    一.CAP理论 CAP 理论/定理open in new window起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被 ...

  6. redis中的AKF理论和CAP理论详解

    redis的可用性 通过AKF理论构建集群 单机redis的会带来的问题 容量有限,内存有限 单点故障,挂机后,导致服务不可用 连接压力,I/O压力大,并发压力大 根据AKF理论解决上面的三个问题,分 ...

  7. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  8. CAP理论与MongoDB一致性、可用性的一些思考

    大约在五六年前,第一次接触到了当时已经是hot topic的NoSql.不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉.但是印象深刻的是这么一张图片( ...

  9. 【闲聊杂谈】聊一聊Redis中的Sorted Set

    1.前言 在Redis常见的5大数据类型中,List和Set作为集合容器经常会被使用,但这二者的弊端也是非常明显.List中的数据是有序但不去重,Set中的数据是去重但无序,当我们既需要集合中的数据有 ...

最新文章

  1. uniapph5配置index.html模板路径不生效解决办法
  2. cp命令复制目录 不覆盖
  3. java常用技术名词解析
  4. 到亿位的金额小写转大写JS代码
  5. cassandra可视化工具_一位数据科学家的私房工具清单
  6. oracle file参数,oracle的参数以及pfile和spfile
  7. shell获取某一行中指定字符后的内容
  8. 超大文件中查找关键字
  9. Layui 左部菜单栏无限级分类
  10. 文字处理技术:有哪些难点?
  11. python分布采样_python – 从有界域zipf分布中采样
  12. 华为digix算法大赛2020机器学习赛道-搜索相关性初赛A/B榜rank1
  13. 半糖主义的伤感空间日志推荐:心碎后,我们落泪
  14. 正版软件 |Windows 10 家庭版操作系统软件 终身授权
  15. 无需公网IP,免费内网穿透【cpolar】访问内网服务
  16. 射频信号源进阶使用技巧【转载自微信公众号微波射频网】
  17. 【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突
  18. 判定一棵二叉树是否是二叉搜索树
  19. Go语言如何捕获fatal致命错误并输出到日志
  20. 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)

热门文章

  1. English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
  2. 阿里云centOS7安装好Nginx设置外网可以访问80端口
  3. 如何正确使用步道乐跑
  4. python- 按指定列值筛选数据
  5. 修炼内功——理解函数栈帧创建和销毁
  6. Qt QDcokWidget 最大化
  7. HTML学生个人网站作业设计:电影网站设计——电影动漫言叶之庭(4页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  8. Python学习 Day43 数据解析-BeautifulSoup 07
  9. Linux虚拟机与主机无法Ping通,无法Ping通百度的解决办法
  10. win11开机声音如何关闭 windows11关闭开机声音的步骤方法