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
- Cover
- Titel
- Impressum
- Inhalt
- Vorwort
-
1 Einführung
- Eine kurze Geschichte der System-Entwicklung
- Eine kurze Geschichte von Mustern in der Software-Entwicklung
- Formalisierung der algorithmischen Programmierung
- Muster für die objektorientierte Programmierung
- Der Aufstieg von Open-Source-Software
- Der Wert von Mustern, Praktiken und Komponenten
- Auf den Schultern von Riesen stehen
- Eine gemeinsame Sprache für Gespräche über unsere Praktiken
- Gemeinsame Komponenten für einfache Wiederverwendung
- Zusammenfassung
-
Teil I: Single-Node-Muster
- Motivation
- Zusammenfassung
- 2 Sidecar
- Ein Beispiel-Sidecar: HTTPS für einen alten Service
- Dynamische Konfiguration mit Sidecars
- Modulare Anwendungs-Container
- Aus der Praxis: Den topz-Container deployen
- Mit Sidecars eine einfache PaaS bauen
- Modularität und Wiederverwendbarkeit durch Sidecars
- Container parametrisieren
- Die API jedes Containers definieren
- Dokumentieren Sie Ihre Container
- Zusammenfassung
- 3 Ambassador
- Mit einem Ambassador einen Service per Sharding aufteilen
- Aus der Praxis: Einen Sharded Redis implementieren
- Einen Ambassador zum Service Brokering einsetzen
- Mit einem Ambassador experimentieren oder Requests splitten
- Aus der Praxis: 10%-Experimente umsetzen
- 4 Adapter
- Monitoring
- Aus der Praxis: Prometheus für das Monitoring einsetzen
- Logging
- Aus der Praxis: Verschiedene Logging-Formate mit fluentd normalisieren
- Einen Health-Monitor ergänzen
- Aus der Praxis: Ausführliches Health Monitoring für MySQL
-
Teil II: Serving-Muster
- Einführung in Microservices
- 5 Replizierte lastverteilte Services
- Zustandslose Services
- Readiness-Prüfungen für das Load Balancing
- Aus der Praxis: Einen replizierten Service in Kubernetes erstellen
- Services mit Session Tracking
- Replizierte Services auf Anwendungsebene
- Einziehen einer Caching-Schicht
- Ihren Cache deployen
- Aus der Praxis: Die Caching-Schicht deployen
- Die Cache-Schicht erweitern
- Rate Limiting und Denial-of-Service-Verteidigung
- SSL Termination
- Aus der Praxis: nginx und SSL Termination deployen
- Zusammenfassung
- 6 Sharded Services
- Sharded Caching
- Warum Sie einen Sharded Cache brauchen könnten
- Die Rolle des Cache für die System-Performance
- Replizierte Sharded Caches
- Aus der Praxis: Einen Ambassador und Memcache für einen Sharded Cache deployen
- Sharding-Funktionen
- Auswahl eines Schlüssels
- Konsistente Hashing-Funktionen
- Aus der Praxis: Einen konsistenten HTTP Sharding Proxy bauen
- Repliziertes Sharded Serving
- Hot Sharding Systems
- 7 Scatter/Gather
- Scatter/Gather mit Root-Verteilung
- Aus der Praxis: Verteilte Dokumentensuche
- Scatter/Gather mit Leaf Sharding
- Aus der Praxis: Sharded Dokumentensuche
- Die richtige Anzahl an Blättern wählen
- Scatter/Gather für mehr Zuverlässigkeit und bessere Skalierbarkeit replizieren
- 8 Funktionen und ereignisgesteuerte Verarbeitung
- Herausfinden, ob FaaS sinnvoll ist
- Die Vorteile von FaaS
- Die Herausforderungen von FaaS
- Der Bedarf für Hintergrundprozesse
- Der Bedarf für das Halten von Daten im Speicher
- Die Kosten einer dauerhaften Request-basierten Verarbeitung
- Muster für FaaS
- Das Decorator-Muster
- Aus der Praxis: Ein Request-Defaulting vor die Request-Verarbeitung schalten
- Umgang mit Ereignissen
- Aus der Praxis: Zwei-Faktor-Authentifizierung implementieren
- Ereignisbasierte Pipelines
- Aus der Praxis: Eine Pipeline für das Registrieren neuer Benutzer implementieren
- 9 Ownership Election
- Herausfinden, ob Sie überhaupt eine Master Election benötigen
- Grundlagen der Master Election
- Aus der Praxis: etcd deployen
- Locks implementieren
- Aus der Praxis: Locks in etcd implementieren
- Ownership implementieren
- Aus der Praxis: Leases in etcd implementieren
- Parallele Datenverarbeitung
-
Teil III: Batch-Verarbeitung
- 10 Work-Queue-Systeme
- Ein generisches Work-Queue-System
- Die Quell-Container-Schnittstelle
- Die Worker-Container-Schnittstelle
- Die Infrastruktur für die gemeinsame Work Queue
- Aus der Praxis: Einen Video-Thumbnailer implementieren
- Dynamisches Skalieren der Worker
- Das Multi-Worker-Muster
- 11 Ereignisgesteuerte Batch-Verarbeitung
- Muster für die ereignisgesteuerte Verarbeitung
- Copier
- Filter
- Splitter
- Sharder
- Merger
- Aus der Praxis: Einen ereignisgesteuerten Flow für das Registrieren neuer Benutzer bauen
- Publisher/Subscriber-Infrastruktur
- Aus der Praxis: Kafka deployen
- 12 Koordinierte Batch-Verarbeitung
- Join (oder Barrier-Synchronization)
- Reduce
- Aus der Praxis: Count
- Sum
- Histogramm
- Aus der Praxis: Eine Pipeline zum Taggen und Bearbeiten von Bildern
- 13 Zusammenfassung: Ein Neuanfang?
- Index
- Über den Autor
- Fußnoten
Product information
- Title: Verteilte Systeme mit Kubernetes entwerfen
- Author(s):
- Release date: September 2018
- Publisher(s): dpunkt
- ISBN: 9783960090885
You might also like
book
Versionsverwaltung mit Git, 2. Auflage
Von grundlegenden Funktionen über die Handhabung von Branches und Remote-Repositorys bis zu Tipps und Tricks für …
book
Docker
Softwareentwicklung und -Deployment verändert sich mit Hilfe von Containern/Docker grundlegend ("Revolution")+ Sehr fundierte Einführung, sehr gute …
book
Docker Praxiseinstieg
Docker-Images und -Container verwenden Container deployen und debuggen Einsatz von Tools: Docker Swarm, Kubernetes, Amazon EC2 …
book
Programmieren in TypeScript
Programmierer, die mit einer dynamisch typisierten Sprache arbeiten, wissen, wie schwer es ist, ein Projekt zu …