当前位置:网站首页>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的比较复杂的增删改功能的实现
- Redis core technology and basic architecture of actual combat: what does a key value database contain?
- B - The Suspects
- 商标翻译有什么特点,如何翻译?
- E - food chain
- Luogu p2089 roast chicken
- org.activiti.bpmn.exceptions.XMLException: cvc-complex-type.2.4.a: 发现了以元素 ‘outgoing‘ 开头的无效内容
- [Tera term] black cat takes you to learn TTL script -- serial port automation skill in embedded development
- Basic knowledge of MySQL
- Black cat takes you to learn UFS protocol Chapter 4: detailed explanation of UFS protocol stack
猜你喜欢
G - Supermarket
Win10 cannot operate (delete, cut) files
[web security] nodejs prototype chain pollution analysis
MySQL is sorted alphabetically
F - true liars (category and search set +dp)
Summary of anomaly detection methods
B - The Suspects
Modify the list page on the basis of jeecg boot code generation (combined with customized components)
数据库-当前读与快照读
Properties file
随机推荐
模拟卷Leetcode【普通】1414. 和为 K 的最少斐波那契数字数目
Convert the array selected by El tree into an array object
Left matching principle of joint index
在JEECG-boot代码生成的基础上修改list页面(结合自定义的组件)
Mise en œuvre d’une fonction complexe d’ajout, de suppression et de modification basée sur jeecg - boot
数据库-当前读与快照读
模拟卷Leetcode【普通】1249. 移除无效的括号
Simulation volume leetcode [general] 1061 Arrange the smallest equivalent strings in dictionary order
专业论文翻译,英文摘要如何写比较好
LeetCode 732. My schedule III
selenium源码通读·9 |DesiredCapabilities类分析
自定义指定路由上的Gateway过滤器工厂
Apple has open source, but what about it?
RestTemplate、Feign实现Token传递
win10无法操作(删除、剪切)文件
Black cat takes you to learn UFS protocol Chapter 4: detailed explanation of UFS protocol stack
模拟卷Leetcode【普通】1109. 航班预订统计
[mqtt from getting started to improving series | 01] quickly build an mqtt test environment from 0 to 1
E - food chain
【MQTT从入门到提高系列 | 01】从0到1快速搭建MQTT测试环境