=== Terminating Reliable Broadcast (TRB) ===
Один процесс шлёт сообщения всем остальным.
Но в отличие от обычного broadcast есть гарантия, что либо все получат и обработают сообщение, либо никто не обработает.
А с обычным broadcast часть процессов может упасть и не обработать.
Алгоритм должен завершиться за конечное время.
Отличие TRB от обычного Пример: в обычном broadcast посылающий может упасть в процессе broadcast: , тогда часть может получить получателей получит и обработатьобработает, а посылающий упалчасть даже не узнает.У других И у получателей нет гарантий про способа убедиться, что остальные тоже получили сообщение. На лекции было сказано, что консенсус эквивалентен TRB, а технические детали опущены.Английская Википедия не согласна ("RB is closely related, but not identical, to the fundamental distributed computing problem of consensus."<ref>https://en.wikipedia.org/wiki/Terminating_Reliable_Broadcast</ref>). Сведение: если есть консенсус, то можно сделать обоснованный консенсус из двух вариантов: "обрабатываем сообщение такое-то" и "не обрабатываем вообще".Тут, строго говоря, нужно ещё накладывать условия вроде "если хотя бы один не обработал, тоникто не обработал". Сведение: если есть TRB, то эмулируем централизованный алгоритм: каждый процесс делает TRB своего предложения, в конце все процессы получили ли остальные сообщенияодинаковое множество предложений, выбрали из них одно детерминированной функцией.