欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

分布式数据库【4、可用性、CAP原理、BASE原理】

程序员文章站 2022-05-13 11:22:19
...

本文重点分析、研究分布式数据库的可用性 高可用性定义【high availability】是指分布式数据库在几乎所有情况下都能够正常的工作,【思考】,分布式数据库必须能够检测故障;能够重新配置系统且继续计算; 明确区分站点故障与网络划分【partition】是不可能

本文重点分析、研究分布式数据库的可用性

高可用性定义【high availability】是指分布式数据库在几乎所有情况下都能够正常的工作,【思考】,分布式数据库必须能够检测故障;能够重新配置系统且继续计算;

明确区分站点故障与网络划分【partition】是不可能的,也就是S1、S2无法通信不能确定是因为站点故障的原因还是站点间链路出现问题导致;

站点重建/恢复的复杂性,远远不像看着这么简单,其需要考虑事务的当前执行情况、数据项的更新;


CAP定理;consistency availability partition- tolerance

BASE性质:

基本上可用;basically available:主要的需求是可用性,既是出现划分的情况下,也应该允许更新、哪怕以牺牲一致性为代价

软状态:soft state,网络划分可能导致数据库每个副本都有一定程度不同的状态,从而导致整体状态不明

最终一致性:eventually consistent:当解决完划分后,要求最终所有副本形成一致;


==分布式数据库概要总结

1、分布式数据库由多个站点构成,每个站点具备自己的db、局部事务;全局事务需要访问各个站点的数据,且在各个站点间通信;

2、分布式数据库涉及到分片及复制、对用户而言最大透明化;

3、广泛使用的全局事务处理协议2PC协议,但是容易产生阻塞、死锁问题;

4、持久消息为分布式事务处理提供了一种可选模式,该模式将单个事务拆分成可在不同数据库执行的多个部分;持久消息被传送到需要采取动作的远程站点,能够避免2PC的阻塞问题,但是需要app程序编写代码处理各种类型的故障;

4、为了提高可用性,分布式db需要能够检测故障、并且重构系统、且在站点或者链路修复后能够恢复。由于站点故障与网络划分的故障很难区别,因此这个任务比较复杂。