Giter VIP home page Giter VIP logo

kafka-nodejs-playground's Introduction

Kafka NodeJS Playground - Kata

Zalety Apache Kafka

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

warunek wstępny

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

uwagi i rozwiązania

  1. W każdym katalogu step[number] jest podkatalog sol który zawiera rozwiązania.
  2. Niektóre zadania wykorzystują bibliotekę ExpressJS.

agenda

day 1

  • 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

day 2

  • 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

day 3

  • 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

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.

Historia klientów w JS, KafkaJS freeze

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.

Migration guide

kafka-nodejs-playground's People

Contributors

johnykov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.