当前位置:网站首页>Distributed system basic (V) protocol (I)
Distributed system basic (V) protocol (I)
2022-07-06 06:28:00 【W_ dyyy】
1 Atomic submission (Atomic commit)
There are many processes in our distributed system ,p1,p2,p3...pn, We hope that every process can know what it should do , meanwhile , We also hope that each process can keep synchronized , Perform the same transaction , This is called Submit (commit). If a transaction is committed , Then all processes will know , And perform operations . for example : Maintain the consistency of each copy of the database . In the process , We have one of the biggest problems , be called error (fault), We may make many mistakes . There are two kinds of mistakes :
- Crash failures: The system stops working
- Byzantine failures: A Byzantine process can do anything , Even malicious system failure , such failure Better than the first crash failures Even worse
An atomic commit means that all processes commit or not commit at the same time . In an asynchronous system , Even if there is one, there is one crash failure, Consistency is also unattainable ( according to FLP principle ). And for a system in a broad sense , We also cannot judge whether a process is implemented very slowly or crash failure 了 .
2 nature
AC 1 All processes reach a decision (reach decision), Then it must be the same decision
AC 2 The process cannot return to the previous decision
AC 3 Only when all processes vote "yes" yes , To submit (commit)
AC 4 If it doesn't exist failure, And all processes are invested in “yes”, Then this decision must be commit
3 Two-phase commit(2PC)
two-phase commit The protocol is the simplest atomic submission Protocol , It is safe but not active ( namely , Not always at work ). In this Agreement , We have two roles :coordinator and participants.coordinator To all participants Send voting request information , be-all participants Send their votes to coordinator. If it is "no" that participant direct abort, If it is “yes”, Then participant wait for coordinator The response of the . When coordinator After receiving all the votes , If it's all “yes”, To all participants send out “COMMIT” news , If there is “no”, Then it throws “yes” Of participants send out “ABORT” news .
Now we know two-phase commit How it works , But in real life, faults often occur , Let's assume some faults . for example : Some participan Didn't receive coordinator To ask for a vote (vote request), Then it waits for the time to end , Then it will ABORT, According to the agreement , The whole system will ABORT.
If coordinator Failed to send decision news , Then we will be stuck in the last stage ,participant I don't know whether I should COMMIT still ABORT.
So we have two solutions to this problem :
- Cooperative Termination Protocol
- Recovery Protocol
First option Cooperative Termination Protocol, When one participant When you don't know what to do ( I don't know I should COMMIT still ABORT), It tells others it knows participants Broadcast inquiry , If you know something, you will tell it coordinator The choice of
The core idea of the second plan is : Suppose a process crash 了 , We can solve this problem by restarting crash. In order to know the previous state after the process restarts , We need logs to record , This log is called :DTLOG. in general , The function of this log is to save decisions : If participant vote “yes”, Then before sending a message , You must write to the log . If you vote “no”, Then write the log before and after sending the message . If coordinator Send the COMMIT Words , It must be recorded before sending , If it is ABORT Words , Before and after sending .
thus , We can get another AC:
AC 5 Perform any considering failure The algorithm of , At any time of execution , When failure Repaired , And it hasn't been new for a while failure, Then all the processes are finally decided .
4 Logging
It will be described in detail here DTLog Function and function of . We use according to the following rules DTLog, We will abbreviate Coordinator by C,Participant by P.
- When C When sending a voting request , stay DTLog Write on Start2PC. Including each participant Of id, And it can be written before or after sending log. It's interesting if you write before sending , Then if you write it right away crash 了 , No time to send vote request, So when you recover , You check log, You can see participant Of id list , So your state can be restored . And if you choose to write after sending , When the result is sent crash 了 , Didn't have time to write , Then after recovery, you can't log Find anything , You will send ABORT, It's also safe .
- If P vote “yes” Must be written before sending DTLog, because , If you write after sending , Then if you send it immediately crash 了 , Write what doesn't come log, So after you recover , You say you can't be in your log Find out what you invested before , Then you will execute ABORT, however , The fact is that you may have voted “yes”, And everyone voted “yes”, At this time, other processes may be executing COMMIT. If P vote “NO” In this case, you can record before and after sending
- If C decision COMMIT, It must be sent before log Write in COMMIT, If it is ABORT Before and after sending
- On receiving decision after ,P To write it log
边栏推荐
- 如何做好互联网金融的英语翻译
- 基于JEECG-BOOT的list页面的地址栏参数传递
- 模拟卷Leetcode【普通】1414. 和为 K 的最少斐波那契数字数目
- The pit encountered by keil over the years
- Is the test cycle compressed? Teach you 9 ways to deal with it
- 职场进阶指南:大厂人必看书籍推荐
- 测试周期被压缩?教你9个方法去应对
- Simulation volume leetcode [general] 1109 Flight reservation statistics
- Transfert des paramètres de la barre d'adresse de la page de liste basée sur jeecg - boot
- G - Supermarket
猜你喜欢
JWT-JSON WEB TOKEN
浅谈专项测试之弱网络测试
专业论文翻译,英文摘要如何写比较好
Luogu p2089 roast chicken
如何做好互联网金融的英语翻译
Summary of anomaly detection methods
Address bar parameter transmission of list page based on jeecg-boot
数据库-当前读与快照读
Selenium source code read through · 9 | desiredcapabilities class analysis
Engineering organisms containing artificial metalloenzymes perform unnatural biosynthesis
随机推荐
在uni-app中使用腾讯视频插件播放视频
Past and present lives of QR code and sorting out six test points
MySQL5.72.msi安装失败
How to extract login cookies when JMeter performs interface testing
模拟卷Leetcode【普通】1314. 矩阵区域和
Oscp raven2 target penetration process
LeetCode 731. My schedule II
Set the print page style by modifying style
D - How Many Answers Are Wrong
Customize the gateway filter factory on the specified route
基于JEECG-BOOT制作“左树右表”交互页面
Black cat takes you to learn UFS protocol Chapter 4: detailed explanation of UFS protocol stack
selenium源码通读·9 |DesiredCapabilities类分析
Py06 字典 映射 字典嵌套 键不存在测试 键排序
Resttemplate and feign realize token transmission
翻译影视剧字幕,这些特点务必要了解
Apple has open source, but what about it?
Properties file
模拟卷Leetcode【普通】1219. 黄金矿工
专业论文翻译,英文摘要如何写比较好