|
1 | 1 | \documentclass{slide} |
2 | 2 |
|
3 | 3 | %\usepackage{pgfpages} |
4 | | -%\setbeameroption{show notes on second screen} |
| 4 | +\setbeameroption{show notes on second screen} |
5 | 5 |
|
6 | 6 | \title{Distributed Computing III} |
7 | 7 | \subtitle{ |
|
19 | 19 |
|
20 | 20 | \questionanswer{What communication faults may occur?}{ |
21 | 21 | \begin{itemize}[<+(1)->] |
22 | | - \item Message not delivered \note<2>{Lost in transit.} |
23 | | - \item Message delayed \note<3>{Network delay or receiver overloaded,\\but message will be processed later.} |
24 | | - \item Receiver failed \note<4>{Receiver software has crashed or node has died.} |
25 | | - \item Receiver busy \note<5>{Receiver temporarily not replying\\(e.g. garbage collection has frozen other processes).} |
26 | | - \item Reply not received \note<6>{Request was processed but reply lost in transit.} |
27 | | - \item Reply delayed \note<7>{Reply will be received later.} |
| 22 | + \item Message not delivered \note<2>{Lost in transit} |
| 23 | + \item Message delayed \note<3>{Network delay or receiver overloaded,\\but message will be processed later} |
| 24 | + \item Receiver failed \note<4>{Receiver software has crashed or node has died} |
| 25 | + \item Receiver busy \note<5>{Receiver temporarily not replying\\(e.g. garbage collection has frozen other processes)} |
| 26 | + \item Reply not received \note<6>{Request was processed but reply lost in transit} |
| 27 | + \item Reply delayed \note<7>{Reply will be received later} |
28 | 28 | \end{itemize} |
29 | 29 | } |
30 | 30 |
|
|
40 | 40 | \item Query switches |
41 | 41 | \note<5>{Need permissions to do this.\\Will only have this in your own data centre.} |
42 | 42 | \item Timeout |
43 | | - \note<6>{UDP reduces network transmission time guarantee\\-- does not perform retransmission.} |
| 43 | + \note<6>{UDP reduces network transmission time guarantee\\~~~~-- does not perform retransmission} |
44 | 44 | \end{itemize} |
45 | 45 | } |
46 | 46 |
|
|
54 | 54 | \item How many retries? How often? |
55 | 55 | \item Exponential backoff with jitter |
56 | 56 | \item How long to wait to restart? |
57 | | - \item Too long reduces responsiveness. |
58 | | - \item Unacknowledged messages need to be sent to other nodes \\-- reducing performance. |
59 | | - \item Too short may prematurely declare nodes dead. |
60 | | - \item May lead to contention -- two nodes processing the same request. |
61 | | - \item May lead to cascading failure -- load is sent to other nodes, slowing them down so they are then declared dead \dots. |
| 57 | + \item Too long reduces responsiveness |
| 58 | + \item Unacknowledged messages need to be sent to other nodes \\~~~~-- reducing performance |
| 59 | + \item Too short may prematurely declare nodes dead |
| 60 | + \item May lead to contention -- two nodes processing the same request |
| 61 | + \item May lead to cascading failure -- load is sent to other nodes, slowing them down so they are then declared dead \dots |
62 | 62 | } |
63 | 63 |
|
64 | 64 | \definition{Idempotency}{ |
|
103 | 103 | Nodes in a distributed system may `lie'. \\--- Send faulty or corrupted messages or responses. |
104 | 104 | } |
105 | 105 | \note[itemize]{ |
106 | | - \item A message that causes the receiver to fail. |
107 | | - \item Incorrect responses (e.g. they have finished processing a message but haven't). |
108 | | - \item Can be due to faults or malicious hosts. |
109 | | - \item Difficult to deal with all possible variations of these faults. |
| 106 | + \item A message that causes the receiver to fail |
| 107 | + \item Incorrect responses (e.g. they have finished processing a message but haven't) |
| 108 | + \item Can be due to faults or malicious hosts |
| 109 | + \item Difficult to deal with all possible variations of these faults |
110 | 110 | } |
111 | 111 |
|
112 | 112 | \questionanswer{Can we design a system to be Byzantine fault tolerant?}{ |
|
115 | 115 | \note[itemize]{ |
116 | 116 | \item Most systems don't attempt to |
117 | 117 | \item Some need to (e.g. safety critical systems, blockchain, \dots) |
118 | | - \item Refer to CSSE3012 Safety Critical guest lecture. |
| 118 | + \item Refer to CSSE3012 Safety Critical guest lecture |
119 | 119 | } |
120 | 120 |
|
121 | 121 | \begin{frame}{Limited Fault Tolerance} |
|
173 | 173 |
|
174 | 174 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-01.png} |
175 | 175 | \note[itemize]{ |
176 | | - \item Normal message/event is sent from a Producer. |
| 176 | + \item Normal message/event is sent from a Producer |
177 | 177 | } |
178 | 178 |
|
179 | 179 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-02.png} |
180 | 180 | \note[itemize]{ |
181 | | - \item Normal message/event is queued (in Message Queue). |
| 181 | + \item Normal message/event is queued (in Message Queue) |
182 | 182 | } |
183 | 183 |
|
184 | 184 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-03.png} |
185 | 185 | \note[itemize]{ |
186 | | - \item Normal message/event is dequeued and processed by a Consumer. |
| 186 | + \item Normal message/event is dequeued and processed by a Consumer |
187 | 187 | } |
188 | 188 |
|
189 | 189 | \begin{frame} |
|
197 | 197 | \end{columns} |
198 | 198 | \end{frame} |
199 | 199 | \note[itemize]{ |
200 | | - \item Receiver can't process message. |
201 | | - \item Always fails -- Not due to transient failure. |
202 | | - \item Failed messages are retried. |
203 | | - \item Returned to front of queue -- Preserve message order. |
204 | | - \item Next receiver fails to process message -- Infinite loop. |
205 | | - \item Blocks sending of following messages. |
| 200 | + \item Receiver can't process message |
| 201 | + \item Always fails -- Not due to transient failure |
| 202 | + \item Failed messages are retried |
| 203 | + \item Returned to front of queue -- Preserve message order |
| 204 | + \item Next receiver fails to process message -- Infinite loop |
| 205 | + \item Blocks sending of following messages |
206 | 206 | } |
207 | 207 |
|
208 | 208 | % Next 5 slides are an example of a poison message blocking the queue. |
209 | 209 |
|
210 | 210 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-04.png} |
211 | 211 | \note[itemize]{ |
212 | | - \item This set of slides is an example of a poison message blocking the queue. |
213 | | - \item Poison message is at head of queue. |
| 212 | + \item This set of slides is an example of a poison message blocking the queue |
| 213 | + \item Poison message is at head of queue |
214 | 214 | blocking issue. |
215 | 215 | } |
216 | 216 |
|
217 | 217 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-05.png} |
218 | 218 | \note[itemize]{ |
219 | | - \item This set of slides is an example of a poison message blocking the queue. |
220 | | - \item Poison message is dequeued by a Consumer. |
| 219 | + \item This set of slides is an example of a poison message blocking the queue |
| 220 | + \item Poison message is dequeued by a Consumer |
221 | 221 | } |
222 | 222 |
|
223 | 223 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-06.png} |
224 | 224 | \note[itemize]{ |
225 | | - \item This set of slides is an example of a poison message blocking the queue. |
226 | | - \item Consumer fails (crashes). |
227 | | - \item Poison message is added back to the head of the queue (re-try). |
| 225 | + \item This set of slides is an example of a poison message blocking the queue |
| 226 | + \item Consumer fails (crashes) |
| 227 | + \item Poison message is added back to the head of the queue (re-try) |
228 | 228 | } |
229 | 229 |
|
230 | 230 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-07.png} |
231 | 231 | \note[itemize]{ |
232 | | - \item This set of slides is an example of a poison message blocking the queue. |
233 | | - \item Next Consumer dequeues poison message and fails (crashes). |
| 232 | + \item This set of slides is an example of a poison message blocking the queue |
| 233 | + \item Next Consumer dequeues poison message and fails (crashes) |
234 | 234 | } |
235 | 235 |
|
236 | 236 | \image[trim=40 90 40 90,clip,width=\textwidth]{diagrams/poison-message-08.png} |
237 | 237 | \note[itemize]{ |
238 | | - \item This set of slides is an example of a poison message blocking the queue. |
239 | | - \item Poison message is added back to the head of the queue again (re-try). |
| 238 | + \item This set of slides is an example of a poison message blocking the queue |
| 239 | + \item Poison message is added back to the head of the queue again (re-try) |
240 | 240 | \item Infinite loop ... |
241 | | - \item \textbf{Comment} that poison messages block processing regardless of how they're delivered. |
242 | | - \item A message queue or service isn't the key blocking point. |
243 | | - \item Async messages sent directly to a consumer requires it to queue them as they're processed, leading to the same blocking issue. |
| 241 | + \item \textbf{Comment} that poison messages block processing regardless of how they're delivered |
| 242 | + \item A message queue or service isn't the key blocking point |
| 243 | + \item Async messages sent directly to a consumer requires it to queue them as they're processed, leading to the same blocking issue |
244 | 244 | } |
245 | 245 |
|
246 | 246 | \questionanswer{What causes a message to be poisonous?}{ |
|
0 commit comments