Ebook details

Projektowanie systemów rozproszonych. Wzorce i paradygmaty dla skalowalnych, niezawodnych usług z wykorzystaniem Kubernetesa. Wydanie II

Projektowanie systemów rozproszonych. Wzorce i paradygmaty dla skalowalnych, niezawodnych usług z wykorzystaniem Kubernetesa. Wydanie II

Brendan Burns

Loading...
EBOOK

Brendan Burns prezentuje praktyczne wzorce i paradygmaty projektowe, które są niezbędne do budowy nowoczesnych aplikacji natywnych dla chmury!

Lalithkumar Prakashchand, programista w Meta Platforms

Rozpowszechnienie kontenerów i narzędzi do ich orkiestracji zrewolucjonizowało sposób projektowania i rozwijania systemów rozproszonych. Dziś projektanci mają do dyspozycji gotowe obiekty, interfejsy, a także coraz bogatszy zestaw sprawdzonych wzorców. Dzięki temu mogą budować komponenty nadające się do wielokrotnego użytku i łatwo skalować całe systemy.

To drugie, zaktualizowane wydanie popularnego podręcznika przedstawia bogatą kolekcję wzorców, dzięki którym tworzenie niezawodnych aplikacji rozproszonych staje się prostsze i bardziej efektywne. Zastosowanie komponentów wielokrotnego użytku pozwala uniknąć ciągłej reimplementacji tych samych rozwiązań, a praktyczne wzorce opisane w książce świetnie sprawdzają się w pracy z systemem Kubernetes. To niezbędny przewodnik dla każdego architekta i inżyniera oprogramowania, który chce budować skalowalne i odporne na awarie aplikacje natywne dla chmury.

W książce:

  • koncepcje i podstawowe pojęcia dotyczące systemów rozproszonych
  • wzorce jednowęzłowe: Przyczepa, Adapter i Ambasador
  • wzorce serwowania usług i programowanie zdarzeniowe
  • wzorce wsadowego przetwarzania danych
  • infrastruktura sztucznej inteligencji
  • typowe błędy projektowe, monitorowanie aplikacji i reakcje na typowe awarie

Lektura obowiązkowa dla inżynierów odpowiedzialnych za niezawodność witryn internetowych, a także programistów, którzy chcą w pełni wykorzystać możliwości systemu Kubernetes.

Swapnil Shevate, inżynier i pasjonat niezawodnych witryn internetowych

Przedmowa

Część I. Podstawowe pojęcia

  • 1. Wprowadzenie
    • Krótka historia rozwoju systemów
    • Krótka historia wzorców w rozwoju oprogramowania
      • Formalizacja programowania algorytmicznego
      • Wzorce programowania obiektowego
      • Rozwój otwartego oprogramowania
    • Wartość wzorców, praktyk i komponentów
      • Stojąc na ramionach gigantów
      • Wspólny język do dyskusji na temat naszych praktyk
      • Współdzielone komponenty do łatwego ponownego wykorzystania
    • Podsumowanie
  • 2. Ważne pojęcia związane z systemami rozproszonymi
    • API i RPC
    • Opóźnienie
    • Niezawodność
    • Percentyle
    • Idempotentność
    • Semantyka dostarczania
    • Integralność relacyjna
    • Spójność danych
    • Orkiestracja i Kubernetes
    • Kontrola kondycji aplikacji
    • Podsumowanie

