Po pierwsze, dwa artykuły o .net/c# Zookeeper rozpowszechniał blokady:
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
W rzeczywistości powyższe dwa artykuły są błędne! Całkowicie wprowadzam w błąd programistów!
O nasTutorial instalacji Zookeepera:
Zasada implementacji rozproszonej blokady Zookeeper jest wyjaśniona w prostych słowach:
1: Umieść wszystkie węzły potomne pod szafką
2: Wszystkie podwęzły są posortowane, oto dwie sytuacje
Jeśli Twój węzeł ma najmniejszy numer seryjny, to klient jest uważany za posiadającego blokadę. Możesz robić swoje! Jeśli Twój węzeł nie ma najmniejszego numeru seryjnego, to nie jest ten poprzedni, który jest mniejszy od Ciebie!! Zwróćcie uwagę! (Bo twój poprzedni węzeł może się skończyć i zwolnić blokadę!) )
3: Czekaj na powiadomienie Zookeepera, a następnie powtarzaj procedurę 2, pobierasz wszystkie węzły, sortuj je i oceń, czy jesteś najmniejszym węzłem............
Gdy już poznamy zasadę, przyjrzyjmy się, dlaczego dwa pierwsze wstępy artykułu są błędne?
Patrząc na przykład kolejności w artykule, wydaje się to poprawne, a wynik po biegu też jest poprawny! Jednak jeśli przetestujesz to kilka razy, przekonasz się, że kod w artykule jest całkowicie błędny!!!
Znając zasadę, napiszmy ją sami! Tak czy inaczej, to nie pierwszy raz, kiedy zostałem zaskoczony przez kod w Internecie!
Oto poprawny gif:
Kod wywoławczy:
Używana ZooKeeperNet.dll wersja to 3.4.6.1
Na koniec dołącz kod źródłowy:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź
|