Przewidywalność temporalna wydaje się silniejsza na Fogo
W większości systemów rozproszonych uważam, że czas jest elastyczny, a nie stały. Opóźnienia w sieci fluktuują, opóźnienia propagacji się wydłużają, a granice koordynacji subtelnie się przesuwają, na tyle, że ścisłe sekwencjonowanie nie może być zakładane. Z tego powodu zazwyczaj projektuję z poduszkami: dodatkowymi buforami, ponownymi próbami i szerszymi interwałami wykonawczymi, aby uwzględnić niepewność.
To nie było moje doświadczenie tutaj.
W ściśle zgrupowanych, o niskiej wariancji klastrach walidatorów Fogo, czasowanie bardziej odpowiadało oczekiwaniom w powtarzanych uruchomieniach. Dostarczanie wiadomości, fazy koordynacji i kolejność wykonania pozostawały w węższych granicach, niż normalnie bym przewidywał. Zamiast przenosić niestabilność czasową na aplikacje, sama sieć ją ograniczała.
Ta zmiana wpływa na projektowanie systemu.
Nie musiałem rozszerzać tolerancji sekwencjonowania ani zabezpieczać się przed nieprzewidywalnymi szczytami opóźnienia. Etapy wykonania były bardziej zgodne z planowanymi modelami czasowymi, co pozwoliło logice orkiestracji pozostać wierną swojej pierwotnej strukturze. Zamiast projektować wokół nieprzewidywalności temporalnej, mogłem polegać na bardziej zdyscyplinowanej ramie czasowej.
Na Fogo czasowanie zachowywało się mniej jak rozkład prawdopodobieństwa, a bardziej jak zaplanowany parametr, a to sprawiło, że koordynacja wydawała się zamierzona, a nie przybliżona.
$FOGO #fogo @Fogo Official