今天带大家了解一下巨杉数据库中一些常用技术的概念和解释,方便大家更好的理解巨杉数据库的原理。
【要点1】二阶段提交
准备阶段:又称投票阶段。在这一阶段,协调者询问所有参与者是否准备好提交,参与者如果已经准备好提交则回复Prepared,否则回复Non-Prepared。
提交阶段:又称执行阶段。协调者如果在上一阶段收到所有参与者回复的Prepared,则在此阶段向所有参与者发送commit指令,所有参与者立即执行commit操作;否则协调者向所有参与者发送rollback指令,参与者立即执行rollback操作。
【要点2】Raft算法
在Raft中,任何时候一个服务器可以扮演下面角色之一:
Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader.
Follower: 类似选民,完全被动
Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。
Raft阶段大致分为两个,首先是选举过程,然后在选举出来的领导人带领进行正常操作,比如日志复制等。
1. 任何一个服务器都可以成为一个候选者Candidate,它向其他服务器Follower发出要求选举自己的请求。
2. 其他服务器同意了,发出OK。注意如果在这个过程中,有一个Follower当机,没有收到请求选举的要求,因此候选者可以自己选自己,只要达到N/2 + 1 的大多数票,候选人还是可以成为Leader的。
3. 这样这个候选者就成为了Leader领导人,它可以向选民也就是Follower们发出指令,比如进行日志复制。
4. 以后通过心跳进行日志复制的通知。
5. 如果一旦这个Leader当机崩溃了,那么Follower中有一个成为候选者,发出邀票选举。
6. Follower同意后,其成为Leader,继续承担日志复制等指导工作。
【要点3】多版本并发控制(MVCC)
Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代之的是把数据库的行锁与行的多个版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高数据库系统的并发性能。一句话讲,MVCC就是用同一份数据临时保留多版本的方式的方式,实现并发控制。
其中一些版本号的概念:
系统版本号:每开启一个事务,系统版本号就会自增
事务版本号:事务创建时的系统版本号
创建版本号:创建一个数据行快照时的系统版本号
删除版本号:如果快照的删除版本号大于事务版本号,说明该快照有效;否则表示该快照已经被删除。
事务和锁机制相关的机制,可以阅读我们今天的相关内容推送了解更详细的知识哦~
今日推荐阅读:巨杉 Tech | 并发性与锁机制解析与实践