Część II. Wzorce jednowęzłowe

  • 3. Wzorzec Przyczepa
    • Przykład przyczepy: dodawanie HTTPS do starszej usługi
    • Dynamiczna konfiguracja za pomocą przyczepy
    • Modułowe kontenery aplikacji
      • Część praktyczna: wdrażanie kontenera topz
    • Budowanie prostej usługi PaaS za pomocą przyczepy
    • Projektowanie przyczep pod kątem modułowości i ponownego użycia
      • Parametryzacja kontenerów
      • Definiowanie API każdego kontenera
      • Dokumentowanie kontenerów
    • Podsumowanie
  • 4. Wzorzec Ambasador
    • Używanie ambasadora do fragmentowania usługi
      • Część praktyczna: implementacja pofragmentowanej usługi Redis
    • Używanie ambasadora do pośredniczenia między usługami
    • Używanie ambasadora do eksperymentowania lub rozdzielania żądań
      • Część praktyczna: implementacja 10% eksperymentów
    • Podsumowanie
  • 5. Wzorzec Adapter
    • Monitorowanie
      • Część praktyczna: monitorowanie za pomocą systemu Prometheus
    • Rejestrowanie
      • Część praktyczna: normalizowanie różnych formatów rejestrowania za pomocą fluentd
    • Dodawanie monitora poprawności działania
      • Część praktyczna: dodawanie wszechstronnego monitorowania kondycji MySQL
    • Podsumowanie

Część III. Wzorce serwowania usług

  • 6. Zreplikowane usługi o zrównoważonym obciążeniu
    • Usługi bezstanowe
      • Sondy gotowości dla mechanizmu równoważenia obciążenia
      • Część praktyczna: tworzenie zreplikowanej usługi w Kubernetesie
    • Usługi ze śledzeniem sesji
    • Zreplikowane usługi warstwy aplikacji
    • Wprowadzenie warstwy buforowania
      • Wdrażanie pamięci podręcznej
      • Część praktyczna: wdrażanie warstwy buforowania
    • Rozszerzanie warstwy buforowania
      • Ograniczanie przepustowości i obrona przed atakiem DoS
      • Przerywanie połączenia SSL
      • Część praktyczna: wdrażanie serwera nginx i przerywania połączenia SSL
    • Podsumowanie
  • 7. Usługi pofragmentowane
    • Pofragmentowane buforowanie
      • Dlaczego możesz potrzebować pofragmentowanej pamięci podręcznej?
      • Znaczenie pamięci podręcznej dla wydajności systemu
      • Zreplikowane pofragmentowane pamięci podręczne
      • Część praktyczna: wdrożenie ambasadora i systemu memcached dla pofragmentowanej pamięci podręcznej
    • Funkcja fragmentująca
      • Wybór klucza
      • Spójne funkcje haszujące
      • Część praktyczna: budowanie spójnego fragmentującego pośrednika HTTP
    • Pofragmentowane zreplikowane serwowanie usług
    • Systemy fragmentowania na gorąco
    • Podsumowanie
  • 8. Wzorzec Rozrzucaj-Zbieraj
    • Wzorzec Rozrzucaj-Zbieraj z węzłem głównym jako dystrybutorem
      • Część praktyczna: rozproszone wyszukiwanie dokumentów
    • Wzorzec Rozrzucaj-Zbieraj z fragmentowaniem liści
      • Część praktyczna: pofragmentowane wyszukiwanie dokumentów
      • Wybieranie odpowiedniej liczby liści
    • Skalowanie wzorca Rozrzucaj-Zbieraj pod kątem niezawodności i skali obliczeniowej
    • Podsumowanie
  • 9. Funkcje i przetwarzanie oparte na zdarzeniach
    • Kiedy FaaS ma sens?
      • Zalety FaaS
      • Wyzwania FaaS
      • Potrzeba przetwarzania w tle
      • Potrzeba przechowywania danych w pamięci
      • Koszty ciągłego przetwarzania opartego na żądaniach
    • Wzorce dla usług FaaS
      • Wzorzec Dekorator: transformacja żądań lub odpowiedzi
      • Część praktyczna: ustawianie wartości domyślnych żądania przed jego przetworzeniem
      • Obsługa zdarzeń
      • Część praktyczna: implementowanie uwierzytelniania dwuetapowego
      • Potoki oparte na zdarzeniach
      • Część praktyczna: implementowanie potoku w celu rejestracji nowego użytkownika
    • Podsumowanie
  • 10. Wybór własności
    • Czy musisz wybierać węzeł główny?
    • Podstawy wyboru węzła głównego
      • Część praktyczna: wdrażanie etcd
      • Implementacja blokad
      • Część praktyczna: implementowanie blokad w etcd
      • Implementowanie własności
      • Część praktyczna: implementowanie dzierżaw w etcd
    • Obsługa jednoczesnej manipulacji danymi
    • Podsumowanie

