Errors errors everywhere! – Notatka z nauki

przez Karol Bocian | 9 lipca, 2021

W ramach rozwijania się oglądam i czytam różne materiały. Następnie wiedzę z nich umieszczam w Anki oraz w notatkach i uzupełniam własnymi przemyśleniami. Ostatnio zapoznałem się z materiałem: Boiling Frogs 2018 – Daniel Pokusa – Errors errors everywhere!

Notatka z materiału: Errors errors everywhere:

Zanotowałem z tego materiału:

  • Fakt: rzeczy nie będą zawsze dobrze działały.
  • Należy zaakceptować ten fakt i przygotować się na ten moment.
  • Tworząc kod ze świadomością, że za chwilę coś przestanie działać.
  • Błędne założenia:
    • Sieć jest stabilna.
    • Na sieci nie ma opóźnień.
    • Przepustowość jest nieskończona.
    • Sieć jest bezpieczna.
    • Topologia sieci się nie zmienia.
    • Jest tylko jeden administrator sieci, serwerów i całością systemu.
    • Koszt transportu danych jest zerowy (infrastruktura, komunikacja).
    • Sieć jest jednorodna.
    • Twierdzenie CAP – w rozproszonych systemach musimy wybierać między spójnością, osiągalnością i odpornością na rozbicia, ponieważ nie jest możliwe jednoczesne utrzymanie tych wszystkich właściwości.
    • Twierdzenie PACELC – w przypadku partycjonowania danych w systemie rozproszonym trzeba wybrać między dostępnością a spójnością.
  • Sposoby na problemy:
    • Retry – ponowienie zapytania, gdy pierwsze się nie udało
      • Ile razy? 5 jest ok albo aż dojdziemy do maksymalnej wartości oczekiwania np. 30 sekund
      • Z wykładniczym opóźnieniem – np. zerowe po 1 sekundzie, pierwsze po 2, drugie po 4, trzecie po 8.
      • Możemy ponowienie zapytania zrobić po losowej liczbie milisekund.
    • Recover – wyzdrowienie
      • Circuit breaker – otwieranie aplikacji dla części requestów, aż całkowicie postawimy cały system.
    • Hospital queue – Z kolejki bierzemy request i pojawia się błąd:
      • Można zabić wykonywanie tego requestu.
      • Można zwrócić, że request jest zły.
      • Można wysłać request na specjalną kolejkę requestów psujących, a potem jeszcze raz ktoś ją spróbuje przetworzyć. Po kilku próbach przetworzeniach tego requesta, przesyłamy na kolejkę, którą przetworzy programista.
    • Backhead – trudne do wdrożenia
      • Połączenie serwisów tak, aby jak część przestanie działać, to aplikacja działa częściowo, a resztę wrzuca na kolejkę do przetworzenia później.
    • Compensating transaction
      • Przygotowanie transakcji wycofujących, gdy pojawi się błąd.
    • Scheduler Agent Supervisor – odpowiada za wykonanie wszystkich transakcji, a jeśli któraś się nie udała, to wycofuje pozostałe.

Wszystkie posty związane z notatkami z nauki:

Źródła

Obraz główny

Materiał: Errors errors everywhere:

Kategoria: Notatki z nauki

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.