Jest to lepsze podejście w porównaniu do wysyłania zdarzeń przez HTTP, ponieważ:
- Umożliwia oddzielenie nadawcy i odbiorcy poprzez eventy (loose coupling). Ponieważ nie oczekujesz (ani nie potrzebujesz) natychmiastowej odpowiedzi = asychroniczna komunikacja.
- Jest trwały. Ponieważ eventy (wiadomości) Kafki nie są usuwane po użyciu, możesz odtworzyć te eventy, jeśli usługa wysyłania powiadomień nagle ulegnie awarii.
- Jest skalowalny. Możesz korzystać z eventów Kafki w wielu miejscach, nawet w różnych usługach lub interfejsach API
Lokalna maszyna z zainstalowanym oprogramowaniem:
- NodeJS minimum wersja >= 20
- docker
- docker-compose
- ulubione IDE
Przed szkoleniem proszę uruchomić:
- docker pull apache/kafka:3.7.0
- docker pull ghcr.io/aiven-open/karapace:3.13.0
po uruchomieniu sprawdzić czy w/w obrazy dockerowe zostały poprawnie ściągniete poleceniem
docker images
- W każdym katalogu
step[number]
jest podkatalogsol
który zawiera rozwiązania. - Niektóre zadania wykorzystują bibliotekę ExpressJS.
- czym jest KATA? Definicja poniżej
- historia klienta JS
- NodeJS KafkaJS list topic, create topic, producer. step1
- NodeJS KafkaJS consume step2
- NodeJS KafkaJS Transformer step3
- topic names conventions, partition per topic (keynote)
- multi-cluster setup step4
- wstęp do Avro (keynote)
- Avro + schema registry step5
- NodeJS KafkaJS Avro IDL step6
- kafka-avro-console-consumer example usage, requires
- Zaawansowane typy: AVRO IDL step7
- podsumowanie AVRO
- demo CP oraz control-center,
dco -f prev.docker-compose.yml up
- Kafka confluent cloud perf step8_1
- Kafka, express step8
- Kafka, nestjs step9
- NodeJS KafkaJS Transactions step10
- Zbyt wolny konsumer, który nie komituje offseta step11
- Outbox pattern step12
- extra step13
- [practise exam]
- [ankieta]
Kata Co sprawia, że sesja treningowa jest dobra? Potrzebujesz czasu bez przerw i prostej rzeczy, której chcesz spróbować. Musisz próbować tyle razy, ile potrzeba, i czuć się komfortowo, popełniając błędy. Za każdym razem musisz szukać informacji zwrotnej, aby móc pracować nad doskonaleniem. Nie należy wywierać presji: dlatego trudno jest ćwiczyć w środowisku projektowym. pomaga to zachować radość: rób małe kroki do przodu, kiedy tylko możesz. Wreszcie rozpoznasz sesję dobrych ćwiczeń, ponieważ wyjdziesz z niej wiedząc więcej, niż wtedy, gdy na nią wszedłeś.
Code Kata jest próbą przeniesienia tego elementu praktyki do tworzenia oprogramowania. Kata to ćwiczenie w karate, w którym powtarzasz jakąś formę wiele, wiele razy, wprowadzając niewielkie ulepszenia w każdym z nich. Intencja kodu kata jest podobna. Każde z nich jest krótkim ćwiczeniem (około 30 minut do godziny). Niektóre wymagają programowania i można je kodować na wiele różnych sposobów. Niektóre mają charakter otwarty i wymagają przemyślenia zagadnień stojących za programowaniem. Jest mało prawdopodobne, aby istniała jedna poprawna odpowiedź. Mniej więcej co tydzień dodaję nowe kata. Zainwestuj trochę czasu w swoje rzemiosło i wypróbuj je.
Pamiętaj, że celem kata nie jest uzyskanie poprawnej odpowiedzi. Chodzi o to, czego się uczysz po drodze. Celem jest praktyka, a nie rozwiązanie.
Trendy https://npmtrends.com/@confluentinc/kafka-javascript-vs-kafka-node-vs-kafkajs-vs-node-rdkafka
Według Looking for maintainers KafkaJS jest chwilowo zamrożonym projektem. Z moich doświadczeń dotychczas ten klient był bardziej niezawodny niż node-rdkafka. Ten ostatni działa tylko z określonymi, niewspieranym wersjami nodejs.
Na horyzoncie jednak pojawia się confluent-kafka-javascript ale jeszcze nie jest PROD ready.