Część IV. Wzorce przetwarzania wsadowego

  • 11. Systemy kolejek roboczych
    • Ogólny system kolejki roboczej
      • Interfejs kontenera źródłowego
      • API kolejki roboczej
      • Interfejs kontenera roboczego
      • Infrastruktura współdzielonej kolejki roboczej
    • Część praktyczna: implementacja generowania miniaturek plików wideo
    • Dynamiczne skalowanie węzłów roboczych
    • Wzorzec Wiele Węzłów Roboczych
    • Podsumowanie
  • 12. Przetwarzanie wsadowe oparte na zdarzeniach
    • Wzorce przetwarzania opartego na zdarzeniach
      • Kopiarka
      • Filtr
      • Rozdzielacz
      • Fragmentator
      • Scalacz
    • Część praktyczna: budowanie przepływu opartego na zdarzeniach dla rejestracji nowego użytkownika
    • Infrastruktura "publikuj-subskrybuj"
    • Część praktyczna: wdrażanie Kafki
    • Niezawodność i wydajność w kolejkach roboczych
      • Kradzież pracy
      • Błędy, priorytety i ponowne próby
    • Podsumowanie
  • 13. Skoordynowane przetwarzanie wsadowe
    • Łączenie (synchronizacja barierowa)
    • Redukcja
      • Część praktyczna: zliczanie
      • Suma
      • Histogram
      • Część praktyczna: znakowanie obrazów i potok przetwarzania
    • Podsumowanie

Część V. Pojęcia uniwersalne

  • 14. Wzorce monitorowania i obserwowalności
    • Podstawy monitorowania i obserwowalności
      • Rejestrowanie w dzienniku
      • Wskaźniki
      • Podstawowe monitorowanie żądań
      • Zaawansowane monitorowanie żądań
      • Alarmowanie
      • Śledzenie
    • Agregowanie informacji
    • Podsumowanie
  • 15. Obsługa i wnioskowanie przez sztuczną inteligencję
    • Podstawy systemów sztucznej inteligencji
    • Hostowanie modelu
    • Dystrybucja modelu
    • Tworzenie z modelami
    • Generowanie wspomagane wyszukiwaniem
    • Testowanie i wdrażanie
    • Podsumowanie
  • 16. Typowe wzorce niepowodzeń
    • Szarżujące stado
    • Brak błędów jest błędem
    • Błędy klienta i błędy oczekiwane
    • Błędy wersjonowania
    • Mit opcjonalnych komponentów
    • Ups, wyczyściliśmy wszystko
    • Wyzwania związane z rozległością danych wejściowych
    • Przetwarzanie przestarzałych zadań
    • Problem drugiego systemu
    • Podsumowanie

Wniosek: nowy początek?

  • Title:Projektowanie systemów rozproszonych. Wzorce i paradygmaty dla skalowalnych, niezawodnych usług z wykorzystaniem Kubernetesa. Wydanie II
  • Author:Brendan Burns
  • Original title:Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Systems Using Kubernetes, 2nd Edition
  • Translation:Anna Mizerska, z wykorzystaniem fragmentów poprzedniego wydania w przekładzie Lecha Lachowskiego
  • ISBN:978-83-289-3148-0, 9788328931480
  • Date of issue:2026-01-13
  • Format:Ebook
  • Item ID: prsyr2
  • Publisher: Helion
Loading...
Loading...