Verteilte Systeme mit Kubernetes entwerfen

Book description

Container und Container-Orchestrierer haben die Entwicklung verteilter Systeme grundlegend verändert – es gibt jetzt Objekte und Schnittstellen für das Darstellen zentraler Muster für verteilte Systeme und das Bauen wiederverwendbarer, containerisierter Komponenten. Dieser praktische Ratgeber stellt Ihnen eine Reihe immer wieder einsetzbarer, generischer Muster vor, mit denen die Entwicklung zuverlässiger verteilter Systeme einfacher und effizienter geschehen kann.

Table of contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhalt
  5. Vorwort
  6. 1 Einführung
    1. Eine kurze Geschichte der System-Entwicklung
    2. Eine kurze Geschichte von Mustern in der Software-Entwicklung
    3. Formalisierung der algorithmischen Programmierung
    4. Muster für die objektorientierte Programmierung
    5. Der Aufstieg von Open-Source-Software
    6. Der Wert von Mustern, Praktiken und Komponenten
    7. Auf den Schultern von Riesen stehen
    8. Eine gemeinsame Sprache für Gespräche über unsere Praktiken
    9. Gemeinsame Komponenten für einfache Wiederverwendung
    10. Zusammenfassung
  7. Teil I: Single-Node-Muster
    1. Motivation
    2. Zusammenfassung
    3. 2 Sidecar
    4. Ein Beispiel-Sidecar: HTTPS für einen alten Service
    5. Dynamische Konfiguration mit Sidecars
    6. Modulare Anwendungs-Container
    7. Aus der Praxis: Den topz-Container deployen
    8. Mit Sidecars eine einfache PaaS bauen
    9. Modularität und Wiederverwendbarkeit durch Sidecars
    10. Container parametrisieren
    11. Die API jedes Containers definieren
    12. Dokumentieren Sie Ihre Container
    13. Zusammenfassung
    14. 3 Ambassador
    15. Mit einem Ambassador einen Service per Sharding aufteilen
    16. Aus der Praxis: Einen Sharded Redis implementieren
    17. Einen Ambassador zum Service Brokering einsetzen
    18. Mit einem Ambassador experimentieren oder Requests splitten
    19. Aus der Praxis: 10%-Experimente umsetzen
    20. 4 Adapter
    21. Monitoring
    22. Aus der Praxis: Prometheus für das Monitoring einsetzen
    23. Logging
    24. Aus der Praxis: Verschiedene Logging-Formate mit fluentd normalisieren
    25. Einen Health-Monitor ergänzen
    26. Aus der Praxis: Ausführliches Health Monitoring für MySQL
  8. Teil II: Serving-Muster
    1. Einführung in Microservices
    2. 5 Replizierte lastverteilte Services
    3. Zustandslose Services
    4. Readiness-Prüfungen für das Load Balancing
    5. Aus der Praxis: Einen replizierten Service in Kubernetes erstellen
    6. Services mit Session Tracking
    7. Replizierte Services auf Anwendungsebene
    8. Einziehen einer Caching-Schicht
    9. Ihren Cache deployen
    10. Aus der Praxis: Die Caching-Schicht deployen
    11. Die Cache-Schicht erweitern
    12. Rate Limiting und Denial-of-Service-Verteidigung
    13. SSL Termination
    14. Aus der Praxis: nginx und SSL Termination deployen
    15. Zusammenfassung
    16. 6 Sharded Services
    17. Sharded Caching
    18. Warum Sie einen Sharded Cache brauchen könnten
    19. Die Rolle des Cache für die System-Performance
    20. Replizierte Sharded Caches
    21. Aus der Praxis: Einen Ambassador und Memcache für einen Sharded Cache deployen
    22. Sharding-Funktionen
    23. Auswahl eines Schlüssels
    24. Konsistente Hashing-Funktionen
    25. Aus der Praxis: Einen konsistenten HTTP Sharding Proxy bauen
    26. Repliziertes Sharded Serving
    27. Hot Sharding Systems
    28. 7 Scatter/Gather
    29. Scatter/Gather mit Root-Verteilung
    30. Aus der Praxis: Verteilte Dokumentensuche
    31. Scatter/Gather mit Leaf Sharding
    32. Aus der Praxis: Sharded Dokumentensuche
    33. Die richtige Anzahl an Blättern wählen
    34. Scatter/Gather für mehr Zuverlässigkeit und bessere Skalierbarkeit replizieren
    35. 8 Funktionen und ereignisgesteuerte Verarbeitung
    36. Herausfinden, ob FaaS sinnvoll ist
    37. Die Vorteile von FaaS
    38. Die Herausforderungen von FaaS
    39. Der Bedarf für Hintergrundprozesse
    40. Der Bedarf für das Halten von Daten im Speicher
    41. Die Kosten einer dauerhaften Request-basierten Verarbeitung
    42. Muster für FaaS
    43. Das Decorator-Muster
    44. Aus der Praxis: Ein Request-Defaulting vor die Request-Verarbeitung schalten
    45. Umgang mit Ereignissen
    46. Aus der Praxis: Zwei-Faktor-Authentifizierung implementieren
    47. Ereignisbasierte Pipelines
    48. Aus der Praxis: Eine Pipeline für das Registrieren neuer Benutzer implementieren
    49. 9 Ownership Election
    50. Herausfinden, ob Sie überhaupt eine Master Election benötigen
    51. Grundlagen der Master Election
    52. Aus der Praxis: etcd deployen
    53. Locks implementieren
    54. Aus der Praxis: Locks in etcd implementieren
    55. Ownership implementieren
    56. Aus der Praxis: Leases in etcd implementieren
    57. Parallele Datenverarbeitung
  9. Teil III: Batch-Verarbeitung
    1. 10 Work-Queue-Systeme
    2. Ein generisches Work-Queue-System
    3. Die Quell-Container-Schnittstelle
    4. Die Worker-Container-Schnittstelle
    5. Die Infrastruktur für die gemeinsame Work Queue
    6. Aus der Praxis: Einen Video-Thumbnailer implementieren
    7. Dynamisches Skalieren der Worker
    8. Das Multi-Worker-Muster
    9. 11 Ereignisgesteuerte Batch-Verarbeitung
    10. Muster für die ereignisgesteuerte Verarbeitung
    11. Copier
    12. Filter
    13. Splitter
    14. Sharder
    15. Merger
    16. Aus der Praxis: Einen ereignisgesteuerten Flow für das Registrieren neuer Benutzer bauen
    17. Publisher/Subscriber-Infrastruktur
    18. Aus der Praxis: Kafka deployen
    19. 12 Koordinierte Batch-Verarbeitung
    20. Join (oder Barrier-Synchronization)
    21. Reduce
    22. Aus der Praxis: Count
    23. Sum
    24. Histogramm
    25. Aus der Praxis: Eine Pipeline zum Taggen und Bearbeiten von Bildern
    26. 13 Zusammenfassung: Ein Neuanfang?
  10. Index
  11. Über den Autor
  12. Fußnoten

Product information

  • Title: Verteilte Systeme mit Kubernetes entwerfen
  • Author(s): Brendan Burns
  • Release date: September 2018
  • Publisher(s): dpunkt
  • ISBN: 9783960090885