mysql分布式如何实现原理_分布式通讯协议实现原理
分為兩個(gè)階段:投票表決階段和提交階段。
事務(wù)參與者完成系統(tǒng)相關(guān)業(yè)務(wù)成功后,通知協(xié)調(diào)者狀態(tài),當(dāng)所有的事務(wù)參與者業(yè)務(wù)狀態(tài)都成功后,
協(xié)調(diào)者才發(fā)出提交指令,參與者提交或者取消事務(wù)
一協(xié)調(diào)者 二事務(wù)的參與者(一般有多個(gè)事務(wù)參與者),
①協(xié)調(diào)者處于init階段,收到系統(tǒng)的commit請(qǐng)求時(shí),向參與者多播vote-request后轉(zhuǎn)入wait狀態(tài)(阻塞),當(dāng)接收到所有參與者的返回消息后,如果其中包含abort(終止)信息,多播global-abort,否則進(jìn)入commit狀態(tài)。
②參與者處于init狀態(tài),接收到協(xié)調(diào)者的vote-request消息后,發(fā)出commit然后進(jìn)入ready狀態(tài),告訴協(xié)調(diào)者進(jìn)入ready狀態(tài),否則返回一個(gè)abort信息,等待協(xié)調(diào)者。如果收到global-abort則進(jìn)入aboort狀態(tài),如果收到global-commit則進(jìn)入commit狀態(tài)。
2.3pc
分為三個(gè)階段:Cancommit階段,Precommit狀態(tài)和Docommit狀態(tài)。
①? ? 事務(wù)查詢(xún):協(xié)調(diào)者向參與者發(fā)送Cancommit請(qǐng)求,詢(xún)問(wèn)是否可以執(zhí)行事務(wù)提交操作,然后開(kāi)始等待參與者的響應(yīng)。
響應(yīng)反饋:參與者接收到Cancommit請(qǐng)求后,正常情況下,如果自身認(rèn)為可以執(zhí)行,則響應(yīng)yes,并進(jìn)入預(yù)備狀態(tài),否則反饋no。
1 請(qǐng)求階段,協(xié)調(diào)者通知事務(wù)參與者準(zhǔn)備提交或取消事務(wù),然后進(jìn)入表決過(guò)程,在表決過(guò)程中,參與者將告知協(xié)調(diào)者自己的決策,同意或者取消
2 提交階段 在提交階段,協(xié)調(diào)者將根據(jù)第一階段的決策結(jié)果,提交或者取消,當(dāng)且僅當(dāng)所有參與者都同意,協(xié)調(diào)者才通知所有的參與者提交或者取消事務(wù),
總結(jié)
以上是生活随笔為你收集整理的mysql分布式如何实现原理_分布式通讯协议实现原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 小白学习Java技术知识点总结,其实学习
- 下一篇: mysql执行计划查看_查看Mysql执