| Tytuł: | Apache Kafka - niezbędnik programisty |
| Kod: | kafka-java |
| Kategoria: | Architektura Java |
| Forma: | 50% wykłady / 50% warsztaty |
| Czas trwania: | 4 dni |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
W trakcie tego praktycznego warsztatu zapoznamy się z narzędziami i bibliotekami, które pozwolą programistom w efektywny sposób implementować oraz testować systemy wykorzystujące klaster Kafka.
Przedstawione zostaną innowacyjne sposoby implementacji, w których Kafka to nie tylko brokera wymiany wiadomości, to też narzędzie do trwałego zapisywania i odczytywania danych, ich agregacji oraz strumieniowania. Omówimy sposoby integracji danych z klastra z popularnymi bazami danych oraz sposoby łączenia ze sobą strumieni danych.
W części warsztatowej położymy nacisk na testowanie automatyczne wytworzonego kodu, zgodność z wzorcami projektowymi oraz dobrymi praktykami wytwarzania oprogramowania.
Szkolenie to niezbędnik programistyczny dla każdego dewelopera rozpoczynającego swoją przygodę z implementacją aplikacji posługujących się Kafka. Jest to zbiór najbardziej efektywnych praktyk zebranych na bazie doświadczenia ponad sześciu lat pracy z systemami wykorzystującymi Apache Kafka. Zadania programistyczne są opcjonalne i przeprowadzane w języku Java
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Architektura Apache Kafka- Wprowadzenie do komunikacji asynchronicznej
- Komunikacja w monolicie vs mikrousługi
- Przykłady zastosowań komunikacji asynchronicznej
- Systemy oparte o zdarzenia
- Komunikacja w monolicie vs mikrousługi
- Architektura Apache Kafka
- Wprowadzenie do podstawowych pojęć
- Topics, Partitions, Offsets
- Brokers
- Topics Replication
- Producers
- Consumers, Consumers Groups
- Offsets
- Acks
- Topics, Partitions, Offsets
- Kolejność wiadomości
- Replikacja
- Jak dobrać odpowiednią ilość partycji?
- Poziomy potwierdzenia dostarczenia wiadomości
- Co zapewnia Apache Kafka
- Skąd bierze się wydajność?
- Wprowadzenie do podstawowych pojęć
- Architektura Confluent Platform
- Kafka Streams
- Kafka Connect
- KSQL
- Rest Proxy
- Schema Registry
- Kafka Streams
- Kafka CLI
- Zarządzanie Topic’ami
- Wysyłanie wiadomości
- Odbieranie wiadomości
- Monitorowanie i zarządzanie Consumer Groups
- Zarządzanie Offset’ami
- Zarządzanie Topic’ami
- Natywny klient Java
- Kafka Producer
- Implementacja niestandardowego partycjonowania
- Serializacja wiadomości
- Idempotentność
- Implementacja niestandardowego partycjonowania
- Kafka Consumer
- Delivery semantics
- Deserializacja wiadomości
- Partition assignment strategies
- Static membership
- Implementacja cache w pamięci opartego o Kafka Consumer
- Delivery semantics
- Transakcje
- Jak działają transakcje?
- Jak dobrać parametr transaction.id?
- Do czego wykorzystać transakcje na Apache Kafka?
- Implementacja aplikacji biznesowej przetwarzającej wiadomości w sposób transakcyjny
- Jak działają transakcje?
- Jak skonfigurować system do bezstratnego dostarczania wiadomości?
- Kafka Producer
- Wprowadzenie do komunikacji asynchronicznej
-
Kafka Streams- Koncepcja zastosowania w ekosystemie Confluent
- Architektura aplikacji opartych o Kafka Streams
- Dualizm strumień-tablica
- Topiki kompaktowe
- Lokalna baza danych RocksDB
- Changelog topic
- Repartition topic
- Dualizm strumień-tablica
- Analiza topologii strumieni
- Reset tool
- Operacje bezstanowe
- Operacje stanowe
- Zapis stanu w KTable
- Zapis stanu w GlobalKTable
- Agregowanie danych
- Łączenie strumieni
- Agregacja danych w oknach czasowych
- Zapis stanu w KTable
- Odczytywanie lokalnego stanu systemu
- Interactive queries
- ReadOnlyKeyValueStore
- ReadOnlyWindowStore
- Standby replicas
- Interactive queries
- Transformers
- Przetwarzanie zgodnie z podejściem Stateful Record-By-Record
- Przetwarzanie zgodnie z podejściem Stateful Record-By-Record
- Exactly once processing
- Testowanie aplikacji opartych o Kafka Streams
- Testy jednostkowe z wykorzystaniem kafka-streams-test-utils
- Testy integracyjne z wykorzystaniem Testcontainers
- Testy jednostkowe z wykorzystaniem kafka-streams-test-utils
- Implementacja wzorców
- Saga
- Read-Process-Write
- Sortowanie i deduplikacja zdarzeń
- Saga
- Koncepcja zastosowania w ekosystemie Confluent
-
Wsparcie dla Apache Kafka w Spring Boot- Podstawowe operacje
- Wysyłka wiadomości
- KafkaTemplate vs. KafkaProducer
- RoutingKafkaTemplate
- ReplyingKafkaTemplate
- KafkaTemplate vs. KafkaProducer
- Odbiór wiadomości
- Wątki
- Walidacja wiadomości
- Zarządzanie potwierdzeniami
- Ponawianie
- Wysyłka odpowiedzi
- Wątki
- Transakcje
- Publikowanie transakcyjne
- Transakcje inicjowane przez odczyt wiadomości
- Zarządzanie transaction.id przez Spring
- Publikowanie transakcyjne
- Wysyłka wiadomości
- Prawidłowa konfiguracja aplikacji
- Zarządzanie błędami
- Serializacja i deserializacja
- Nagłówki
- Zarządzanie błędami
- Testowanie
- Przegląd bibliotek do testowania asynchronicznego
- JUnit - Awaitility
- Spock - PollingConditions
- JUnit - Awaitility
- Wykorzystanie mechanizmów Spring w testach
- Uruchamianie Kafka do testów z wykorzystaniem spring-kafka-test
- Uruchamianie Kafka do testów z wykorzystaniem Testcontainers
- Przegląd bibliotek do testowania asynchronicznego
- Implementacja aplikacji biznesowej z wykorzystaniem Spring Boot, Apache Kafka i relacyjnej bazy danych
- Modelowanie procesów biznesowych w podejściu asynchronicznym
- Implementacja mechanizmów zapewniających idempotentność
- Wpływ asynchroniczności na modelowanie REST API
- Różne poziomy spójności
- Implementacja wzorca Outbox
- Modelowanie procesów biznesowych w podejściu asynchronicznym
- Podstawowe operacje
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.