【什么是一致性】


在日常生活中,从行为角度看一致性意味着以同样的方式做某件事;
从名词角度看一致性还指事务的结构或内容及逻辑定理。
在IT领域,我们常在以下方面使用

  • 1、用户界面
  • 2、架构和代码风格
  • 3、ACID数据库的一致性
  • 4、CAP定理中的一致性
  • 5、名词术语

用户界面

用户界面中的一致性指用户操作和用户期望是一致的,例如保存文件,我们使用的快捷键是ctrl-s,如果一个软件保存的时候要求用户ctrl-alt-del组合键盘操作,会让用户产生意外。

架构和代码风格

概念上的一致性是系统设计中最重要的考虑因素,让一个系统反映出一套设计理念,比让一个系统包含许多优秀但独立不协调的理念要更容易维护。

ACID数据库的一致性

在遵循ACID原则的数据库中,一致性指的是ACID中的C,一致性和数据的完整性有关,任何ACID数据库都会阻止破坏约束,从而保证数据的一致性。
从这种含以上讲,有以下一致性的规则

  • 列上只存储定义类型的值,char类型的列,不能存储int
  • 唯一键在数据操作后保持唯一
  • 在操作之前和之后要满足约束条件的检查
  • 外键约束在操作之前和之后都要满足
    如果任何数据库操作违反了这些或其他一致性规则,相应的数据库操作或事务将被回滚

CAP定理中的一致性

CAP定理中的一致性和ACID数据库中的一致性不同,这里指的是任何读操作都能保证返回用户最近写的操作

强一致性

用户先进行写操作,下次一定能读取到写入的值。

弱一致性

用户先进行写操作,下次不一定能读取到写入的值,也不确定什么时候能读取到。

最终一致性

用户先进行写操作,如果后续没有写操作,系统最终能读取到写入的值。

名词术语

在项目中,偶然发现产品开发都在使用同一个术语,但词含义不同,有时在同一个项目使用不同的术语但又是同一个含义。

数据库和redis一致性

  • 没有完美的强一致性解决方案,除非在更新缓存之前,停止所有的读缓存操作,但是这样就失去了缓存的意义。能做的就是在缓存的不一致程度和缓存有效期之间做个权衡,尽可能减少不一致,建议先更新数据库,再删除缓存,为了保证两步都完成,需要加消息队列或订阅更新日志辅助。
  • 主库同步缓存的问题,为了等主库数据更新到从库,采用延迟删除缓存,根据业务情况,将缓存失效时间设置短些,或者强制读主库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lx_2014

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值