当前位置:网站首页>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
边栏推荐
- Simulation volume leetcode [general] 1218 Longest definite difference subsequence
- 中英对照:You can do this. Best of luck祝你好运
- JWT-JSON WEB TOKEN
- 数据库隔离级别
- 模拟卷Leetcode【普通】1062. 最长重复子串
- F - True Liars (种类并查集+DP)
- 生物医学英文合同翻译,关于词汇翻译的特点
- My daily learning records / learning methods
- JMeter做接口测试,如何提取登录Cookie
- sourceInsight中文乱码
猜你喜欢
Making interactive page of "left tree and right table" based on jeecg-boot
Transfert des paramètres de la barre d'adresse de la page de liste basée sur jeecg - boot
Modify the list page on the basis of jeecg boot code generation (combined with customized components)
今日夏至 Today‘s summer solstice
sourceInsight中文乱码
Postman core function analysis - parameterization and test report
JDBC requset corresponding content and function introduction
LeetCode 1200. Minimum absolute difference
Customize the gateway filter factory on the specified route
MySQL is sorted alphabetically
随机推荐
今日夏至 Today‘s summer solstice
模拟卷Leetcode【普通】1414. 和为 K 的最少斐波那契数字数目
MFC dynamically creates dialog boxes and changes the size and position of controls
自定义指定路由上的Gateway过滤器工厂
php使用redis实现分布式锁
selenium源码通读·9 |DesiredCapabilities类分析
翻译公司证件盖章的价格是多少
国际经贸合同翻译 中译英怎样效果好
模拟卷Leetcode【普通】1296. 划分数组为连续数字的集合
win10无法操作(删除、剪切)文件
Py06 字典 映射 字典嵌套 键不存在测试 键排序
Private cloud disk deployment
Simulation volume leetcode [general] 1414 The minimum number of Fibonacci numbers with a sum of K
这些年用Keil遇到的坑
模拟卷Leetcode【普通】1143. 最长公共子序列
Win10 cannot operate (delete, cut) files
Simulation volume leetcode [general] 1143 Longest common subsequence
如何做好金融文献翻译?
Technology sharing | common interface protocol analysis
中英对照:You can do this. Best of luck祝你好运