Введение
Окончание надежной передачи (TRB) - это проблема в распределенных вычислениях, которая включает в себя задачу передачи сообщения набор приемных процессов в присутствии ошибок. В частности, отправитель и любой другой процесс могут потерпеть неудачу ("сбой") в любое время.
Описание проблемы
Протокол TRB обычно организует систему в процесс отправки и набор процессов приема, которые могут включать в себя самого отправителя. Процесс называется "правильным", если он не терпит неудач в любой момент во время его выполнения. Цель протокола - передать данные ("сообщение") от отправителя к набору принимающих процессов. Процесс может выполнять много операций ввода-вывода во время выполнения протокола, но в конечном итоге "доставляет" сообщение, передавая его приложению на этом процессе, который вызвал протокол TRB. Протокол должен обеспечивать важные гарантии для процессов приема. Например, все правильные процессы приема должны передавать сообщение отправителя, если отправитель также правильный. Принимающий процесс может передать специальное сообщение ("отправитель неисправный"), если отправитель не удалось, но либо все правильные процессы будут доставлять или никто не будет. Таким образом, правильность процесса гарантируется тем, что данные, предоставленные ему, также были предоставлены всем другим правильным процессам. Точнее, протокол TRB должен удовлетворять четырем формальным свойствам, приведенным ниже. Окончание: каждый правильный процесс дает некоторую ценность. Валидность: если отправитель правильный и передает сообщение, то каждый правильный процесс доставляет целостность: процесс доставляет сообщение максимум один раз, и если он доставляет какое-то сообщение, то оно было передано отправителем. Соглашение: если правильный процесс доставляет сообщение, то все правильные процессы доставляют. Наличие неисправностей в системе затрудняет выполнение этих свойств. Простой, но недействительный протокол TRB может иметь отправителя, передающего сообщение всем процессам, и принимающие процессы, доставляющие сообщение, как только оно будет получено. Этот протокол, однако, не удовлетворяет соглашению, если могут возникнуть ошибки: если отправитель сбивается после отправки сообщения некоторым процессам, но до отправки его другим, то первый набор процессов может доставить сообщение, в то время как второй набор доставляет TRB, это тесно связано, но не идентично, с фундаментальной распределенной вычислительной проблемой консенсуса.
The presence of faults in the system makes these properties more difficult to satisfy. A simple but invalid TRB protocol might have the sender broadcast the message to all processes, and have receiving processes deliver the message as soon as it is received. This protocol, however, does not satisfy agreement if faults can occur: if the sender crashes after sending the message to some processes, but before sending it to others, then the first set of processes may deliver the message while the second set delivers
TRB is closely related, but not identical, to the fundamental distributed computing problem of consensus.